Codeforces Round #201 (Div. 2) 两道签到题(B, C)
2013-09-24 15:01
253 查看
这篇文章只是写给自己的,所有菜鸟老鸟都请无视
这是上星期五晚上的比赛
到现在才发两道让我窝火的水题(B, C)╮(╯▽╰)╭其实是被狠狠的打击了,本来都应该写出来的
首先是B - Fixed Points
思维不严密的我首先就忽略了所有序号上的值与序号一样的情况,坑爹的是pretest居然让我过,妈的干嘛不让我快活地挂掉
错误代码
比赛结束后然后改了一下就正确了哭
然后更无语的是C题
这道题我连题目都没读懂要是读懂肯定能过
给你一些不同的数字,你选两个,把他们的差加入这对数字(前提是差不存在这堆数字中,如果存在那就不能选这两个数字,而且差后这两个数字不会被移去)
思路:求出公约数,所有其他数都能通过最大数和公约数得到 所以游戏次数 = (最大数 / 公约数) - (一开始给出的数字个数)
真不知道当时在想什么我去,各种错误理解
后来看懂了拍了就过了
后面两道dp现在还没搞懂
这是上星期五晚上的比赛
到现在才发两道让我窝火的水题(B, C)╮(╯▽╰)╭其实是被狠狠的打击了,本来都应该写出来的
首先是B - Fixed Points
思维不严密的我首先就忽略了所有序号上的值与序号一样的情况,坑爹的是pretest居然让我过,妈的干嘛不让我快活地挂掉
错误代码
#include <cstdio> #define MAX 100010 int d[MAX]; int main() { int ans = 0; bool flag = true; bool flag_two = false; int n; scanf("%d", &n); for(int i = 0; i < n; i++) { scanf("%d", d + i); if(d[i] >= n) {flag = false; break;} if(d[i] == i) ans++; else if(d[i] < i && d[d[i]] == i) flag_two = true; } if(!flag) printf("%d", 0); else { if(flag_two) { ans += 2; printf("%d", ans); } else { ans++; printf("%d", ans); } } }
比赛结束后然后改了一下就正确了哭
#include <cstdio> #define MAX 100010 int d[MAX]; int main() { int ans = 0; bool flag = true; bool flag_two = false; bool flag_one = true; int n; scanf("%d", &n); for(int i = 0; i < n; i++) { scanf("%d", d + i); if(d[i] >= n) {flag = false; break;} if(d[i] == i) ans++; else if(d[i] < i && d[d[i]] == i) flag_two = true; if(d[i] != i) flag_one = false; } if(!flag) printf("%d", 0); else { if(flag_two) { ans += 2; printf("%d", ans); } else if(flag_one) { printf("%d", ans); } else { ans++; printf("%d", ans); } } }
然后更无语的是C题
这道题我连题目都没读懂要是读懂肯定能过
给你一些不同的数字,你选两个,把他们的差加入这对数字(前提是差不存在这堆数字中,如果存在那就不能选这两个数字,而且差后这两个数字不会被移去)
思路:求出公约数,所有其他数都能通过最大数和公约数得到 所以游戏次数 = (最大数 / 公约数) - (一开始给出的数字个数)
真不知道当时在想什么我去,各种错误理解
后来看懂了拍了就过了
#include <cstdio> int a[120]; int gcd(int, int); int main() { int n; scanf("%d", &n);scanf("%d", &a[0]); int max = a[0]; int t = a[0]; for(int i = 1; i < n; i++) { scanf("%d", &a[i]); t = gcd(t, a[i]); if(a[i] > max) max = a[i]; } int sum = max / t - n; if(sum % 2) printf("Alice"); else printf("Bob"); } int gcd(int a, int b) { if(b == 0) return a; else return gcd(b, a % b); }
后面两道dp现在还没搞懂
相关文章推荐
- CF 355 div2 C, D 题解 【很好的两道脑洞题】
- Codeforces Round #430 (Div. 2) 签到题
- 膜拜了武大Eyelids大神的BLOG后,补得 Codeforces Round #226 (Div. 2)两道题。。。
- 一个很好的DIV层显示控件
- CSS:DIV未被撑开(如何修正DIV float之后导致的外部容器不能撑开)
- codeforces 166 Div2 A
- codeforces round231 DIV2
- jquery实现div上下移动
- TopCoder SRM665 Div2 A
- DIV设置最小高度
- 拖动浮层(div等任何标签)
- Jquery:怎样让子窗体的div显示在父窗体之上
- CSS+DIV之盒子模型
- Div上下居中
- ie浏览器的html 前的doc 声明前不能放其它东西,要不会出现div错位
- 两个DIV放在同一行
- Codeforces Round #231 (Div. 2)
- codeforces round 201 div2解题报告
- css 关于ul在div里居中且平铺的问题
- 在空白处点击,实现隐藏div(下拉菜单或其它弹框)的方法