A:Tokitsukaze and Enhancement

当时看错条件了。。以为A>C>B>D。就胡写了判断条件。

 #include<bits/stdc++.h>
using namespace std; bool work(int a,int b) {
if(a==-) return false;
if(b==-) return true;
if(a==&&(b==||b==||b==)) return true;
if(a==&&(b==||b==)) return true;
if(a==&&b==) return true;
return false;
}
map<int,char> mp;
int main() {
mp[]='A';
mp[]='C';
mp[]='B';
mp[]='D';
int x;
scanf("%d",&x);
int ans=-,pos=-;
char strans;
for(int i=;i<=;i++) {
int tmp=(x+i)%;
if(work(tmp,ans)) {
ans=tmp;
pos=i;
strans=mp[tmp];
}
}
printf("%d %c",pos,strans);
}

胡搞

看了题解,感觉还是思考太少。

根据余数,取最好的即可。

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+; int main() {
int x;
scanf("%d",&x);
x%=;
if(x==) printf("%d %c\n",,'A');
else if(x==) printf("%d %c\n",,'B');
else if(x==) printf("%d %c\n",,'A');
else printf("%d %c\n",,'A');
}

B:Tokitsukaze and Mahjong

数字对应放到s,m,p组里,然后暴力找胜利的最少添加数。

 #include<bits/stdc++.h>
using namespace std; string s1,s2,s3; vector<int> t[];
int id(char c) {
if(c=='s') return ;
if(c=='m') return ;
if(c=='p') return ;
} int a[]; int main() {
cin>>s1>>s2>>s3;
int id1,id2,id3;
id1=id(s1[]);
id2=id(s2[]);
id3=id(s3[]);
t[id1].push_back(s1[]-'');
t[id2].push_back(s2[]-'');
t[id3].push_back(s3[]-'');
int ans=;
// for(int i=0;i<t[1].size();i++) printf("%d ",t[1][i]);
for(int i=;i<=;i++) {
memset(a,,sizeof(a));
for(int j=;j<t[i].size();j++) {
a[t[i][j]]++;
}
for(int j=;j<=;j++) {
//printf("%d\n",a[j]);
ans=min(ans,-a[j]);
}
int cnt;
for(int j=;j<=;j++) {
cnt=;
for(int k=j;k<=j+&&k<=;k++) {
if(a[k]>) cnt++;
}
//printf("%d**\n",cnt);
ans=min(ans,-cnt);
}
}
printf("%d\n",ans); }

C:Tokitsukaze and Discard Items

删除的数字是递增的,处理出当前要删除数字所在块的最后一个数字,然后删除,直到全部删除。

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+; ll n,m,k,a[maxn];
int main() {
scanf("%lld%lld%lld",&n,&m,&k);
for(int i=;i<=m;i++) scanf("%lld",&a[i]);
int sum=; //删除总数
int ans=;
int now=;
while(now<=m) {
// 没想到
ll r=((a[now]-sum-)/k+)*k+sum;
while(now<=m&&a[now]<=r) {
sum++;
now++;
}
ans++;
}
printf("%d\n",ans);
}

D:Tokitsukaze, CSL and Stone Game

博弈果断一点不会。分析:

首先判断先手必败的条件

1、有三堆及以上数量相等的石头,即  x  x  x

2、有两对及以上两堆数量相等的石头,即  x x  y y

3、有两堆及以上的空堆 ,即 0  0  0

4、有相等的堆且存在数量减一的堆,即   x  x  x-1

除了以上情况,最后会变成这样的状态 (先手必胜)

0   1   2  3  ……   n-1

所以判断形成这样的步数的奇偶即可。

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+; int n,a[maxn];
map<int,int> mp; int main() {
scanf("%d",&n);
int ok=;
for(int i=;i<=n;i++) {
scanf("%d",&a[i]);
mp[a[i]]++;
ok&=(mp[a[i]]<=); // x x x
}
int cnt=;
map<int,int>::iterator it;
for(it=mp.begin();it!=mp.end();it++) {
if(it->second>=) cnt++; // x x y y
}
ok&=(cnt<=);
for(it=mp.begin();it!=mp.end();it++) {
if(it->second==) {
ok&=(mp.count(it->first-)==); // x x x-1
if(it->first==) ok=; // 0 0
}
}
if(!ok) return *puts("cslnb");
// 0 1 2 3 …… n-1
sort(a+,a+n+);
ll s=;
for(int i=;i<=n;i++) {
s+=a[i]-(i-);
}
s%=;
return *puts(s?"sjfnb":"cslnb");
}

E:Tokitsukaze and Duel

分析:

先手如果第一步不能获胜,以后就不可能获胜。

后手如果第一步不能获胜,以后也不可能获胜,因为对方可以反转相同的维持局面。

先手获胜:可以通过前缀和预处理出先手是否必胜。

如果后手想要获胜,那么

1、k != 1   无限跳转

2、2*k >= n  因为到后手必定有一段连续的k个0或1,如果后手能获胜,必须能覆盖掉整个串

然后先手若不能第一步获胜,他必定会取中间的k个连续位置,所以要处理左右两个区间a、b

int len = n - k - 1;

a[1]==a[n]  ||  a[len] == a[len+1]   ||   a[n-len] == a[n-len+1]  时  后手也不能获胜

