[Wc2007]剪刀石头布
[Wc2007]剪刀石头布
http://www.lydsy.com/JudgeOnline/problem.php?id=2597
Time Limit: 20 Sec Memory Limit: 128 MBSec Special Judge
Description
Input
Output
Sample Input
0 1 2
0 0 2
2 2 0
Sample Output
0 1 0
0 0 1
1 0 0
#include<queue>
#include<cstdio>
#include<cstring>
#define N 5500
#define M 50000
using namespace std;
int win[],cnt;
int src,decc;
int front[N],nxt[M],to[M],tot=,from[M];
int cost[M],cap[M],pre[N];
int dis[N],ans[][];
bool v[N];
queue<int>q;
void add(int u,int v,int w,int val)
{
to[++tot]=v; nxt[tot]=front[u]; front[u]=tot; cap[tot]=w; cost[tot]=val; from[tot]=u;
to[++tot]=u; nxt[tot]=front[v]; front[v]=tot; cap[tot]=; cost[tot]=-val; from[tot]=v;
}
bool spfa()
{
memset(dis,,sizeof(dis));
memset(v,,sizeof(v));
dis[src]=; q.push(src); v[src]=true;
int now;
while(!q.empty())
{
now=q.front();
q.pop(); v[now]=false;
for(int i=front[now];i;i=nxt[i])
{
if(cap[i]>&&dis[to[i]]>dis[now]+cost[i])
{
dis[to[i]]=dis[now]+cost[i];
pre[to[i]]=i;
if(!v[to[i]])
{
v[to[i]]=true;
q.push(to[i]);
}
}
}
}
return dis[decc]<2e9;
}
int main()
{
int n,x;
scanf("%d",&n);
cnt=n+;decc=n+;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
scanf("%d",&x);
if(j>=i) continue;
if(!x)
{
win[j]++;
ans[j][i]=;
cnt++;
add(src,cnt,,);
add(cnt,j,,);
}
else if(x==)
{
win[i]++;
ans[i][j]=;
cnt++;
add(src,cnt,,);
add(cnt,i,,);
}
else
{
cnt++;
add(src,cnt,,);
add(cnt,i,,);
add(cnt,j,,);
}
}
for(int i=;i<=n;i++)
{
for(int j=;j<=win[i];j++) add(i,decc,,);
for(int j=win[i]+;j<n;j++) add(i,decc,,j-);
}
int tmp=;
while(spfa())
{
tmp+=dis[decc];
for(int i=pre[decc];i;i=pre[from[i]])
{
cap[i]--; cap[i^]++;
}
}
for(int i=front[src];i;i=nxt[i])
{
int j1=front[to[i]],j2=nxt[j1];
if(cap[j1]) ans[to[j2]][to[j1]]=;
else ans[to[j1]][to[j2]]=;
}
int sum=n*(n-)*(n-)/;
for(int i=;i<=n;i++)
sum-=win[i]*(win[i]-)/;
printf("%d\n",sum-tmp);
for(int i=;i<=n;i++)
{
for(int j=;j<n;j++)
printf("%d ",ans[i][j]);
printf("\n");
}
}
错误:一边spfa一边更新答案
原因:费用流也有退流
[Wc2007]剪刀石头布的更多相关文章
- 2597: [Wc2007]剪刀石头布
2597: [Wc2007]剪刀石头布 链接 分析: 费用流. 首先转化一下问题,整张图最优的情况是存在$C_n^3$个,即任意3个都行,然后考虑去掉最少不满足的三元环. 如果u赢了v,u向v连一条边 ...
- [Wc2007]剪刀石头布[补集转化+拆边]
2597: [Wc2007]剪刀石头布 Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1157 Solved: ...
- 【BZOJ2597】[Wc2007]剪刀石头布 最小费用流
[BZOJ2597][Wc2007]剪刀石头布 Description 在一些一对一游戏的比赛(如下棋.乒乓球和羽毛球的单打)中,我们经常会遇到A胜过B,B胜过C而C又胜过A的有趣情况,不妨形象的称之 ...
- [bzoj2597][Wc2007]剪刀石头布_费用流
[Wc2007]剪刀石头布 题目大意:https://www.lydsy.com/JudgeOnline/problem.php?id=2597 题解: 发现直接求三元环不好求,我们考虑任选三个点不是 ...
- BZOJ2597 [Wc2007]剪刀石头布(最小费用最大流)
题目大概是说n个人两两进行比赛,问如何安排几场比赛的输赢使得A胜B,B胜C,C胜A这种剪刀石头布的三元组最多. 这题好神. 首先,三元组总共有$C_n^3$个 然后考虑最小化不满足剪刀石头布条件的三元 ...
- bzoj2597: [Wc2007]剪刀石头布
Description 在一些一对一游戏的比赛(如下棋.乒乓球和羽毛球的单打)中,我们经常会遇到A胜过B,B胜过C而C又胜过A的有趣情况,不妨形象的称之为剪刀石头布情况.有的时候,无聊的人们会津津乐道 ...
- BZOJ2597 WC2007剪刀石头布(费用流)
考虑使非剪刀石头布情况尽量少.设第i个人赢了xi场,那么以i作为赢家的非剪刀石头布情况就为xi(xi-1)/2种.那么使Σxi(xi-1)/2尽量小即可. 考虑网络流.将比赛建成一排点,人建成一排点, ...
- bzoj 2597 [Wc2007]剪刀石头布——费用流
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2597 三个人之间的关系,除了“剪刀石头布”,就是有一个人赢了2局:所以考虑算补集,则每个人对 ...
- 【bzoj2597】[Wc2007]剪刀石头布 动态加边费用流
题目描述 在一些一对一游戏的比赛(如下棋.乒乓球和羽毛球的单打)中,我们经常会遇到A胜过B,B胜过C而C又胜过A的有趣情况,不妨形象的称之为剪刀石头布情况.有的时候,无聊的人们会津津乐道于统计有多少这 ...
随机推荐
- ASP.NET MVC 4 内容映射
文章:ASP.NET MVC 4 内容映射 地址:https://msdn.microsoft.com/zh-cn/library/gg416514(v=vs.108).aspx 模型-视图-控制器 ...
- Google Professional Data Engineer(PDE)考试
在国内参加PDE考试的人比较少,导致资料也很少.我在19年1月30号去上海参加PDE考试,参加前也是完全没底,因为时间短资料少,但幸运的是顺利通过了.回过头来看,其中有些技巧和重点,在此做一些总结,希 ...
- 读着读着《构建之法》(Build To Win) 越精神的白雪儿的思考
哲学家的宗旨是:我思,故我在 科学家的宗旨是:我发现,故我在 工程师的宗旨是:我构建,故我在 ——<工程学--无尽的前沿> 序言:珍惜角色“人”,注重实践“物” <构建之法>, ...
- session,cookie
简单: cookie可以由客户端,服务端产生,保存在客户端,客户端可以更改cookie中的内容 session只能在服务端产生,保存在服务端,会产生一个session_id,一个域下,只有一个id,这 ...
- java 基础 --File
1, 创建文件 File file = new File(path); file.createNewFile(); //如果路径不存在,会抛异常 file.mkdir();//如果路径不存在,返回fa ...
- excel表中判断A列与B列内容是否相同,相同的话在C列按条件输出!
判断两列数据是否相同,有以下几个函数判断(做笔记于此,方便以后查找): 1.=IF(AND(A4=B4),"相同","") 在C列输出相同字符 2.=IF(A1 ...
- Linux服务器开启tomcat的gc日志
压力测试,为了能监控长期对gc的变化的情况,那么就需要在tomcat中进行配置相关的gc输入日志,以便后续来对gc中进行分析 工具 :linux+tomcat 1.进入到了tomcat的bin的目录下 ...
- 【Quartz.NET】Quartz.NET 入门
概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了 ...
- (转)Spring用代码来读取properties文件
转至http://www.cnblogs.com/Gyoung/p/5507063.html 我们都知道,Spring可以@Value的方式读取properties中的值,只需要在配置文件中配置org ...
- [您有新的未分配科技点]博弈论入门:被博弈论支配的恐惧(Nim游戏,SG函数)
今天初步学习了一下博弈论……感觉真的是好精妙啊……希望这篇博客可以帮助到和我一样刚学习博弈论的同学们. 博弈论,又被称为对策论,被用于考虑游戏中个体的预测行为和实际行为,并研究他们的应用策略.(其实这 ...