C 博弈

链接: https://www.nowcoder.com/acm/contest/87/J
来源:牛客网

题目描述

OI 的生涯如此短暂,恐怕就要到了分别的时候了。
回想起自己的OI 生活,那一切的一切都历历在目。
仍然记得,在骄阳似火的夏天,机房内一群完全不懂编程的小白,围在黑板前,听学长不厌其烦的讲解。
仍然记得,在金凤飒爽的秋天,考完NOIP时那失望的表情,那下定决心努力补弱的意志。
仍然记得,在白雪皑皑的冬天,靠在机房暖气边,整理着一份又一份的笔记,修改了一道又一道题目。
仍然记得,那些来自五湖四海的朋友们,那一场又一场的比赛,那一次又一次的集训。
尽管依依不舍,尽管不愿分别,可是——终于,要告别了吗?
带着一颗热爱程序设计竞赛的心,祝愿自己能够与那个她共同考上理想的大学,祝大家能在这算法竞赛中,欣赏到美丽的风景,认识到志同道合的朋友们,达到自己想达到的高度,不断挑战自我,不断砥砺前行!
THE END —— Johnson
XHRlyb总喜欢找一些函数的零点。
一天,Cwbc给了XHRlyb一个函数,它是由n个二维平面上的点组成。
首先,Cwbc将这些点按照横坐标顺序 从小到大排序。
然后,Cwbc将这些点连接成一条简单的 折线(即点1连接点2,点2连接点3,......,点n-1连接点n)。
最后,Cwbc以点2为端点,作了一条经过点1的 射线;以点n-1为端点,作了一条经过点n的 射线
这样,这个函数就完成啦~
XHRlyb见到这个函数,就迫不及待的找起了零点,但她想请你帮忙检验一下零点的正误。
为了方便起见,她只想检查整数零点的正误。所以你需要 从小到大输出函数的 整数零点
聪明的你在仔细阅读题目后,一定可以顺利的解决这个问题!

输入描述:

第一行:一个整数n。
接下来n行:每行两个整数xi , yi。

输出描述:

将零点的数量记为cnt。
若cnt > 3 * 105,则:
第一行:一个整数-1。
否则:
第一行:一个整数cnt。
第二行:cnt个整数,表示整数零点的横坐标,用空格隔开(如果cnt为0,则第二行不必输出)
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
typedef long long ll;
const int maxn=1e5+10;

int dp[maxn][110];
int sum[maxn][110];


void init(){
    for(int k=2;k<=100;k++){
       for(int i=1;i<maxn;i++){
            dp[i][k]=(k*dp[i/k][k])%2+1;
            sum[i][k]=sum[i-1][k]+dp[i][k];
        }
    }
}
/*
思路是有的,只是没有仔细思考1,还有就是预处理,真是简直了,我感觉
有思路不就好了么,还是基础不好,如果基础好的话,
看到这样的数据范围,我们就应该想到要记忆化
可能当前我们的优化是最好的了,但是多组输入的话,我们是不是
还可以进行记忆话,感觉很难受啊,菜的难受
*/

int main()
{
    ll l,r,k;
    init();
    while(scanf("%lld %lld %lld",&l,&r,&k)==3){
        if(k==1){
            printf("Draw\n");
            continue;
        }
        int val=sum[r][k]-sum[l-1][k];
      //  printf("val:%d\n",val);
        if(val%2){
            printf("XHRlyb\n");
        }
        else{
            printf("Cwbc\n");
        }
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值