WC2007 剪刀石頭布

2022-06-03 10:30:18 字數 1058 閱讀 7082

正著求不太好求,,但是不是剪刀石頭布的又很好表示:三個人中恰好有乙個人贏了兩場。 所以我們考慮讓這種三元組數量最少使得剪刀石頭布最多。

考慮乙個人如果贏了i場,那麼他對 非剪刀石頭布的三元組的貢獻是 -> i(i-1)/2  ,也就是他和任意兩個被他擊敗的人都可以組成三元組。並且每個人的貢獻都是獨立的,不會有重複(因為乙個非法三元組只可能有乙個人是贏兩局的)。

所以我們就可以用類似 平方費用 的最小費用流  求解此題了。

#include#define ll long long

#define pb push_back

using namespace std;

const int maxn=11005;

const int inf=1<<30;

vectorg[maxn];

struct linesl[maxn*23];

int s,t,t=-1,d[maxn],a[maxn],p[maxn];

int g[105][105],id[105][105],cnt;

int n,m,ans,awin[105];

bool iq[maxn];

inline void add(int from,int to,int cap,int cost),g[from].pb(t);

l[++t]=(lines),g[to].pb(t);

}inline bool spfa()

} iq[x]=0;

} if(d[t]==d[t+1]) return 0;

ans-=a[t]*d[t];

int now=t,pre;

while(now!=s)

return 1;

}inline void mfmc()

int main()}}

printf("%d\n",ans);

for(int i=1;i<=n;i++)

return 0;

}

Wc2007 剪刀石頭布

題目描述 bzluogu 題解 最小費用流。對於三支隊伍,勝負情況只有 2 種。一種是形成三元環,另一種是 x 贏兩場,y 贏一場,z 沒贏過。所以我們統計一下另一種最少有多少種就好了。最後答案就是 c 3 n k 對於乙個隊伍 x 若其勝場數為 w x 則會造成的負貢獻為 c 2 不會搞?作差啊。...

WC2007 剪刀石頭布 Solution

給一張競賽圖,圖中還有一些邊沒有定向,現在要把它們重新定向,要求重定向之後三元環盡量多。直接考慮不可取,逆向思維。算出極限情況可能出現三元環的個數,那麼就是n n 1 n 2 6 dfrac 6n n 1 n 2 接下來考慮什麼情況會拆毀三元環。考慮乙個點的負場情況來判斷少了多少三元環。如果乙個點負...

Wc2007 剪刀石頭布(費用流)

time limit 20 sec memory limit 128 mb sec special judge 在一些一對一遊戲的比賽 如下棋 桌球和羽毛球的單打 中,我們經常會遇到a勝過b,b勝過c而c又勝過a的有趣情況,不妨形象的稱之為剪刀石頭布情況。有的時候,無聊的人們會津津樂道於統計有多少這...