2020 GDUT Rating Contest III (Div2)

A Wormhole Sort
题意:
给出N个打乱顺序的数,和M条边(a,b,c)表示在a位置的数可以和在b位置的数交换,这条边的大小是c,问要使这组数恢复升序需要经过的大小最小的最大的边是多大。

解题思路:
直接二分答案,通过把大小大于等于答案的边用来连成一个连通块,看乱序的点是否在同一个连通块来判断该答案是否合法。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
struct node{int from,to,size;
}edge[100005];
int cow[100005],f[100005];
int n;
bool cmp(node a,node b){return a.size>b.size;
}
int father(int u){return f[u]==u?u:f[u]=father(f[u]);
}
void merge(int x,int y){int fx=father(x),fy=father(y);f[fx]=f[fy];return;
}
bool check(int x){for (int i=1;i<=n;i++)f[i]=i;for (int i=1;i<=x;i++)merge(edge[i].from,edge[i].to);for (int i=1;i<=n;i++)if (father(i)!=father(cow[i])) return false;return true;
}
int main(){int m;scanf("%d %d",&n,&m);bool flg=true;for (int i=1;i<=n;i++){scanf("%d",&cow[i]);if (cow[i]!=i) flg=false;}for (int i=1;i<=m;i++)scanf("%d %d %d",&edge[i].from,&edge[i].to,&edge[i].size);if (flg) {printf("-1\n");return 0;}sort(edge+1,edge+m+1,cmp);int l=0,r=m;while (r-l>1){int mid=(l+r)/2;if (check(mid)) r=mid;else l=mid;}printf("%d\n",edge[r].size);return 0;
}

B Loan Repayment
题意:
John欠了N加仑牛奶需要在K天内还清,他每天会最少还M加仑牛奶。在已经还了G加仑奶之后,对于一个正整数X,John会每天还max((N-G)/X,M)加仑奶。
求X的最大值。
1<=N,M,K<=1e12

解题思路:
二分答案,如果直接模拟的话会出现连续很多天给Y加仑奶的情况导致超时,所以只要用数学优化一下模拟的过程,让每次换奶的时候Y的值都会发生变化即可。

#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<iostream>
using namespace std;
long long n,k,m;
bool check(long long x){long long cnt=1LL*k*m;long long g=0,d;long long y=n/x;int t=0;while (y>m&&t<=k){if (ceil(1.0*(n-y*x-g)/y)+t<=k) d=ceil(1.0*(n-y*x-g)/y+0.000000000000001);else d=k-t+1;t+=d;g+=y*d;cnt+=(y-m)*d;if (cnt>=n) return true;y=(n-g)/x;}return false;
}
int main(){scanf("%lld %lld %lld",&n,&k,&m);long long l=1,r=1e12+1;while (r-l>1){long long mid=(l+r)/2;if (check(mid)) l=mid;else r=mid;}printf("%lld\n",l);return 0;
}

D Race
题意:
Bessie要跑K米,她每个时刻可以加速1或者减速1或者匀速跑,她结束跑步时速度不能高于X,现在给出N个X,问每个X对应需要的结束跑步的时间。

解题思路:
二分找最大速度,然后模拟一下算出时间即可。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int q,len,n,k;
bool check(long long x)
{long long a=1LL*(1+x)*x/2;long long b;if (x<q) b=0;else b=(q+x-1)*(x-q)/2;len=a+b;if (a+b<=k) return true;else return false;
}
int main(){scanf("%d %d",&k,&n);int ans;for (int i=1;i<=n;i++){scanf("%d",&q);int l=1,r=1000000;while (l<=r){int mid=(l+r)/2;if (check(mid)){ans=mid;l=mid+1;}else r=mid-1;}bool x=check(ans);long long t=ans;if (ans>=q) t+=ans-q;long long last=k-len;if (last!=0){t+=last/ans;if (last%ans!=0) t++;} printf("%lld\n",t);}
}

E.Word Processor
题意:
给出一个有N个单词的句子。要求拆成每行不超过K个字母输出(不能拆开完整的单词)。

解题思路:
直接判每个单词长度,如果符合要求就输出。

#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<iostream>
using namespace std;
int main(){int n,k;string s[105];scanf("%d%d",&n,&k);for (int i=1;i<=n;i++)cin>>s[i];for (int i=1;i<=n;){int cnt=s[i].size();int j=i+1;while (cnt+s[j].size()<=k&&j<=n) {cnt+=s[j].size();j++;}for (int k=i;k<j;k++)cout<<s[k]<<" ";printf("\n");i=j;}
}

H:Photoshoot
题意:
给长为N-1个数列a,求无相同元素的数列B使得对于1到n-1都有b[i]+b[i+1]=a[i],且对于所有的b[i]有1<=b[i]<=N。输出字典序最小的方案

解题思路:
直接从1开始枚举b[1]即可,找到第一种符合的方案就是字典序最小的方案。

#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<iostream>
using namespace std;
int n;
int a[1005],b[1005];
bool vis[1005];
bool check(int x){memset(vis,false,sizeof(vis));a[1]=x;vis[x]=true;for (int i=1;i<n;i++){if (b[i]-a[i]<=0||b[i]-a[i]>n) return false;if (vis[b[i]-a[i]]) return false;a[i+1]=b[i]-a[i];vis[b[i]-a[i]]=true;}return true;
}
int main(){scanf("%d",&n);for (int i=1;i<n;i++)scanf("%d",&b[i]);for (int i=1;i<b[1];i++)if (check(i)){for (int j=1;j<=n;j++)printf("%d ",a[j]);return 0;}
}

