Codeforces Round #201 (Div. 2) 两道签到题(B, C)

来源:互联网 发布:淘宝个人申请企业店铺 编辑:程序博客网 时间:2024/05/16 05:26

这篇文章只是写给自己的,所有菜鸟老鸟都请无视

这是上星期五晚上的比赛

到现在才发两道让我窝火的水题(B, C)╮(╯▽╰)╭其实是被狠狠的打击了,本来都应该写出来的

首先是B - Fixed Points

思维不严密的我首先就忽略了所有序号上的值与序号一样的情况,坑爹的是pretest居然让我过,妈的干嘛不让我快活地挂掉哭

错误代码

#include <cstdio>#define MAX 100010int 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 100010int 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现在还没搞懂哭

原创粉丝点击