Codeforces Round #573 (Div. 2)
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)的更多相关文章
- Codeforces Round #573 (Div. 1) 差F
Codeforces Round #573 (Div. 1) E 题意:二维平面上有 n 个点,你可以放至多 m 条直线使得 (0,0) 与每个点的连线至少与一条直线相交.求原点与所有直线的距离最小值 ...
- Codeforces Round 573 (Div.1) 题解
这场怎么说呢……有喜有悲吧. 开场先秒了 A.看到 B,感觉有点意思,WA 了 2 发后也过了. 此时还在 rk 前 200. 开 C,一看就不可做.跟榜,切 D 人数是 C 的两倍. 开 D.一眼感 ...
- Codeforces Round #573 (Div. 2) Tokitsukaze and Mahjong 水题
B. Tokitsukaze and Mahjong time limit per test1 second memory limit per test256 megabytes Tokitsukaz ...
- Codeforces Round #573 (Div. 1)
Preface 军训终于结束了回来补一补之前的坑发现很多题目题意都忘记了 这场感觉难度适中,F由于智力不够所以弃了,E的话石乐志看了官方英文题解才发现自己已经胡了一大半就差实现了233 水平下降严重. ...
- 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 ...
- Codeforces Round #573 (Div. 2) E. Tokitsukaze and Duel (博弈)
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- Codeforces Round #573 (Div. 2) D题题解
一.题目 Tokitsukaze, CSL and Stone Game Tokitsukaze和CSL正在玩一些石头游戏. 一开始,有n堆的石头,第i堆石头数记为 \(a_i\),两人轮 ...
- 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 ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
随机推荐
- Matrix Power Series
Matrix Power Series 给出矩阵A,求矩阵\(A+A^2+...+A^k\)各个元素\(mod\ yyb\)的值,\(n\leq 30,k\leq 10^9,yyb\leq 10^4\ ...
- DOS命令大全【转】
见到网络上,觉得值得学习,特此收藏到这里,因为我几乎天天来这个网站 net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net u ...
- MYSQL批量创建表的存储过程
因为业务需要,创建了100个表,但是这些表的结构都是一样的,作为程序员,就是要解决这种重复劳动.然而这种事情还要单独写个php脚本的话太麻烦了吧,所以就干脆学了一下直接用Mysql存储过程怎么实现: ...
- Censoring【自动AC机】【水题毁我青春】【20190614】
这题简直比注水猪肉还水QAQ. 以前做过KMP的Censoring单串匹配,果断选择自动AC机w 对短串建自动AC机 长串去机子里匹配 用个栈边匹配边弹出 记得弹出一个串后把匹配点指向栈顶就ojbk ...
- 47 Majority Element II
原题网址; https://www.lintcode.com/problem/majority-element-ii/ 描述 给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的三 ...
- 左神算法进阶班6_1LFU缓存实现
[题目] LFU也是一个著名的缓存算法,自行了解之后实现LFU中的set 和 get 要求:两个方法的时间复杂度都为O(1) [题解] LFU算法与LRU算法很像 但LRU是最新使用的排在使用频率最前 ...
- flock文件锁的学习和应用
flock文件锁 学习与应用 2016-9-20 作用: 可以使用flock文件锁,避免指定命令的同时执行.(实现任务锁定,解决冲突) 用法: # flock -xn /opt/lock_file ...
- Python学习day07 - Python进阶(1) 内置方法
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- python学习笔记3.2_数据导出
一.data.to_csv:数据导出 1.to_csv:将数据导出为逗号分隔的文件 2.输出为其他分隔符的文件 写入到控制台,并打印:sys.stdout na_rep:对空值进行标注 二.serie ...
- python-web-selenium模拟控制浏览器
用 selenium 模块控制浏览器 启动 selenium 控制的浏览器 from selenium import webdriver brower = webdriver.Firefox() br ...