2020 GDUT Rating Contest III (Div2)相关推荐

  1. 2020 GDUT Rating Contest III (Div. 2) B - Loan Repayment 题解

    原题 题目大意 给出NNN,KKK,MMM,假定已经给了GGG加仑奶,定义N−GX\frac{N-G}{X}XN−G​为YYY,YYY最小为MMM,在KKK天后至少给NNN加仑奶,求最大的XXX. 题 ...

  2. 2020 GDUT Rating Contest III H. Photoshoot

    H. Photoshoot 链接 题目描述 有n头牛,他们的序号从为1-n,现在他们按一定顺序排好,给出每对相邻的两头牛的序号之和,求出牛现在的序号. 题目分析 因为确定其中一头牛的序号,就可以得出所 ...

  3. 2020 GDUT Rating Contest I (Div. 2) A.Cow Gymnastics

    来源 codeforces 2020 GDUT Rating Contest I (Div. 2) 题目: A. Cow Gymnastics In order to improve their ph ...

  4. 2020 GDUT Rating Contest II (Div. 2) A. Fence Planning

    来源 codeforces 2020 GDUT Rating Contest II (Div. 2) CF链接 题目: Farmer John's N cows, conveniently numbe ...

  5. 2020 GDUT Rating Contest I A. Cow Gymnastics

    A. Cow Gymnastics 链接 题目描述 有n头牛一起参加了k次比赛,给出k次比赛的排名,问共有几组牛满足 其中一头牛每次比赛都比另一头厉害. 题目分析 由于数据量比较小(1<=k&l ...

  6. 2020 GDUT Rating Contest I (Div. 2) A - Cow Gymnastics 题解

    好吧--是时候补一下题解了 原题 题目大意 给出n只牛,k次排序,如果有一只牛一直比另外一只牛更前算作一对,输出一共有多少对. 题目分析 水题(数据规模小),一开始初始化全部都可以,然后一个个删去就行 ...

  7. 2020年育婴员(五级)报名考试及育婴员(五级)模拟考试题

    题库来源:安全生产模拟考试一点通公众号小程序 2020年育婴员(五级)报名考试及育婴员(五级)模拟考试题,包含育婴员(五级)报名考试答案和解析及育婴员(五级)模拟考试题练习.由安全生产模拟考试一点通公 ...

  8. 2020中国大学生程序设计竞赛(CCPC) - 网络选拔赛 1005 Lunch (杭电 6892)

    2020中国大学生程序设计竞赛(CCPC) - 网络选拔赛 1005 Lunch (杭电 6892)(类尼姆博弈) #include<cstdio> #include<iostrea ...

  9. 2020年煤矿采煤机(掘进机)操作找答案及煤矿采煤机(掘进机)操作模拟考试题

    题库来源:安全生产模拟考试一点通公众号小程序 2020年煤矿采煤机(掘进机)操作找答案及煤矿采煤机(掘进机)操作模拟考试题,包含煤矿采煤机(掘进机)操作找答案答案和解析及煤矿采煤机(掘进机)操作模拟考 ...

最新文章

  1. UTF-8和Unicode
  2. Python -- xlrd,xlwt,xlutils 读写同一个Excel
  3. python渲染光线_python模板渲染配置文件
  4. (二)ElasticSearch6.1.1 Python API
  5. LeetCode547. Friends Circles 利用union find | bfs | dfs三种方法解决
  6. python大一基础题_python基础练习题
  7. Java快速入门学习笔记9 | Java语言中的方法
  8. 反射机制在JDBC连接中的使用
  9. sonarqube使用maven进行代码分析
  10. 基于虚拟帐号的邮件系统extmail(1)
  11. linux服务器怎么连接
  12. 1分钟获取上千ID,暴力破解、端口扫描、拖库攻击如何防范
  13. vb.net操作excel文件
  14. 使用nginx 和 switchhost实现自定义域名指向本地服务
  15. Unicode program converted
  16. 爬虫实战【6】Ajax内容解析-今日头条图集
  17. linux中搜索文件内容关键字
  18. 2015年校园招聘12家IT公司面试体验
  19. Win10系统怎么卸载软件
  20. 郁闷的出纳员 (splay) 题解

热门文章

  1. 《python数据分析与挖掘实战》笔记第5章
  2. “疫情”防控时期大势所趋,智慧社区尽显“智慧”迎来新的发展热潮
  3. (正则表达式三行) 假设有一段英文,其中有单词中间的字母i误写为I,请编写程序进行纠正。
  4. python123测验9程序题_python函数题
  5. javac 编译源文件出现java:1: 需要为 class、interface 或 enum、 [javac] 锘縫错误
  6. 3. codeblocks导入一个存在的项目
  7. Pro ASP.NET MVC 3 Framework 译文(一)
  8. 2019年小说精品整理免费API接口
  9. 网络安全管理员_三级_操作技能考核解题过程(1)
  10. Swift 读取,处理Json数据