Codeforces Gym 100342H Hard Test 构造
来源:互联网 发布:java中string转map 编辑:程序博客网 时间:2024/05/18 03:21
题目大意:
你需要造一个n个点m条边的有向图,使得所有点都能被1访问到,且dijkstra算法在该图上更新次数最多。为避免麻烦,你的构造方案应当使得每次更新后没有vis的有最小的dis的点只有一个(dis和vis都是dijkstra算法中的意义)。
胡扯:
这道题构造方法有很多种,我是用的最无脑的那一种
做法:
- 注意到,要使得dijkstra更新次数最多,那么就是使得每一条边被枚举到的时候都进行一次有效更新。
- 那么我们模拟dijkstra的过程
- 先给每个点附上一个初始的dis
- 边跑diskstra边建图
- 每次建一条使得枚举到的点的dis变小的边即可
- 如果不能建出正权边那就放弃,不建这条边
代码:
#include <bits/stdc++.h>using namespace std;const int maxn = 2000 + 5,INF=1e7;int d[maxn],g[maxn][maxn];bool hg[maxn][maxn],v[maxn];int n,m;void solve(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++)d[i]=i; d[1]=0; memset(v,0,sizeof v); for(int i=1;i<=n;i++) { int mark=-1,mindis=INF; for(int j=1;j<=n;++j) if(!v[j] && d[j] < mindis) { mindis=d[j]; mark=j; } v[mark]=1; for(int j=2;j<=n;++j){ if(mark==j || d[j]<=d[mark])continue; m--; d[j]--; hg[mark][j]=true; g[mark][j]=d[j]-d[mark]; //每次建一条使得使得d[j]-1的边 if(m==0)break; } if(m==0)break; } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(hg[i][j])printf("%d %d %d\n",i,j,g[i][j]);}//模拟dijkstra int main(){ freopen("test.in","r",stdin); freopen("test.out","w",stdout); solve(); return 0;}
0 0
- Codeforces Gym 100342H Hard Test 构造
- Gym 101190H Hard Refactoring
- codeforces GYM 100792H
- Codeforces Gym 101190 (NEERC 2016) H. Hard Refactoring (模拟 + 树状数组)
- 【Codeforces Gym】100162 H Temperature
- codeforces GYM 101431D(构造)
- Codeforces Gym 100623H Problem H. Holes
- CodeForces Gym 100989H Queue (A)
- Codeforces Gym 100962 H. Hans Zimmer
- [DP] Codeforces Gym 101002 H. Jewel Thief
- Codeforces Gym 101234H Split Game
- Codeforces Gym 101142 J. Java2016 (构造)
- Hard Refactoring Gym
- Codeforces Gym 100345H Settling the Universe Up Bitset+倒推
- [Codeforces Gym]100162 H - Temperature 状态压缩dp
- codeforces Gym 100500Problem H. ICPC Quest 简单DP
- Codeforces Gym 100733H Designation in the Mafia flyod
- Codeforces Gym 101164 H. Pub crawl (凸包)
- [leetcode]53 Ugly Number
- 制作Javascript弹出窗口技巧九则
- js 格式化时间日期函数小结
- (&a+1)
- iOS时间戳与标准时间转换
- Codeforces Gym 100342H Hard Test 构造
- H-Index Total Accepted: 3191 Total Submissions: 14098
- Java Code review 一些原则的原因探讨
- 对软件架构设计的一些总结和理解
- Linux下安装JDK
- SQLServer中获取特定表的所有列名
- Spring4整合Junit4 测试
- Git 使用 Sublime Text 为默认编辑器
- VC使用GSOAP调用C#WCF服务