A. New Bus Route

题目大意:给出n个不同的数,问差值最小的数有几对。(n<=200,000)

思路:排序一下,差值最小的一定是相邻的,直接统计即可。

#include<cstdio>
#include<algorithm>
using namespace std;
char B[1<<26],*S=B,C;int X,F;
inline int read()
{for(F=1;(C=*S++)<'0'||C>'9';)if(C=='-')F=-1;for(X=C-'0';(C=*S++)>='0'&&C<='9';)X=(X<<3)+(X<<1)+C-'0';return X*F;
}
#define MN 200000
int a[MN+5];
int main()
{fread(B,1,1<<26,stdin);int n=read(),i,mn=0x7FFFFFFF,cnt=0;for(i=1;i<=n;++i)a[i]=read();sort(a+1,a+n+1);for(i=1;i<n;++i){a[i]=a[i+1]-a[i];if(a[i]<mn)mn=a[i],cnt=0;if(a[i]==mn)++cnt;}printf("%d %d",mn,cnt);
}

B. Counting-out Rhyme

题目大意:n个人站成一圈,一开始第1个人是首领,k次操作,每次首领向后数ai个人让那个人滚蛋并使这个人的后一个人变成首领,求每次谁滚蛋了。(1<=k<n<=100,ai<=10^9)

思路:ai对当前剩余人数取模后模拟。

#include<cstdio>
char B[1<<26],*S=B,C;int X;
inline int read()
{while((C=*S++)<'0'||C>'9');for(X=C-'0';(C=*S++)>='0'&&C<='9';)X=(X<<3)+(X<<1)+C-'0';return X;
}
#define MN 100
int u[MN+5];
int main()
{fread(B,1,1<<26,stdin);int n,k,i,x,s=0;n=read();k=read();for(i=0;i<k;++i){for(x=read()%(n-i)+1;x--;)while(u[++s>n?s=1:s]);u[s]=1;printf("%d ",s);}
}

C. Divide by Three

题目大意:给定一个长度为n的数字串,求一个最长的子序列满足没有前导0且是3的倍数。(n<=100,000)

思路:上过小学的都知道3的倍数各位数字和也是3的倍数。从后往前枚举哪个数字作为最后子序列的第一位数字,求出这个后缀各位之和模3的值,还有这一位后面有几个模3等1和模3等2的数,分情况判断即可。

#include<cstdio>
#include<cstring>
#define MN 100000
char s[MN+5];
int main()
{int n,i,f=0,f1=0,f2=0,ans=-1,p,pf1,pf2;scanf("%s",s+1);n=strlen(s+1);for(i=n;i;--i){f=(f+(s[i]-='0'))%3;if(s[i]){if(!f&&(ans<0||i<=ans))ans=i-1,p=i,pf1=pf2=0;if(f==1&&f1&&(ans<0||i<ans))ans=p=i,pf1=1,pf2=0;if(f==1&&f2>1&&(ans<0||i+1<ans))ans=i+1,p=i,pf1=0,pf2=2;if(f==2&&f2&&(ans<0||i<ans))ans=p=i,pf1=0,pf2=1;if(f==2&&f1>1&&(ans<0||i+1<ans))ans=i+1,p=i,pf1=2,pf2=0;}else if(ans<0)ans=-2;if(s[i]%3==1)++f1;if(s[i]%3==2)++f2;}if(ans<-1)return 0*puts("0");if(ans<0)return 0*puts("-1");for(printf("%d",s[i=p]);++i<=n;)if(s[i]%3==1&&pf1)--pf1;else if(s[i]%3==2&&pf2)--pf2;else printf("%d",s[i]);
}

D. Paths in a Complete Binary Tree

题目大意:有一棵n个节点的满二叉树,节点标号为中序遍历,每次询问一个点,经过一串操作后在哪个点,操作有U,L,R,分别为走向父亲和左右儿子。(n<=10^18,操作总长<=10^5)

思路:我觉得转成先序遍历后再转回来比较直观,具体实现看下面的代码。

#include<cstdio>
#include<iostream>
using namespace std;
#define ll long long
#define MN 100000
char s[MN+5];
ll find(ll x,ll n,ll k)
{n>>=1;if(k<=n)return find(x<<1,n,k);if(k-=n+1)return find(x<<1|1,n,k);return x;
}
ll query(ll x,ll n)
{int cnt=0,a[100];ll ans=0;while(x>1)a[cnt++]=x&1,x>>=1;while(cnt--){n>>=1;if(a[cnt])ans+=n+1;}return ans+1+(n>>1);
}
int main()
{ll n,x;int q,i;cin>>n>>q;while(q--){cin>>x;scanf("%s",s);x=find(1,n,x);for(i=0;s[i];++i){if(s[i]=='U'&&x>1)x>>=1;if(s[i]=='L'&&x<<1<n)x<<=1;if(s[i]=='R'&&x<<1<n)x=x<<1|1;}cout<<query(x,n)<<endl;}
}

