兰道定理(竞赛图)

所谓兰道定理,就是兰道定下的道理

(逃)

解析

每条边被规定了方向的完全图叫做竞赛图
竞赛图中,设每个点的出度为uiu_iui
显然有:
∑ui=n×(n−1)2\sum u_i=\dfrac{n\times(n-1)}{2}ui=2n×(n1)
而兰道定理的内容是:
若n个点的出度序列升序排序后为sis_isi,那么其能构成竞赛图的充要条件是,对于任意的k属于[1,n],都有:
∑i=1ksi>=k×(k−1)2\sum_{i=1}^ks_i>=\dfrac{k\times(k-1)}{2}i=1ksi>=2k×(k1)

当且仅当k=n时,取等
必要性比较显然,现在的关键是充分性
兰道定理的证明类似于裴蜀定理,是一种构造的方法
先构造出一个竞赛图 TTT ,满足任意一点 i 都只对比自己编号小的点连边,设其出度为uiu_iui
显然,ui=i−1u_i=i-1ui=i1
然后考虑如下操作:

  1. 找到第一个位置,使得si>uis_i>u_isi>ui,设为 xxx

  2. 找到最靠后的 yyy ,满足 sx=sys_x=s_ysx=sy(xy可以相等)

  3. 找到第一个位置,使得 si<uis_i<u_isi<ui 设为 zzz

  4. 此时由于uz>sz>=sy>uyu_z > s_z>=s_y>u_yuz>sz>=sy>uy,可以得出,uz−uy>=2u_z-u_y>=2uzuy>=2,因此,一定存在第三个点p,使得z连向p且p连向y

  5. 调换(z,p)(z,p)(z,p)(y,p)(y,p)(y,p)的方向,此时只有uzu_zuz减小1,uyu_yuy增大1,而upu_pup不变

  6. 不断重复以上流程,直到uuusss完全相同

代码

