BZOJ 洛谷 \(Description\) 给定一张部分边方向已确定的竞赛图.你需要给剩下的边确定方向,使得图中的三元环数量最多. \(n\leq100\). \(Solution\) 这种选择之间有影响,而且\(n\)很小的题考虑网络流啊. 最理想的情况能得到的三元环个数是\(C_n^3\)个.我们考虑怎样会使三元环个数减少. 如果三个点之间不成三元环,那么一定是某个点入度为\(2\),某个点出度为\(2\),另一个点入度出度都为\(1\). 不妨只考虑入度.如果一个点入度为\(2\),那…
比较有思维含量的一道题 题意:给混合完全图定向(定向为竞赛图)使得有最多的三元环 三元环条件要求比较高,还不容易分开处理. 正难则反 考虑,什么情况下,三元组不是三元环 一定是一个点有2个入度,一个点有2个出度,另一个点一个入度,一个出度 也就是说,每存在一个>=2入度的点,那么会减少一些三元环 进而考虑,如果一个点有d个入度,那么减少的三元环其实是:C(d,2),即,包括它自己,再包括任意两个指向它的点(这里,a指向b,代表a能赢b),构成的三元组都不是三元环 考虑每个点作为某些个非法三元组的…
传送门 解题思路 考虑全集-不能构成三元环的个数.如果三个点不能构成三元环,一定有一个点的入度为\(2\),继续扩展,如果一个点的度数为\(3\),则会失去3个三元环.对于一个点来说,它所产生的不能构成三元环的贡献为\(C (deg[x],2)\),而度数每增加\(1\),对于答案的影响就是\(C(deg[x]+1,2)-C(deg[x],2)=deg[x]\),然后就可以建图了.考虑把边当做点,对于一条未确定的边来说,它只能对两个节点中的一个产生\(1\)个度数的贡献,所以让每个边向点连流量为…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2597 三个人之间的关系,除了“剪刀石头布”,就是有一个人赢了2局:所以考虑算补集,则每个人对答案的贡献是 \( -C_{f[ i ]}^{2} = \frac{f[ i ]*(f[ i ]-1)}{2}\) ,其中 f[ i ] 表示这个人赢的局数. 所以一个人多赢了一局,对答案的贡献是 -f[ i ] :再多赢一局,就是 -( f[ i ] + 1 ) ……只要每个人向汇点连足够的边,其…
[Wc2007]剪刀石头布 题目大意:https://www.lydsy.com/JudgeOnline/problem.php?id=2597 题解: 发现直接求三元环不好求,我们考虑任选三个点不是三元环的个数. 这样的话,必定是有一个点被其余两个点指,我们就根据这个来求. 又发现,最后的答案之和所有点的度数有关. 就是,$\sum C_{d_i}^{2}$. 紧接着,因为度数和是一定的.而且已经有了一些边. 现在就是有固定的度数可以分配,每个点有一个分配上限,怎么分配最少? 发现一个事,就是…
题目链接 BZOJ2597 题解 orz思维差 既然是一张竞赛图,我们选出任意三个点都可能成环 总方案数为 \[{n \choose 3}\] 如果三个点不成环,会发现它们的度数是确定的,入度分别为\(2,1,0\),出度为\(0,1,2\) 所以一个点的任意两个入度,都会对答案产生一个负的贡献 所以三元环数量为 \[{n \choose 3} - \sum\limits_{i = 1}^{n} {inde[i] \choose 2}\] 我们要最大化三元环数目,就要最小化\(\sum\limi…
传送门 不得不说这思路真是太妙了 考虑能构成三元组很难,那我们考虑不能构成三元组的情况是怎么样 就是说一个三元组$(a,b,c)$,其中$a$赢两场,$b$赢一场,$c$没有赢 所以如果第$i$个人赢了$w_i$场,那么总共的不能构成的三元组就是$\sum_i{w_i*(w_i-1)}{2}$ 最大化满足的数量,就是最小化不满足的数量,就是最小化上面那个式子 那么我们考虑构建网络流 建源汇 对第$i$个人,从它向汇点连容量为$n$的边 对于每一对$i,j$之间的比赛建一个点$C_{i,j}$,如…
传送门 考虑竞赛图三元环计数,设第\(i\)个点的入度为\(d_i\),根据容斥,答案为\(C_n^3 - \sum C_{d_i}^2\) 所以我们需要最小化\(\sum C_{d_i}^2\) 考虑将\(C_{d_i}^2\)差分,然后通过费用流解决 下面\((a,b)\)边表示流量为\(a\).费用为\(b\)的边 建图: 每一场比赛和每一个人都建一个点 \(S\)向每一场比赛连\((1,0)\)边 每一场比赛若不确定结果则向两个参与者连\((1,0)\)边,如果胜者确定则只向胜者连\((…
题目大概是说n个人两两进行比赛,问如何安排几场比赛的输赢使得A胜B,B胜C,C胜A这种剪刀石头布的三元组最多. 这题好神. 首先,三元组总共有$C_n^3$个 然后考虑最小化不满足剪刀石头布条件的三元组个数,而要求的结果就是总数-这个不满足的个数了: 对于三个人构不成剪刀石头布现象,当且仅当,其中一个人赢了其他两个人 而由于这是完全图,如果一个人赢了$x_i$场那么包含这个人且这个人赢的次数最多的不满足剪刀石头布现象的三元组就有$C_{x_i}^2$个 所以目的就是最小化$\sum C_{x_i…
考虑使非剪刀石头布情况尽量少.设第i个人赢了xi场,那么以i作为赢家的非剪刀石头布情况就为xi(xi-1)/2种.那么使Σxi(xi-1)/2尽量小即可. 考虑网络流.将比赛建成一排点,人建成一排点,每场未确定比赛向比赛双方连边,确定比赛向赢者连边,这样就是一种合法的比赛方案了. 在此基础上控制代价最小.由于每多赢一场非剪刀石头布情况的增量就更大,将边拆开费用设为增量即可. #include<iostream> #include<cstdio> #include<cmath&…