Codeforces Round #516 (Div. 2, by Moscow Team Olympiad)
A. Make a triangle!
题意
让某段最少增加多少使得构成三角形
思路
让较小两段往最长段去凑
代码
- #include <bits/stdc++.h>
- #define DBG(x) cerr << #x << " = " << x << endl;
- using namespace std;
- int a[5];
- int main(){
- scanf("%d%d%d",&a[1],&a[2],&a[3]);
- sort(a+1,a+1+3);
- if(a[1]+a[2] > a[3])puts("0");
- else printf("%d\n",a[3]-a[2]-a[1]+1);
- return 0;
- }
B. Equations of Mathematical Magic
题意
存在多少种$x$使得$x$与$a$满足题式
思路
打表发现与$a$的二进制表示中$1$的数量有关
代码
- #include <bits/stdc++.h>
- #define DBG(x) cerr << #x << " = " << x << endl;
- using namespace std;
- typedef long long LL;
- int t,n;
- LL pw[35];
- int main(){
- scanf("%d",&t);
- pw[0]=1;
- for(int i=1;i<35;i++)pw[i]=2LL*pw[i-1];
- while(t--){
- scanf("%d",&n);
- int cnt=0;
- for(int i=0;i<=31;i++)if((1<<i)&n)cnt++;
- printf("%lld\n",pw[cnt]);
- }
- return 0;
- }
C. Oh Those Palindromes
题意
用原串字符构造出子串中回文串最多的串
思路
让相同字符相邻必定为最优情况
代码
- #include <bits/stdc++.h>
- #define cerr << #x << " = " << x << endl;
- const int maxn = 1e5+5;
- using namespace std;
- int n,cnt[30];
- char s[maxn];
- int main(){
- scanf("%d%s",&n,s+1);
- for(int i=1;i<=n;i++)cnt[s[i]-'a']++;
- for(int i=0;i<26;i++){
- for(int j=0;j<cnt[i];j++)printf("%c",i+'a');
- }puts("");
- }
D. Labyrinth
题意
从某点出发,左右移动次数有限,最多能到达几个合法点
思路
优先进行上下移动,用双端队列模拟bfs
代码
- #include <bits/stdc++.h>
- #define DBG(x) cerr << #x << " = " << x << endl;
- const int maxn = 2e3+5;
- using namespace std;
- int n,m,sr,sc,lm,rm;
- int tot,vis[maxn][maxn];
- int tr[4]={1,-1,0,0},tc[4]={0,0,1,-1};
- char mp[maxn][maxn];
- struct node{
- int r,c,t1,t2;
- };
- void bfs(){
- deque<node>Q;
- vis[sr][sc]=1;
- Q.push_back({sr,sc,lm,rm});
- while(!Q.empty()){
- node tmp=Q.front();
- Q.pop_front();
- for(int i=0;i<4;i++){
- node now=tmp;
- now.r+=tr[i],now.c+=tc[i];
- if(now.r >= 1 && now.r <= n && now.c >= 1 && now.c <= m && !vis[now.r][now.c] && mp[now.r][now.c] == '.'){
- if(i < 2){tot+=vis[now.r][now.c]=1;Q.push_front({now.r,now.c,now.t1,now.t2});}
- else{
- if(tc[i] == -1 && now.t1){
- tot+=vis[now.r][now.c]=1;
- Q.push_back({now.r,now.c,now.t1-1,now.t2});
- }
- if(tc[i] == 1 && now.t2){
- tot+=vis[now.r][now.c]=1;
- Q.push_back({now.r,now.c,now.t1,now.t2-1});
- }
- }
- }
- }
- }
- }
- int main(){
- scanf("%d%d%d%d%d%d",&n,&m,&sr,&sc,&lm,&rm);
- for(int i=1;i<=n;i++)scanf("%s",mp[i]+1);
- bfs();
- printf("%d\n",tot+1);
- return 0;
- }
E. Dwarves, Hats and Extrasensory Abilities
题意
交互题,每次询问一个点的颜色,最后用一条直线将两种颜色的点分开,不存在这种直线也会WA
思路
先询问坐标上的点,二分枚举剩余点,颜色与第一点相同就$l=mid$,否则$r=mid$,等于把与第一点相同色的点分在一边,剩下的分在另一边
代码
- #include <bits/stdc++.h>
- #define DBG(x) cerr << #x << " = " << x << endl;
- const int maxn = 35;
- using namespace std;
- int n;
- string str[maxn];
- int main(){
- cin >> n;
- cout << "0 2\n";
- fflush(stdout);
- cin >> str[1];
- int l=1,r=(int)1e9,mid;
- for(int i=2;i<=n;i++){
- mid=(l+r)/2;
- cout << mid << ' ' << 2 << endl;
- fflush(stdout);
- cin >> str[i];
- (str[i][0] == str[1][0]) ? l=mid : r=mid;
- }
- cout << l << ' ' << 3 << ' ' << r << ' ' << 1 << endl;
- fflush(stdout);
- return 0;
- }
F. Candies for Children
留坑,寒假补
Codeforces Round #516 (Div. 2, by Moscow Team Olympiad)的更多相关文章
- Codeforces Round #516 (Div. 2, by Moscow Team Olympiad) D. Labyrinth
http://codeforces.com/contest/1064/problem/D 向上/向下加0,向左/右加1, step = 0,1,…… 求的是最少的步数,所以使用bfs. step=k ...
- Codeforces Round #516 (Div. 2, by Moscow Team Olympiad) D. Labyrinth(重识搜索)
https://codeforces.com/contest/1064/problem/D 题意 给你一个有障碍的图,限制你向左向右走的次数,问你可以到达格子的个数 思路 可以定义状态为vi[x][y ...
- [Codeforces Round #516 (Div. 2, by Moscow Team Olympiad) ](A~E)
A: 题目大意:给你$a,b,c$三条边,可以给任意的边加任意的长度,求最少共加多少长度使得可以构成三角形 题解:排个序,若可以组成,输出$0$,否则输出$c-a-b+1(设a\leqslant b\ ...
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) D. Sorting the Coins
http://codeforces.com/contest/876/problem/D 题意: 最开始有一串全部由"O"组成的字符串,现在给出n个数字,指的是每次把位置n上的&qu ...
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) C. Classroom Watch
http://codeforces.com/contest/876/problem/C 题意: 现在有一个数n,它是由一个数x加上x每一位的数字得到的,现在给出n,要求找出符合条件的每一个x. 思路: ...
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) B. Divisiblity of Differences
http://codeforces.com/contest/876/problem/B 题意: 给出n个数,要求从里面选出k个数使得这k个数中任意两个的差能够被m整除,若不能则输出no. 思路: 差能 ...
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) A. Trip For Meal
http://codeforces.com/contest/876/problem/A 题意: 一个人一天要吃n次蜂蜜,他有3个朋友,他第一次总是在一个固定的朋友家吃蜂蜜,如果说没有吃到n次,那么他就 ...
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)
A. Trip For Meal 题目链接:http://codeforces.com/contest/876/problem/A 题目意思:现在三个点1,2,3,1-2的路程是a,1-3的路程是b, ...
- CF Round #516 (Div. 2, by Moscow Team Olympiad)
前言:依旧菜,\(A\)了\(4\)题,不过这次上蓝了挺开心的. A. Make a triangle! Description 给出\(3\)根木棍,希望用它们拼成三角形,可以将其中的某些木棍增长, ...
随机推荐
- JS小积累(一)— 判断在线离线
JS小积累-判断在线离线 作者: 狐狸家的鱼 Github: 八至 if(window.navigator.onLine==true){ console.log('online'); ... } el ...
- 【BZOJ3289】Mato的文件管理 莫队+树状数组
题目大意:给定一个长度为 N 的序列,M 个询问,每次询问区间逆序对的个数. 题解:用树状数组加速答案转移. 代码如下 #include <bits/stdc++.h> #define f ...
- 第一篇:安装Android Studio问题及其解决方案
ubuntu18.04配置android studio3.2.1环境 1.JDK安装与配置:https://www.cnblogs.com/yuanbo123/p/5819564.html(按照文档操 ...
- java 中,new一个新对象时,是先给成员变量赋上初值后 再来调用类中的构造函数的。
今天学习时法现一个问题,我们定义了一个Test类,在主类中new了一个他的对象,发现:在新建对象中所有的成员变量是先给定了默认初值的:0,null或者false, 之后再调用的构造函数.(如果变量是由 ...
- java练习:质数,匿名内部类创建接口,抽象类派生子类,画圆,字节截取字符串,数字变钱币,五子棋,梭哈
java学习-质数的孤独 正在看质数的孤独,,,于是写了一个练习代码,输出1-100之间的质数 代码比较烂.待完善吧. 这里用到了continue和break,continue指结束当前轮次循环,跳入 ...
- Luogu P2617 Dynamic Rankings
带修主席树的模板,因为状态不好所以敲了很长时间,不过写完感觉能更好地理解主席树了. 核心其实就是树状数组套主席树,维护方法不再是以前的那种一步一修改,而是对于树状数组上的每一个点建立一棵权值线段树,然 ...
- break #立即终止本次循环
#!/user/bin/python# -*- coding:utf-8 -*-# print(111)# while True:# print(222)# print(333)# break #立即 ...
- qemu与libvirt编译与安装
qemu与libvirt编译与安装 一 .qemu编译前准备 以下链接为的本次编译环境为前提继续进行. http://www.cnblogs.com/grglym/p/7891253.html 1.安 ...
- ResourceBundle读取properties配置文件
package cn.rocker.readProperties; import java.util.ResourceBundle; import org.junit.Test; /** * @Cla ...
- java基本类型及其相互转换
1.基本数据类型 java中是采用Unicode编码的,其一个字符占用两个字节,故java中字符char可以存储一个中文汉字 整数默认是int类型,浮点数默认是double类型 在定义long类型的变 ...