Educational Codeforces Round 6
620A - Professor GukiZ's Robot 20171122
\(ans=max(\left | x2-x1 \right |,\left | y2-y1 \right |)\)
- #include<stdlib.h>
- #include<stdio.h>
- #include<math.h>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- int X[],Y[],x,y;
- int main()
- {
- scanf("%d%d%d%d",&X[],&Y[],&X[],&Y[]);
- x=abs(X[]-X[]),y=abs(Y[]-Y[]);
- printf("%d\n",max(x,y));
- return ;
- }
620B - Grandfather Dovlet’s calculator 20171122
预处理每个字符的花费,按照题意模拟即可
- #include<stdlib.h>
- #include<stdio.h>
- #include<math.h>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- int ans,a,b,f[];
- int cal(int k)
- {
- int _=;
- while(k)
- _+=f[k%],k/=;
- return _;
- }
- int main()
- {
- scanf("%d%d",&a,&b);
- f[]=,f[]=,f[]=,f[]=,f[]=;
- f[]=,f[]=,f[]=,f[]=,f[]=;
- for(int i=a;i<=b;i++)
- ans+=cal(i);
- printf("%d\n",ans);
- return ;
- }
620C - Pearls in a Row 20171122
开个set记录当前已在区间类的珍珠种类,O(n)扫一遍即可
- #include<stdlib.h>
- #include<stdio.h>
- #include<math.h>
- #include<set>
- #include<vector>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- vector<int>l,r;
- int n,x,t=;
- set<int>s;
- int main()
- {
- scanf("%d",&n);
- for(int i=;i<=n;i++)
- {
- if(t==i)s.clear();
- scanf("%d",&x);
- if(s.count(x))
- l.push_back(t),r.push_back(i),t=i+;
- else s.insert(x);
- }
- if(!l.size())return printf("-1\n"),;
- r[r.size()-]=n;
- printf("%d\n",l.size());
- for(int i=;i<l.size();i++)
- printf("%d %d\n",l[i],r[i]);
- return ;
- }
620D - Professor GukiZ and Two Arrays 20171122
暴力分类讨论\(k=0,1,2\)的所有情况就好了
- #include<stdlib.h>
- #include<stdio.h>
- #include<math.h>
- #define N 2001
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- #define LL long long
- struct rua
- {
- LL i,j,v;
- }f[N*N];
- LL n,m,d,sa,sb,a[N],b[N],ans[],v[N*N],_,a1,b1,b2;
- bool cmp(rua x,rua y){return x.v<y.v;}
- void cdx(LL i,LL _)
- {
- if(!_)return;
- if(f[_].i==f[i].i || f[_].j==f[i].j)return;
- if(ans[]>abs(d+v[_]))
- ans[]=abs(d+v[_]),b1=i,b2=_;
- }
- int main()
- {
- ans[]=(1ll<<);
- scanf("%I64d",&n);
- for(LL i=;i<=n;i++)
- scanf("%I64d",&a[i]),sa+=a[i];
- scanf("%I64d",&m);
- for(LL i=;i<=m;i++)
- scanf("%I64d",&b[i]),sb+=b[i];
- d=sa-sb;
- for(LL i=;i<=n;i++)
- for(LL j=;j<=m;j++)
- {
- f[i*m-m+j].v=*(b[j]-a[i]);
- f[i*m-m+j].i=i;
- f[i*m-m+j].j=j;
- }
- ans[]=abs(d);
- sort(f+,f+n*m+,cmp);
- for(LL i=;i<=n;i++)
- for(LL j=;j<=m;j++)
- v[i*m-m+j]=f[i*m-m+j].v;
- _=lower_bound(v+,v+n*m+,-d)-v;
- if(_==n*m+)ans[]=abs(d+v[_-]),a1=_-;else
- if(_==)ans[]=abs(d+v[]),a1=_;else
- if(abs(d+v[_])<abs(d+v[_-]))ans[]=abs(d+v[_]),a1=_;
- else ans[]=abs(d+v[_-]),a1=_-;
- for(int i=;i<n*m;i++)
- {
- d+=v[i];
- _=lower_bound(v+,v+n*m+,-d)-v;
- if(_==n*m+)cdx(i,_-);
- else if(_==)cdx(i,-(i==));else
- cdx(i,_+(i==_)),cdx(i,_--(i==_-));
- d-=v[i];
- }
- if(ans[]<=ans[] && ans[]<=ans[])
- return printf("%I64d\n0\n",ans[]),;
- if(ans[]<=ans[] && ans[]<=ans[])
- return printf("%I64d\n1\n%I64d %I64d\n",ans[],f[a1].i,f[a1].j),;
- printf("%I64d\n2\n",ans[]);
- printf("%I64d %I64d\n",f[b1].i,f[b1].j);
- printf("%I64d %I64d\n",f[b2].i,f[b2].j);
- return ;
- }
620E - New Year Tree 20180919
预处理每个点的DFS序,可以得出每棵子树对应的DFS序的范围。由于\(c_i\)不超过60,故可将修改操作转换为:把子树内所有点的价值改为\(2^{c}\),将询问操作转换为:询问子树内所有点价值进行或运算的结果在二进制中1的个数,用线段树做就好了
- #include<bits/stdc++.h>
- using namespace std;
- #define N 400001
- #define LL long long
- vector<int>d[N];
- int n,m,t,x,y,c[N],l[N],r[N];
- struct rua{int l,r;LL f,w;}tr[N<<];
- LL a[N];
- void update(int x)
- {
- int lson=x*,rson=x*+;
- tr[x].w=tr[lson].w|tr[rson].w;
- }
- void down(int x)
- {
- LL c=tr[x].w;tr[x].f=;
- int lson=x*,rson=x*+;
- tr[lson].f=tr[lson].w=c;
- tr[rson].f=tr[rson].w=c;
- }
- void Build(int l,int r,int x)
- {
- tr[x]={l,r,,};
- if(l==r){tr[x].w=a[l];return;}
- int mid=l+r>>;
- Build(l,mid,x*);
- Build(mid+,r,x*+);
- update(x);
- }
- void Change(int L,int R,LL c,int x)
- {
- int l=tr[x].l,r=tr[x].r;
- int mid=l+r>>;
- if(L<=l && r<=R){tr[x].f=tr[x].w=c;return;}
- if(tr[x].f)down(x);
- if(L<=mid)Change(L,R,c,x*);
- if(R>mid)Change(L,R,c,x*+);
- update(x);
- }
- LL Query(int L,int R,int x)
- {
- int l=tr[x].l,r=tr[x].r;
- int mid=l+r>>;
- LL res=;
- if(L<=l && r<=R)return tr[x].w;
- if(tr[x].f)down(x);
- if(L<=mid)res|=Query(L,R,x*);
- if(R>mid)res|=Query(L,R,x*+);
- update(x);
- return res;
- }
- void dfs(int cur,int pre)
- {
- l[cur]=++x;
- a[x]=1ll<<c[cur];
- for(auto nxt:d[cur])if(nxt!=pre)dfs(nxt,cur);
- r[cur]=x;
- }
- int main()
- {
- scanf("%d%d",&n,&m);
- for(int i=;i<=n;i++)
- scanf("%d",&c[i]);
- for(int i=;i<=n;i++)
- scanf("%d%d",&x,&y),
- d[x].push_back(y),
- d[y].push_back(x);
- x=,dfs(,);
- Build(,n,);
- for(int i=;i<=m;i++)
- {
- scanf("%d",&t);
- if(t==)
- scanf("%d%d",&x,&y),
- Change(l[x],r[x],1ll<<y,);
- else
- scanf("%d",&x),
- printf("%d\n",(int)__builtin_popcountll(Query(l[x],r[x],)));
- }
- }
620F - Xors on Segments 20171122
这题...预处理从1异或到n的值(即前缀异或和),\(O(n^{2})\)莽一下就过了...CF的评测机是跑得真快
- #include<stdlib.h>
- #include<stdio.h>
- #include<math.h>
- #define N 50001
- #define M 1000001
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- int n,m,a[N],l[N],r[N],t[N],ans[N],f[M];
- int main()
- {
- for(int i=;i<M;i++)
- f[i]=f[i-]^i;
- scanf("%d%d",&n,&m);
- for(int i=;i<=n;i++)
- scanf("%d",&a[i]);
- for(int i=;i<=m;i++)
- scanf("%d%d",&l[i],&r[i]);
- for(int i=;i<=n;i++)
- {
- int _=;t[i-]=;
- for(int j=i;j<=n;j++)
- _=max(_,f[a[i]]^f[a[j]]^min(a[i],a[j])),t[j]=_;
- for(int j=;j<=m;j++)
- if(l[j]<=i && r[j]>=i)
- ans[j]=max(ans[j],t[r[j]]);
- }
- for(int i=;i<=m;i++)printf("%d\n",ans[i]);return ;
- }
Educational Codeforces Round 6的更多相关文章
- [Educational Codeforces Round 16]E. Generate a String
[Educational Codeforces Round 16]E. Generate a String 试题描述 zscoder wants to generate an input file f ...
- [Educational Codeforces Round 16]D. Two Arithmetic Progressions
[Educational Codeforces Round 16]D. Two Arithmetic Progressions 试题描述 You are given two arithmetic pr ...
- [Educational Codeforces Round 16]C. Magic Odd Square
[Educational Codeforces Round 16]C. Magic Odd Square 试题描述 Find an n × n matrix with different number ...
- [Educational Codeforces Round 16]B. Optimal Point on a Line
[Educational Codeforces Round 16]B. Optimal Point on a Line 试题描述 You are given n points on a line wi ...
- [Educational Codeforces Round 16]A. King Moves
[Educational Codeforces Round 16]A. King Moves 试题描述 The only king stands on the standard chess board ...
- Educational Codeforces Round 6 C. Pearls in a Row
Educational Codeforces Round 6 C. Pearls in a Row 题意:一个3e5范围的序列:要你分成最多数量的子序列,其中子序列必须是只有两个数相同, 其余的数只能 ...
- Educational Codeforces Round 9
Educational Codeforces Round 9 Longest Subsequence 题目描述:给出一个序列,从中抽出若干个数,使它们的公倍数小于等于\(m\),问最多能抽出多少个数, ...
- Educational Codeforces Round 37
Educational Codeforces Round 37 这场有点炸,题目比较水,但只做了3题QAQ.还是实力不够啊! 写下题解算了--(写的比较粗糙,细节或者bug可以私聊2333) A. W ...
- Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship
Problem Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...
- Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)
Problem Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...
随机推荐
- MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法
MySQL都有什么锁? MySQL有三种锁的级别:页级.表级.行级. 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁:锁定粒度 ...
- 使用SIGALARM为recvfrom设置超时
static void sig_alrm(int); void dg_cli(FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen) ...
- SSRF漏洞挖掘经验
SSRF概述 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问 ...
- Ubuntu解决没有可安装候选软件包
解决方法:可以使用apt-cache search <package_name>寻找. 例如: E: 软件包 libqglviewer-dev 没有可安装候选 解决方法: apt-cach ...
- LOJ #2116 Luogu P3241「HNOI2015」开店
好久没写数据结构了 来补一发 果然写的时候思路极其混乱.... LOJ #2116 Luogu P3241 题意 $ Q$次询问,求树上点的颜色在$ [L,R]$中的所有点到询问点的距离 强制在线 询 ...
- jsonp跨域ajax跨域get方法
原理: 就是利用<script >标签没有跨域限制的,从而达到与第三方网站通讯的目的.当需要通讯时,本站脚本创建一个<script>标签,src地址指向第三方网站的的一个网址. ...
- Centos6.X搭建Squid为YUM做代理
1.在能联网的机器上安装 Squid yum install squid 2.配置squid vi /etc/squid/squid.conf 编辑内容如下: http_port cache_mem ...
- 解决tomcat端口被占用:Port 8005 required by Tomcat v7.0 Server at localhost is already in use
问题提示8005端口被占用 首先:在cmd下,输入 netstat -ano|findstr 8005 (什么端口号被占用就输入什么端口号),回车 再输入 taskkill /pid 20 ...
- c4b和c4f的区别
1. cc.c4b的参数直接填rgba的值. 2 .cc.c4f(r,g,b,透明度),把rgb值填进去,会发现颜色不对,需要把rgb值除以255,所以最终转换公式是: cc.c3b(r,g,b) = ...
- (转)http authorization 基本认证
转:https://www.cnblogs.com/chenrong/articles/5818498.html http协议是无状态的, 浏览器和web服务器之间可以通过cookie来身份识别. 桌 ...