不是太懂,画图。。。

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+; int n,k,a[maxn],sum[maxn]; int query(int l,int r) {
if(l>r) return ;
return sum[r]-sum[l-];
} bool check1() {
for(int i=;i+k-<=n;i++) {
int tmp=query(,i-)+query(i+k,n);
if(tmp==||tmp+k==n) return true;
}
return false;
} bool check2() {
if(k==||*k<n) return false;
int len=n-k-;
for(int i=;i<=len;i++) {
if(a[i]!=a[i-]||a[n-i+]!=a[n-i+]) return false;
}
if(a[]==a[n]||a[len]==a[len+]||a[n-len]==a[n-len+]) return false;
return true;
} int main() {
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++) scanf("%1d",&a[i]);
for(int i=;i<=n;i++) sum[i]=sum[i-]+a[i];
if(check1()) puts("tokitsukaze");
else if(check2()) puts("quailty");
else puts("once again");
return ;
}

Codeforces Round #573 (Div. 2)的更多相关文章

  1. Codeforces Round #573 (Div. 1) 差F

    Codeforces Round #573 (Div. 1) E 题意:二维平面上有 n 个点,你可以放至多 m 条直线使得 (0,0) 与每个点的连线至少与一条直线相交.求原点与所有直线的距离最小值 ...

  2. Codeforces Round 573 (Div.1) 题解

    这场怎么说呢……有喜有悲吧. 开场先秒了 A.看到 B,感觉有点意思,WA 了 2 发后也过了. 此时还在 rk 前 200. 开 C,一看就不可做.跟榜,切 D 人数是 C 的两倍. 开 D.一眼感 ...

  3. Codeforces Round #573 (Div. 2) Tokitsukaze and Mahjong 水题

    B. Tokitsukaze and Mahjong time limit per test1 second memory limit per test256 megabytes Tokitsukaz ...

  4. Codeforces Round #573 (Div. 1)

    Preface 军训终于结束了回来补一补之前的坑发现很多题目题意都忘记了 这场感觉难度适中,F由于智力不够所以弃了,E的话石乐志看了官方英文题解才发现自己已经胡了一大半就差实现了233 水平下降严重. ...

  5. Codeforces Round #573 (Div. 2) D. Tokitsukaze, CSL and Stone Game (博弈,思维)

    D. Tokitsukaze, CSL and Stone Game time limit per test1 second memory limit per test256 megabytes in ...

  6. Codeforces Round #573 (Div. 2) E. Tokitsukaze and Duel (博弈)

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  7. Codeforces Round #573 (Div. 2) D题题解

    一.题目 ​ Tokitsukaze, CSL and Stone Game ​ Tokitsukaze和CSL正在玩一些石头游戏. ​ 一开始,有n堆的石头,第i堆石头数记为 \(a_i\),两人轮 ...

  8. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  9. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

随机推荐

  1. C++ 系列:static

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用.一.面向过程设计中的sta ...

  2. git安装与上传

    git安装与上传 上一篇 / 下一篇  2017-03-10 10:09:42 / 个人分类:代码管理工具 查看( 63 ) / 评论( 0 ) / 评分( 0 / 0 ) 1.安装Git-2.11. ...

  3. 模拟——1031D

    /* dp[i][j]表示到[i,j]的权值 cnt[i,j]表示到[i,j]还可以使用的修改的次数 cnt[i,j]=max(cnt[i-1,j],cnt[i,j-1]) 如果mp[i,j]!='a ...

  4. sulin Python3.6爬虫+Djiago2.0+Mysql --实例demo

    1.切换到项目目录下,启动测试服务器 manage.py runserver 192.168.0.108:8888 2.设置相关配置 项目目录展示如下: beauty=>settings.py ...

  5. 使用phpStudy自带的mysql-front学习建库建表以及基本的mysql语句

    1.鼠标左键phpStudy图标,点击mysql管理器,如下图 2.选择Mysql-Front,选择localhost进入,可以看到本地建立的数据库.然后新建一个数据库,如下图: 3.在新建的数据库上 ...

  6. VS2010-MFC(对话框:为控件添加消息处理函数)

    转自:http://www.jizhuomi.com/software/156.html MFC为对话框和控件等定义了诸多消息,我们对它们操作时会触发消息,这些消息最终由消息处理函数处理.比如我们点击 ...

  7. Apache Pig学习笔记(二)

     主要整理了一下,pig里面的一些关键词的含义和用法,pig虽然是一种以数据流处理为核心的框架,但数据库的大部分关键词和操作,在pig里面基本上都能找到对应的函数,非常灵活与简洁,春节前的最后一篇文章 ...

  8. conan本地安装包

    在远程有的情况下,本地没有的情况下,执行命令 conan install package/版本号@usr/stable ,比如conan install opencv/3.4.3@seal/stabl ...

  9. python基础-递归

    1.递归调用:在一个函数调用的过程中,直接或间接又调用了自身,就是递归调用 2.递归必备的两个阶段:1.递推  2.回溯 总结:#总结递归的使用: 1. 必须有一个明确的结束条件2. 每次进入更深一层 ...

  10. Ubuntu 14.04 Ruby 2.3.3 安装

    在Ubuntu 14.04通过下载Ruby源码包进行安装. 第一步,更新apt-get sudo apt-get update 通过apt-get安装ruby依赖 sudo apt-get insta ...