【题目链接】:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2131

【题意】

【题解】



尽量让自己喜欢的队赢;

A内组内的比赛都让自己喜欢的队赢;

其他的队

对于a[i][j],先让i和j中分数小的队的分数赶上分数高的队的分数;

然后剩下的平均分;

对于剩下的人和B组的比赛,都让他们输就好;

而自己支持的队和B组的比赛都让他们赢;

这样自己支持的队的分数达到了最大化;

其他人的队的分数尽可能地小了;

这个时候再判断自己喜欢的队是不是最高分;



【Number Of WA】



1



【完整代码】

#include <bits/stdc++.h>
using namespace std;
#define rep1(i,x,y) for (int i = x;i <= y;i++)
#define LL long long const int N = 4e2+100; int n,k;
LL mark[N],cnt[N],a[N][N]; int main()
{
//freopen("D:\\rush.txt","r",stdin);
ios::sync_with_stdio(0);
int T;
cin >> T;
while (T--)
{
cin >> n >> k;
rep1(i,1,n)
cin >> mark[i];
rep1(i,1,n)
cin >> cnt[i];
rep1(i,1,n)
rep1(j,1,n)
{
cin >>a[i][j];
}
rep1(i,1,n)
{
mark[k]+=a[k][i];
cnt[k]-=a[k][i];
a[k][i] = a[i][k] = 0;
}
mark[k]+=cnt[k];cnt[k] = 0;
rep1(i,1,n-1)
rep1(j,i+1,n)
if (a[i][j])
{
if (mark[i]<mark[j])
{
mark[i]+=min(mark[j]-mark[i],a[i][j]);
a[i][j]-=min(mark[j]-mark[i],a[i][j]);
}
else
{
mark[j]+=min(mark[i]-mark[j],a[i][j]);
a[i][j]-=min(mark[i]-mark[j],a[i][j]);
}
mark[i]+=a[i][j]/2;
mark[j]+=a[i][j]-a[i][j]/2;
}
bool fi = false;
rep1(i,1,n)
if (mark[i]>mark[k])
fi = true;
if (fi)
puts("No");
else
puts("Yes");
}
return 0;
}

最新文章

  1. DBUtils
  2. iOS学习之下拉刷新、上拉加载
  3. 图像的 SNR 和 PSNR 的计算
  4. WinJs项目介绍
  5. iOS事件:触摸事件.运动事件.远程控制事件
  6. 内存泄露(OOM)现象及举例
  7. Ext.QuickTips.init();
  8. websocket介绍
  9. Python学习(一):编写购物车
  10. SQLite 附加数据库(http://www.w3cschool.cc/sqlite/sqlite-attach-database.html)
  11. DAY 23 面向对象(二)
  12. vue---canvas实现二维码和图片合成的海报
  13. matplotlib 坑
  14. docker安装radis
  15. 【转】linux 查看进程启动路径
  16. EventBus 源码学习
  17. 常用的SQL调优
  18. ElasticSearch 2 (25) - 语言处理系列之同义词
  19. python的面向对象-实例(对象)的相关知识、实例化
  20. 转:nginx基础概念(connection)

热门文章

  1. FileZilla文件下载的目录
  2. 新版chrome调整开发者工具位置方式改变
  3. 自定义Git(转载)
  4. Frequent values(线段树+离散化)
  5. robotframework - 介绍&amp;应用
  6. python自动化测试学习笔记-6redis应用
  7. CTSC+APIO+THUACM游记
  8. html表单——使用frameset写一个导航栏效果
  9. vmware workstation 14 黑屏处理方法
  10. Combox两级联动会经常出现的错误