Codeforces Round #617 (Div. 3)
A
题意:能否将数组里面的值用数组里面的值替换出一个和为奇数的数组
思路:1.和为奇数yes 2.和为偶数但有奇数yes 3.个数是奇数的,有奇数的yes 其他都是no
果然罚时全给了A
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define il inline
#define it register int
#define lowbit(x) (x)&(-x)
#define mem(a,b) memset(a,b,sizeof(a))
#define mod 1000000007
const int maxn=1e5+;
int a,n,sum;
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
sum=;
int f=,f2=;
for(it i=;i<n;i++){
scanf("%d",&a);
sum+=a;if(a&){f=;}
if(a%==){f2=;}
}
if(sum& || (f== && n&) || (sum%== &&f== && f2==)){
printf("YES\n");
}
else{
printf("NO\n");
}
}
return ;
}
B
题意:每花十元,可以得一元,问最多能花多少
思路:9的倍数特判(n-1)/9+n,其他 n/9+n就是答案
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define il inline
#define it register int
#define lowbit(x) (x)&(-x)
#define mem(a,b) memset(a,b,sizeof(a))
#define mod 1000000007
const int maxn=1e5+;
int a,n,sum;
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
if(n%==){
printf("%d\n",n+(n-)/);continue;
}
printf("%d\n",n+n/);
}
return ;
}
C
题意:如果有走过重复点,算出最小的步数的l和r值
思路:用map存点,模拟就行
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define il inline
#define it register int
#define lowbit(x) (x)&(-x)
#define mem(a,b) memset(a,b,sizeof(a))
#define mod 1000000007
const int maxn=2e5+;
int n,t;
struct node{
int x,y;
friend bool operator<(const node a,const node b){
if(a.x==b.x){
return a.y<b.y;
}
return a.x<b.x;
}
node(){}
node(int xx,int yy):x(xx),y(yy){}
};
char s[maxn];
map<node,int>mp;
int main(){
scanf("%d",&t);
while(t--){
scanf("%d",&n);
scanf("%s",s+);mp.clear();
int x=,y=;
mp[node(,)]=;
int f=,l,r,minb=maxn;
for(it i=;i<=n;i++){
if(s[i]=='L'){
x--;
}
else if(s[i]=='R'){
x++;
}
else if(s[i]=='U'){
y++;
}
else if(s[i]=='D'){
y--; }
if(mp[node(x,y)]==){
int kkk=i-;
if(kkk<minb){l=;r=i;minb=kkk;}f=;mp[node(x,y)]=i;
}
else if(mp[node(x,y)]){
int kkk=i-mp[node(x,y)];
if(kkk<minb){l=i-kkk+;r=i;minb=kkk;}f=;mp[node(x,y)]=i;
}
else{
mp[node(x,y)]=i;
}
//cout<<x<<y<<i<<endl;
}
if(f){
printf("-1\n");
}
else{
printf("%d %d\n",l,r);
}
}
return ;
}
D
居然比c题开的快,因为c题题目读了半天,读不懂直接跳了
题意:a和b的攻击力,有n个h1~hn的血条怪,有k个使得b跳过技能的招数,问a有多少次可以杀死怪的最后一血
思路:h1~hn都余上(a+b)==sheng,sheng<=a,总值加一,sheng>a的部分求出需要的k==(sheng-1)/a,存下来排序求最大总值
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define il inline
#define it register int
#define lowbit(x) (x)&(-x)
#define mem(a,b) memset(a,b,sizeof(a))
#define mod 1000000007
const int maxn=2e5+;
int n,a,b,k,h,s[maxn];
int main(){
scanf("%d%d%d%d",&n,&a,&b,&k);
//int kk=__gcd(a,b);
int c=a+b;
int sum=,t=;
for(int i=;i<n;i++){
scanf("%d",&h);
int sheng=h%c;
if(sheng==){sheng=c;}
//cout<<sheng<<endl;
if(sheng<=a){
sum++;
}
else{
s[t++]=(sheng-)/a;
}
}
sort(s,s+t);
for(it i=;i<t;i++){
if(k>=s[i]){
sum++;k-=s[i];
}
else{break;}
}
printf("%d\n",sum);
return ;
}
E1
我吐血了,死因s[i]>=s[j],多了等号,因为c题搞了半天,当时c题的读题和一直判不好(0,0)点导致时间没有,一看E1这么简单,暴力来,然后wa到比赛结束
然后看了数据,彻夜难眠……因为是暴力,所以代码就不放出来了,等补完了E2,直接放E2的代码。
upd:原来E2是多个颜色,数据扩大,那就还是贴一下E1的暴力代码了
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define il inline
#define it register int
#define lowbit(x) (x)&(-x)
#define mem(a,b) memset(a,b,sizeof(a))
#define mod 1000000007
const int maxn=2e5+;
int n,a[]={};
char s[];
int main(){
scanf("%d",&n);
scanf("%s",s);
a[]=;
int ff=;
for(it i=;i<n;i++){
for (int j=;j<i; j++) {
if (s[j]>s[i]) {
a[i]= ;
}
}
for (int k=i+;k<n; k++) {
if (s[i]>s[k] && a[i]==) {
ff = ;
break;
}
}
if(!ff){
break;
} }
if(ff){
printf("YES\n");
for(it i=;i<n;i++){
printf(i==n-?"%d\n":"%d",a[i]);
}
}
else{
printf("NO\n");
}
return ;
}
不知道为什么……现在打比赛开局总会爆炸
Codeforces Round #617 (Div. 3)的更多相关文章
- Codeforces Round #617 (Div. 3) String Coloring(E1.E2)
(easy version): 题目链接:http://codeforces.com/contest/1296/problem/E1 题目一句话就是说,两种颜色不同的字符可以相互换位, 问,对这字符串 ...
- Codeforces Round #617 (Div. 3)F. Berland Beauty
题意: 给一棵树,边权未知,现在给m组约束,每组约束给出从u到v路径中的最小值,现在让你给出一组边权,使得符合之前的约束,不能给出输出-1 思路: 因为n较小,对于每组约束我们可以直接暴力修改路径上的 ...
- Codeforces Round #617 (Div. 3) D. Fight with Monsters
D : Fight with Monsters 题目大意 : 有一组数,每个值对应着一个怪物的 hp 值,现在有两个人,一个自己一个对手,每个人有一个攻击值, 两个人轮流攻击怪物,如果是自己将怪物先打 ...
- Codeforces Round #617 (Div. 3) 补题记录
1296A - Array with Odd Sum 题意:可以改变数组中的一个数的值成另外一个数组中的数,问能不能使数组的和是个奇数 思路:签到,如果本来数组的和就是个奇数,那就OK 如果不是,就需 ...
- Codeforces Round #617 (Div. 3) 题解
又是隔了一年才来补题的我 A.B水题就不用说了 C - Yet Another Walking Robot C题我居然卡了一会,最后决定用map水,结果出来看了看题解,居然真的是map...没想到会出 ...
- Codeforces Round #617 (Div. 3)A. Array with Odd Sum(水题)
You are given an array aa consisting of nn integers. In one move, you can choose two indices 1≤i,j≤n ...
- [CF百场计划]Codeforces Round #617 (Div. 3)
A. Array with Odd Sum Description You are given an array \(a\) consisting of \(n\) integers. In one ...
- 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 ...
随机推荐
- 小程序websocket用法
// socket已经连接成功 var socketOpen = false // socket已经调用关闭function var socketClose = false // socket发送的消 ...
- python文件读取:遇见的错误及解决办法
问题一: TypeError: 'str' object is not callable 产生原因: 该错误TypeError: 'str' object is not callable字面上意思:就 ...
- 动态设置微信小程序 navigationBarTitle 的值
wx.setNavigationBarTitle({ title:' 动态值 ' })
- C++ split分割字符串函数
将字符串绑定到输入流istringstream,然后使用getline的第三个参数,自定义使用什么符号进行分割就可以了. #include <iostream> #include < ...
- es8中对string补白的方式
//允许将空字符串或其他字符串添加到原始字符串的开头或结尾for(let i = 1; i < 32; i++) { if(i < 10) { console.log(`0{i}`) }e ...
- js实现图片轮播图
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Html学习笔记(二)
Html头部 HTML <link>元素 <link> 标签定义了文档与外部资源之间的关系. <link> 标签通常用于链接到样式表: <head> & ...
- pikachu平台搭建
1.将pikachu转移至htdocs 2.然后打开pikachu文件夹里的inc文件夹 3.里面对应的内容该成之前刚刚设置好的数据库服务器地址,用户名,密码和端口号 4.打开浏览器,输入http:/ ...
- ES6 Set和Map的那点事
Set 1.Set特点 类数组 新增数据结构 是构造函数 成员值唯一 注重独一无二的特征 2.Set实例的常用方法 console.log('------------Set操作方法-------- ...
- 安卓按键:读取txt开头出现未知字符的问题
很多时候 我们读取txt 用traceprint输出后 最头上会莫名其妙多出一个问号 但是你用问号匹配他 却匹配不到 就是1个未知字符 这个到底是什么 怎么避免出现这个东西呢 这个主要是txt文件 ...