E. Colored Balls

题目大意:给出n个数ai,问把这些数字拆成若干个相差不超过1的数字最少拆几个。(n<=500,ai<=10^9)

思路:设最后全部拆成x和x-1,对于每个ai,符合条件的x满足x能整除ai或ai/x不小于x-1-ai%x,而对于每个ai,合法的x只有O(ai^0.5)种,枚举x<=ai^0.5,暴力check x,ai/x,ai/x-1,ai/x+1即可。复杂度O(n*ai^0.5)。

#include<cstdio>
#include<algorithm>
using namespace std;
#define MN 500
int n,a[MN+5];
long long ans=1LL<<60;
void cal(int x)
{if(!x)return;long long sum=0;for(int i=1;i<=n;++i){if(a[i]%x==0||(a[i]/x>=x-1-a[i]%x))sum+=a[i]/x+bool(a[i]%x);else return;}ans=min(ans,sum);
}
int main()
{int i;scanf("%d",&n);for(i=1;i<=n;++i)scanf("%d",&a[i]);for(i=1;i*i<=a[1];++i)cal(i),cal(a[1]/i),cal(a[1]/i-1),cal(a[1]/i+1);printf("%I64d",ans);
}

转载于:https://www.cnblogs.com/ditoly/p/ECR18.html

Educational Codeforces Round 18相关推荐

  1. Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

    Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...

  2. Educational Codeforces Round 24 E. Card Game Again(双指针)

    题目链接:Educational Codeforces Round 24 E. Card Game Again 题意: 给你n个数和一个数k. 现在每次可以拿掉前x个数,后y个数,剩下的数的乘积要能被 ...

  3. Educational Codeforces Round 25 G. Tree Queries

    题目链接:Educational Codeforces Round 25 G. Tree Queries 题意: 给你一棵树,一开始所有的点全是黑色,有两种操作. 1 x 将x这个点变为黑色,保证第一 ...

  4. Educational Codeforces Round 61 (Rated for Div. 2)(A、B、C、D、E、F)

    欢迎访问本菜鸡的独立博客:Codecho 比赛名称 Educational Codeforces Round 61 (Rated for Div. 2) 比赛链接 https://codeforces ...

  5. [Educational Codeforces Round 16]A. King Moves

    [Educational Codeforces Round 16]A. King Moves 试题描述 The only king stands on the standard chess board ...

  6. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  7. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  8. Educational Codeforces Round 32

    http://codeforces.com/contest/888 A Local Extrema[水] [题意]:计算极值点个数 [分析]:除了第一个最后一个外,遇到极值点ans++,包括极大和极小 ...

  9. Educational Codeforces Round 37 (Rated for Div. 2) 1

    Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...

最新文章

  1. c语言作业集答案,C语言习题集及答案
  2. c++中的list用法
  3. M 点滑动平均 Python 实现
  4. Take Your Seat Gym - 102222D
  5. 如何开始使用任何类型的数据? - 第1部分
  6. 电感检测_三、电感线圈的识别与检测(二)
  7. NumPy Beginner's Guide 2e 带注释源码 四、NumPy 便利的函数
  8. vue 中引入使用jquery
  9. 为什么我只贴代码不给你们源码?
  10. HTC全景视频,2D 3D视频播放器下载教程
  11. hcie到底是个啥 ?
  12. 计算机网络-网络安全
  13. 看电脑头痛计算机专业,看电脑头疼怎么回事
  14. 罗夏墨迹测验(转载)
  15. 生物信息-学习从NCBI上下载数据
  16. Python——爬取某瓣电影评论信息并生成词云图
  17. 入侵检测---IDS
  18. CAS操作与ABA问题
  19. SystemVerilog HVL:面向对象编程(Object Oriented Programming, OOP)
  20. 面试经典--两个房间 每间房间三盏灯

热门文章

  1. vue.js v-if
  2. d3 选择元素 api
  3. Python 绘图 Matplotlib 快速参考手册
  4. 太阳的光和灯光有什么区别_防蓝光眼镜的原理是什么,为什么这么多人用?
  5. 网站如何和服务器匹配,匹配服务器
  6. vSphere 故障排错思路总结
  7. CVE-2020-16875: Microsoft Exchange远程代码执行漏洞通告
  8. Veeam FAQ系列转载(三)
  9. PostgreSQL学习总结(3)—— PostgreSQL 数据类型
  10. Redis学习总结(14)——图解redis五种数据结构底层实现(动图版)