Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)
来源:互联网 发布:华山长空栈道知乎 编辑:程序博客网 时间:2024/05/15 16:40
A. Bear and Elections
题目不难,问最少经过多少次第一个元素自增其余元素自减使得第一个元素能严格大于其他所有的元素。关键是学会priority_queue的使用。代码如下:
#include<iostream>#include<algorithm>#include<queue>using namespace std;priority_queue<int> q;int main(){int n, a, x, i,ans=0;cin >> n >> a;for (i = 1; i < n; ++i){cin >> x;q.push(x);}int t = q.top();q.pop();while (a <= t) {t--;a++;ans++;q.push(t);t = q.top();q.pop();}cout << ans << endl;return 0;}
总结,在priority_queue中,对首的元素总是最大的,是一个自调节的过程,无论你怎么改变,总是能保证对首的元素最大。
B. Bear and Three Musketeers
涉及到图论找环的问题。题目意思是希望找到3个互相认识的“人”,而且这3个互相认识的“人”除了认识彼此之外认识的其他“人”的数量越少越好。如果能找到,则输出这3个人认识的除了这3人之外认识的其他人的最小数量,如果不存在则输出-1。举个例子,如果希望找到的3个人是1,2,3,则意味着1必须认识2和3,2也必须认识1和3,3也要必须认识1和2,同时要满足1,2,3除了认识彼此之外认识的人要尽量的少。
处理的方法是建立一个边集,边的两端连接着两个顶点。用一个数组表示每一个点的度数,表示这一个点与几个点连接,初始化为0表示开始的时候我们不知道这个点和谁连接。最后建立一个邻接数组表示点与点之间的连接关系,用来表示我前面所提到的“认识”。因为要输出一个最小的,因此做一个循环设置一个比较。代码如下(参考了别人的代码,非原创):
- #include<iostream>
- #include<algorithm>
- #define MAXN 4000
- #define inf 99999
- using namespace std;
- typedef struct
- {
- int x;
- int y;
- }Node;
- Node net[MAXN + 10];//边集
- int deg[MAXN + 10];//度数和
- bool matrix[MAXN + 10][MAXN + 10];//邻接矩阵
- int main()
- {
- int n, m,a,b,i,j;
- cin >> n >> m;
- memset(matrix, 0, sizeof matrix);
- memset(deg, 0, sizeof deg);
- for (i = 0; i<m; i++)
- {
- cin >> a >> b;
- net[i].x = a;
- net[i].y = b;
- deg[a]++;
- deg[b]++;
- matrix[a][b] = matrix[b][a] = 1;
- }
- int ans = inf;
- bool flag = false;//找环
- for (i = 0; i < m; i++)
- {
- int ax = net[i].x;
- int ay = net[i].y;
- for (j = 1; j <= n; j++)
- {
- if (matrix[ay][j])//某个点和其余点邻接
- {
- if (matrix[ax][j])
- {
- flag = true;
- int tmp = deg[ax] + deg[ay] + deg[j] - 6;
- ans = min(ans, tmp);
- }
- }
- }
- }
- if (flag)
- cout << ans << endl;
- else
- cout << -1 << endl;
- return 0;
- }
0 0
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)A
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) A 模拟
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) B 暴力
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) C 模拟
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) E DFS
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 1)A,B
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 1)
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) A. Bear and Elections(优先队列)
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)C. Bear and Poker(gcd模拟)
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) B. Bear and Three Musketeers(STL_暴力)
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)(574A,574B)
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)B Bear and Three Musketeers
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)C Bear and Poker
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)D Bear and Blocks
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) D 双向dp
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 1) B. Bear and Blocks dp
- MFC动态创建控件
- 虚拟存储器--虚拟地址与物理地址
- 图片或文章列表滚动效果
- jQuery Mobile动态刷新页面样式
- Andrew Ng Machine Learning 专题【Neural Networks】上
- Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)
- 【读书笔记】iOS-NSDictionary与NSArray的比较
- js获取某元素的class里面的css属性值代码(转)
- ./ ../
- java--for循环,一个分号的区别
- ORACLE分页查询SQL语法——最高效的分页
- request.getRemoteUser() 方法
- PMI指数
- 欢迎使用CSDN-markdown编辑器