Codeforces Round #499 (Div. 1)部分题解(B,C,D)
Codeforces Round #499 (Div. 1)
这场本来想和同学一起打\(\rm virtual\ contest\)的,结果有事耽搁了,之后又陆陆续续写了些,就综合起来发一篇题解。
B.Rocket
极其简单的一道交互题,有些位置会说反的,那么就选一个数来询问直接选出所有的这样的位置
显然,选择\(\rm 1\)和\(\rm m\)都可以,选择完之后直接二分就行了
代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
void read(int &x) {
char ch; bool ok;
for(ok=0,ch=getchar(); !isdigit(ch); ch=getchar()) if(ch=='-') ok=1;
for(x=0; isdigit(ch); x=x*10+ch-'0',ch=getchar()); if(ok) x=-x;
}
#define rg register
const int maxn=41;
int n,m,now,flag;bool vis[maxn];
int check(int x,int now){
int g;
printf("%d\n",x),fflush(stdout),read(g);
if(vis[now])g=-g;return g;
}
int main(){
read(m),read(n);
for(rg int i=1;i<=n;i++){
printf("%d\n",m),fflush(stdout);read(now);
if(now==0)return 0;
else if(now==-1)vis[i]=1;
}
int l=1,r=m;now=1;
while(l<=r){
int mid=(l+r)>>1,f=check(mid,now);
if(!f)return 0;
if(f==-1)l=mid+1;else r=mid-1;
now++;if(now==n+1)now=1;
}
}
C.Border
这题其实也挺显然的,首先我们肯定只用管每个数\(\rm k\)进制下的最后一位的值,思考一下组合的过程,发现对于\(\rm x,y\),似乎\(\rm gcd(k,x,y)\)的倍数都能够被组合出来,然后大胆猜测这是对的,那么所有数和\(\rm k\)的最大公约数的答案就是能够组成的数
代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
void read(int &x) {
char ch; bool ok;
for(ok=0,ch=getchar(); !isdigit(ch); ch=getchar()) if(ch=='-') ok=1;
for(x=0; isdigit(ch); x=x*10+ch-'0',ch=getchar()); if(ok) x=-x;
}
#define rg register
const int maxn=1e5+10;
int n,m,a[maxn],now;
int gcd(int a,int b){return !b?a:gcd(b,a%b);}
int main(){
read(n),read(m),now=m;
for(rg int i=1;i<=n;i++)read(a[i]),a[i]=a[i]%m,now=gcd(now,a[i]);
if(!now)return printf("%d\n%d\n",1,0),0;
printf("%d\n",m/now);
for(rg int i=0;i<m/now;i++)printf("%d ",i*now);
}
D.Mars rover
确实也不难,差不多是一眼秒的题
由于每次都只修改一个点,然后我们发现对于这次修改,只要它到根的路径上只要有一个点不受这次变化的影响,那么根节点就不会受到影响。
那么我们可以发现这个过程可以从上往下做,对于每一个有两个儿子的点,如果它的左儿子取反后它的值不受影响,那么根节点也不会受到影响,也就是说它的左儿子这个子树内的所有叶子节点的取反对根节点都没有影响,右儿子亦然
这样我们就可以\(O(n)\)扫一遍先算出初始树上的节点权值,然后在\(O(n)\)扫一遍得出每个叶子节点对根节点是否有影响就行了
总时间复杂度\(O(n)\)
代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
void read(int &x) {
char ch; bool ok;
for(ok=0,ch=getchar(); !isdigit(ch); ch=getchar()) if(ch=='-') ok=1;
for(x=0; isdigit(ch); x=x*10+ch-'0',ch=getchar()); if(ok) x=-x;
}
#define rg register
const int maxn=1e6+10;
int n,m,f[maxn],ans,a[maxn],l[maxn][3];
char s[maxn][5];
bool vis[maxn];
void dfs(int x){
if(l[x][0]==1){
dfs(l[x][1]);
f[x]=!f[l[x][1]];
}
else if(l[x][0]==2){
dfs(l[x][1]),dfs(l[x][2]);
if(s[x][1]=='A')f[x]=f[l[x][1]]&f[l[x][2]];
if(s[x][1]=='O')f[x]=f[l[x][1]]|f[l[x][2]];
if(s[x][1]=='X')f[x]=f[l[x][1]]^f[l[x][2]];
}
}
void solve(int x,int now){
vis[x]=now;
if(l[x][0]==1)solve(l[x][1],now);
else if(l[x][0]==2){
if(s[x][1]=='A'){
int now1=(!f[l[x][1]])&f[l[x][2]],now2=(!f[l[x][2]])&f[l[x][1]];
if(now1!=f[x])solve(l[x][1],now);
else solve(l[x][1],0);
if(now2!=f[x])solve(l[x][2],now);
else solve(l[x][2],0);
}
if(s[x][1]=='O'){
int now1=(!f[l[x][1]])|f[l[x][2]],now2=(!f[l[x][2]])|f[l[x][1]];
if(now1!=f[x])solve(l[x][1],now);
else solve(l[x][1],0);
if(now2!=f[x])solve(l[x][2],now);
else solve(l[x][2],0);
}
if(s[x][1]=='X'){
int now1=(!f[l[x][1]])^f[l[x][2]],now2=(!f[l[x][2]])^f[l[x][1]];
if(now1!=f[x])solve(l[x][1],now);
else solve(l[x][1],0);
if(now2!=f[x])solve(l[x][2],now);
else solve(l[x][2],0);
}
}
}
int main(){
read(n);
for(rg int i=1;i<=n;i++){
scanf("%s",s[i]+1);
if(s[i][1]=='A'||s[i][1]=='O'||s[i][1]=='X')
l[i][0]=2,read(l[i][1]),read(l[i][2]);
else if(s[i][1]=='N')l[i][0]=1,read(l[i][1]);
else l[i][0]=0,read(f[i]);
}
dfs(1),solve(1,1);
for(rg int i=1;i<=n;i++)
if(s[i][1]=='I'){
if(vis[i])printf("%d",!f[1]);
else printf("%d",f[1]);
}
}
Codeforces Round #499 (Div. 1)部分题解(B,C,D)的更多相关文章
- Codeforces Round #499 (Div. 1)
Codeforces Round #499 (Div. 1) https://codeforces.com/contest/1010 为啥我\(\rm Div.1\)能\(A4\)题还是\(\rm s ...
- Codeforces Round #499 (Div. 2)
Codeforces Round #499 (Div. 2) https://codeforces.com/contest/1011 A #include <bits/stdc++.h> ...
- # Codeforces Round #529(Div.3)个人题解
Codeforces Round #529(Div.3)个人题解 前言: 闲来无事补了前天的cf,想着最近刷题有点点怠惰,就直接一场cf一场cf的刷算了,以后的题解也都会以每场的形式写出来 A. Re ...
- Codeforces Round #557 (Div. 1) 简要题解
Codeforces Round #557 (Div. 1) 简要题解 codeforces A. Hide and Seek 枚举起始位置\(a\),如果\(a\)未在序列中出现,则对答案有\(2\ ...
- Codeforces Round #499 (Div. 1) F. Tree
Codeforces Round #499 (Div. 1) F. Tree 题目链接 \(\rm CodeForces\):https://codeforces.com/contest/1010/p ...
- Codeforces Round #540 (Div. 3) 部分题解
Codeforces Round #540 (Div. 3) 题目链接:https://codeforces.com/contest/1118 题目太多啦,解释题意都花很多时间...还有事情要做,就选 ...
- Codeforces Round #538 (Div. 2) (A-E题解)
Codeforces Round #538 (Div. 2) 题目链接:https://codeforces.com/contest/1114 A. Got Any Grapes? 题意: 有三个人, ...
- Codeforces Round #531 (Div. 3) ABCDEF题解
Codeforces Round #531 (Div. 3) 题目总链接:https://codeforces.com/contest/1102 A. Integer Sequence Dividin ...
- Codeforces Round #527 (Div. 3) ABCDEF题解
Codeforces Round #527 (Div. 3) 题解 题目总链接:https://codeforces.com/contest/1092 A. Uniform String 题意: 输入 ...
随机推荐
- ADO:连接,执行语句与关闭(sql server数据库)
一,身份验证: sql server数据库连接身份验证有两种:windows身份验证和SQL Server身份验证 windows验证:是使用windows的安全子系统对用户连接进行有效性验证.(个人 ...
- 关于pyhton中的__xxx__格式的方法与变量的理解
python中类似__xx__的方法和变量是python系统内定义的方法和变量,都是具有特殊意义的基础变量和方法,一般不要擅自使用,除非知道自己在干什么. 具体查看python内置模块builtins ...
- OpenAL播放pcm或wav数据流-windows/ios/android(一)
OpenAL播放pcm或wav数据流-windows/iOS/Android(一) 最近在研究渲染问题,本文采用openal做pcm和wav数据流播放,并非本地文件,demo是windows的,i ...
- P1030 求先序排列
题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...
- nginx uwsgi wsgi django 这些东西究竟是什么关系
有太多的文章告诉我们nginx uwsgi django 这些东西怎么用了,太多的人知道这些东西的怎么使用,怎么配置,怎么优化,但是还是有一部分人比如我这种水货不知道这些东西到底是啥,为啥一个项目的发 ...
- bzoj 2039 & 洛谷 P1791 人员雇佣 —— 二元关系最小割
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2039 https://www.luogu.org/problemnew/show/P1791 ...
- Poj 2853,2140 Sequence Sum Possibilities(因式分解)
一.Description Most positive integers may be written as a sum of a sequence of at least two consecuti ...
- java代码for循环+缓冲流类
总结:这个结果竟然是对的.我错了. package com.da; //创建一个String对象的数组,然后执行读取文本,把文本每一行存入数组,它将读取到100行 //或直接到你按”stop“才停止, ...
- JWT(JSON WEB TOKEN) / oauth2 / SSL
1: JWT: 为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景.JWT的声明一般被 ...
- MATLAB模糊逻辑工具箱函数
说明:本文档中所列出的函数适用于Matlab5.3以上版本,为了简明起见,只列出了函数名,若需要进一步的说明,请参阅MATLAB的帮助文档. 1. GUI工具 Anfisedit 打开ANF ...