CF850D:Tournament Construction

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+100;
const int mod=1e9+7;
double eps=1e-10;
#define ll long long
ll read(){ll x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();};while(isdigit(c)){x=x*10+c-'0';c=getchar();};return x*f;
}int n,m;int dp[35][100][2050],num[35][100][2050];
int a[35],pre[35];
int u[2005],s[2005],tot;
void find(int k,int x,int w){if(k==0) return;find(k-1,x-num[k][x][w],w-num[k][x][w]*a[k]);for(int i=1;i<=num[k][x][w];i++) s[++tot]=a[k];return;
}
bool jd[2050][2050];
inline void rev(int x,int y){if(jd[x][y]){u[x]--;u[y]++;}else{u[y]--;u[x]++;}jd[x][y]^=1;jd[y][x]^=1;
}
int main(){#ifndef ONLINE_JUDGE//freopen("a.in","r",stdin);//freopen("a.out","w",stdout);#endifn=read();for(int i=1;i<=n;i++) a[i]=read();sort(a+1,a+1+n);dp[0][0][0]=1;int k(0);for(k=1;;k++){for(int i=1;i<=n;i++){if(i>k) break;for(int w=k*(k-1)/2;w<=2000;w++){for(int j=1;j<=k&&j*a[i]<=w;j++){if(dp[i-1][k-j][w-j*a[i]]){num[i][k][w]=j;dp[i][k][w]=1;}}}}if(dp[n][k][k*(k-1)/2]) break;}//printf("ok k=%d\n",k);find(n,k,k*(k-1)/2);//for(int i=1;i<=k/2;i++) swap(s[i],s[k-i+1]);for(int i=1;i<=k;i++) u[i]=i-1;for(int i=1;i<=k;i++){for(int j=1;j<i;j++) jd[i][j]=1;}while(1){int x(0),y(0),z(0),p(0);//for(int i=1;i<=k;i++) printf("%d ",s[i]);putchar('\n');//for(int i=1;i<=k;i++) printf("%d ",u[i]);putchar('\n');for(int i=1;i<=k;i++){if(s[i]>u[i]){x=i;break;}}if(!x) break;y=x;for(int i=x+1;i<=k;i++) if(u[i]==u[x]) y=x;for(int i=k;i>=1;i--) if(u[i]>s[i]) z=i;//printf("x=%d y=%d z=%d\n",x,y,z);for(p=1;p<=k;p++){if(jd[z][p]&&!jd[y][p]){//printf("x=%d y=%d z=%d p=%d\n",x,y,z,p);rev(z,p);rev(y,p);break;}}}printf("%d\n",k);for(int i=1;i<=k;i++){for(int j=1;j<=k;j++){printf("%d",jd[i][j]);}putchar('\n');}return 0;
}
/*
2 3
7 4 9 9
1 2 8
3 1
4 2 4
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

test2 3-16 2021 模拟赛two

文章目录考试复盘染色问题芬威克树礼物考试复盘 先说T1T1T1 染色&#xff0c;以为是道数学题&#xff0c;推了有一会儿的公式&#xff0c;从颜色1到颜色m&#xff0c;感觉是dpdpdp转移 发现颜色重叠的方案可以转化为另外一种相邻不重叠的染色 但是推到颜色4的时候就发现自己…

ASP.NET Core 2.2 : 扒一扒新的Endpoint路由方案

ASP.NET Core 从2.2版本开始&#xff0c;采用了一个新的名为Endpoint的路由方案&#xff0c;与原来的方案在使用上差别不大&#xff0c;但从内部运行方式上来说&#xff0c;差别还是很大的。上一篇ASP.NET Core;图解路由(2.1 earler)详细介绍了原版路由方案的运行机制&#xff…

郊区春游题解

郊区春游 题意&#xff1a; 给定一张图&#xff0c;求从某个起点出发&#xff0c;经过其中R个点&#xff08;R个点给出&#xff09;的最短路径&#xff08;每个点经过且只经过一遍&#xff09; 题解&#xff1a; 首先我们用floyed处理出任意两点的距离 dp[i][j]表示当前状态…

2021牛客暑期多校训练营3A-Guess and lies【dp】

正题 题目链接:https://ac.nowcoder.com/acm/contest/11254/A 题目大意 现在有一个y∈[1,n]y\in[1,n]y∈[1,n]&#xff0c;BobBobBob每次可以选择问AliceAliceAlice是否y≥xy\geq xy≥x&#xff0c;AliceAliceAlice可以说一次谎。BobBobBob要在最少次数内确定yyy的值&#xf…

CF453C:Little Pony and Summer Sun Celebration(dfs、构造)

解析 比较巧妙的一道题 首先做一棵dfs生成树出来 尝试把它的欧拉序列作为答案 但是这样可能会有的地方不符合条件 如果x点的奇偶性不符合&#xff0c;就在序列中加入一个(x,fa) 同时改变x和fa的奇偶性 显然不会超过4*n 如果根需要改奇偶性怎么办&#xff1f; 最后一次回溯删掉…

开源中国 2018 新增开源软件最受欢迎 TOP 50

本周开源中国陆续公布了两个年度榜单&#xff0c;分别是国产新秀榜 TOP 30 和国产新增榜 TOP 50。由于两个榜单的数据来源都是国内开源项目&#xff0c;所以会有部分项目同时出现在两个榜单上。今天公布的这份榜单 —— 开源中国 2018 新增开源软件最受欢迎 TOP 50&#xff0c;…

简单环题解

简单环 题解: 题目求环的情况 如果我们直接枚举会有很多重复&#xff0c;为了避免重复&#xff0c;我们枚举起点&#xff0c;其他的点的序号都必须比起点大&#xff0c;也就是x->y&#xff0c;x一定小于y dp[i][j]表示的是以i的第一个点作为起点的链的数量&#xff0c;j是…

AT2339-[AGC011C]Squared Graph【黑白染色】

正题 题目链接:https://www.luogu.com.cn/problem/AT2339 题目大意 给出nnn个点mmm条边的一张无向图&#xff0c;然后有一张nnn\times nnn的图&#xff0c;每个点是一个二元组(a,b)(a,b)(a,b)。(a,b)(a,b)(a,b)和(c,d)(c,d)(c,d)连边当且仅当aaa和ccc有连边&#xff0c;bbb和…

[树链剖分]List wants to travel,Relief grain,hotel加强版,This world need more Zhu

文章目录B&#xff1a;Relief grainC&#xff1a;hotel加强版B&#xff1a;Relief grain 题目 将一段区间修改的标记变成差分&#xff0c;每次都是连续一段的dfndfndfn序修改 从小到大枚举dfndfndfn&#xff0c;在一段标记的最开头的dfndfndfn插入&#xff0c;最末尾的dfndf…

P4342:[IOI1998]Polygon(区间dp)

一道警钟一样的好题 解析 乍一看&#xff1a; “这不就能量项链嘛&#xff0c;这也蓝&#xff1f;” 然后就愉快的WA掉了… qwq 让我们回归本源&#xff0c;在什么时候可以动态规划&#xff1f; “局部最优解可以带动全局最优解的时候&#xff0c;我们可以使用动态规划算法”…

eShopOnContainers 知多少[8]:Ordering microservice

1. 引言Ordering microservice&#xff08;订单微服务&#xff09;就是处理订单的了&#xff0c;它与前面讲到的几个微服务相比要复杂的多。主要涉及以下业务逻辑&#xff1a;订单的创建、取消、支付、发货库存的扣减2. 架构模式如上图所示&#xff0c;该服务基于CQRS 和DDD来实…

P4229-某位歌姬的故事【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P4229 题目大意 求有多少个长度为nnn的序列aaa&#xff0c;满足∀i∈[1,n],ai∈[1,A]\forall i\in[1,n],a_i\in[1,A]∀i∈[1,n],ai​∈[1,A]&#xff0c;还有QQQ个限制形如 max⁡{aj}(j∈[li,ri])mi\max\{a_j\}(j\in[l_i,r_i…

Most Powerful

Most Powerful 题意&#xff1a; n个原子&#xff0c;当其中两个原子碰撞时&#xff0c;其中一个会消失&#xff0c;产生大量能量。现在知道每两个原子的碰撞表现&#xff0c;求出产生的能量总和的最大值 题解: 设dp[i]表示i状态下所获得的能量 i为二进制&#xff0c;第x位…

[树套树] 网络管理

A&#xff1a;[CTSC2008]网络管理 此题本来是平衡树板块的&#xff0c;但俺写的是树套树&#xff0c;平衡树会多个log 题目 查询第kkk大&#xff0c;天然主席树可以维护 就不用了平衡树二分&#xff0c;多个logloglog了 将树上(u,v)(u,v)(u,v)的路径转化为 uuu到根 vvv到根…

[翻译] Entity Framework Core in Action 关于这本书

Entityframework Core in action是 Jon P smith 所著的关于Entityframework Core 书籍。原版地址. 是除了官方文档外另一个学习EF Core的不错途径, 书中由浅入深的讲解的EF Core的相关知识。因为没有中文版,所以本人对其进行翻译。 预计每两天一篇更新 PS: 翻译难免限于本人水平…

CF573E-Bear and Bowling【dp,平衡树】

正题 题目链接:https://www.luogu.com.cn/problem/CF573E 题目大意 给出一个长度为nnn的序列aaa&#xff0c;求它的一个子序列bbb&#xff0c;要求最大化 ∑i1∣b∣bii\sum_{i1}^{|b|}b_i\times ii1∑∣b∣​bi​i 1≤n≤105,∣ai∣≤1071\leq n\leq 10^5,|a_i|\leq 10^71≤n…

NC51189 Mondriaan‘s Dream

NC51189 Mondriaan’s Dream 题意&#xff1a; n * m的矩阵&#xff0c;用1 * 2和2 * 1的砖快密铺&#xff0c;问多少种方法&#xff1a; 题解&#xff1a; 方法1&#xff1a; 我们现在规定砖头的竖放的上部分为1&#xff0c;砖头的横放或者是竖放的下部分为0 我们每两层进…

CF1408D:Searchlights

解析 滥用数据结构了属于是 本题的思路和题解还是差不多的 暴力枚举灯和海盗乱搞即可 但是最后对fif_ifi​的维护我使用了树状数组&#xff0c;凭空多了个log… 尽管树状数组跑的飞快 其实直接倒着扫一遍就行了 特殊数据下我这个算法是可以跑满n方log1e6的 过2000我在想peach…

[LCT动态树] [NOI2014]魔法森林,[ZJOI2018]历史

[NOI2014] 魔法森林 题目 按照aaa精灵从小到大排序 按顺序插入每一条边 加入第iii条边后的最小代价为a[i]a[i]a[i]加上从111到nnn的所有路径中最大bbb最小的路径代价 维护边权 把边在LCTLCTLCT中理解为点&#xff1f;——看题解代码其实就是建虚点 出现环时 选择最大的bb…

《小团队构建大网站:中小研发团队架构实践》送书活动结果公布

截止到1月25日24&#xff1a;00&#xff0c;本次送书活动共收到75位同学参与回复&#xff0c;本次很多同学在看到活动的书十年IT老兵带你通过案例学架构&#xff0c;附C#代码&#xff0c;自行就到各大网络商店上购买了书&#xff0c;据反馈这个书很不错.下面把Top 2的留言截图给…