2022.3.1
题目地址:https://codeforces.com/contest/978

目录

  • A. Remove Duplicates【模拟】
  • B. File Name【贪心 / 双指针】
  • C. Letters【前缀和+二分】
  • D. Almost Arithmetic Progression【暴力枚举】
  • E. Bus Video System【思维 贪心】
  • F. Mentors【二分】
  • G. Petya's Exams【贪心】

A. Remove Duplicates【模拟】

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],st[N],n;
set<int>s;
vector<int>ve;
int main(void)
{cin>>n;for(int i=0;i<n;i++) cin>>a[i],s.insert(a[i]);cout<<s.size()<<endl;for(int i=n-1;i>=0;i--){if(st[a[i]]) continue;ve.push_back(a[i]);st[a[i]]++;}for(int i=ve.size()-1;i>=0;i--) cout<<ve[i]<<" ";return 0;
}

B. File Name【贪心 / 双指针】


计算出一段一段的xxx…,对于每一段计算最少的删除个数,累加即可。

#include<bits/stdc++.h>
using namespace std;
int n;
string s;
int main(void)
{cin>>n>>s;if(s.find("xxx")==-1) puts("0");else{int cnt=0;for(int i=0;i<s.size();i++){if(s[i]=='x'){int j=i;while(j+1<s.size()&&s[j+1]=='x') j++;int len=j-i+1;if(len>=3) cnt+=len-2;i=j;}}cout<<cnt;}return 0;
}

C. Letters【前缀和+二分】

#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
const int N=1e5*2+10;
LL a[N],b[N],s[N],n,m;
int main(void)
{cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i],s[i]=s[i-1]+a[i];for(int i=1;i<=m;i++) {cin>>b[i];int index=lower_bound(s+1,s+n+1,b[i])-s;cout<<index<<" "<<b[i]-s[index-1]<<endl;}return 0;
}

D. Almost Arithmetic Progression【暴力枚举】


不难但是细节挺多的,枚举前两项,即可确定公差。
然后判断即可,注意原数据和等差数列的数据的差值最多为1。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5*2+10;
typedef long long int LL;
int dx[3]={0,-1,1};
int a[N],n,ans=1e9;
void solve(int x,int sum,int d)
{int b[N]={0};b[1]=x;for(int i=2;i<n;i++) b[i]=b[i-1]+d;//根据首相公差构造数组for(int i=2;i<n;i++) {int len=abs(b[i]-a[i]);if(len>1) return;//公差大于1sum+=len;} if(sum<=n) ans=min(ans,sum);//步数小于等于n
}
int main(void)
{cin>>n;for(int i=0;i<n;i++) cin>>a[i];if(n==1){ puts("0");return 0;}for(int i=0;i<3;i++){for(int j=0;j<3;j++) {int tempx=a[0]+dx[i];int tempy=a[1]+dx[j];int d=tempy-tempx;//公差solve(tempy,abs(dx[i])+abs(dx[j]),d);//a[1] 步数  公差}}if(ans<=n) cout<<ans;else cout<<-1;return 0;
}

E. Bus Video System【思维 贪心】


同过多次读题你会发现,求其前缀和就是各个站所对应的人数。
我们存一下,minv和maxv则显然问题就转化成了使这个图形向上平移。最多可以平移多少步可以使minv>=0且maxv<=m。

分为4种情况:

  • minv>=0,maxv>=0
  • minv>=0,maxv<=0(直接pass)
  • minv<=0,maxv>=0
  • minv<=0,maxv<=0
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],n,m;
int main(void)
{cin>>n>>m;int minv=1e9,maxv=-1e9,sum=0;for(int i=0;i<n;i++) cin>>a[i];for(int i=0;i<n;i++){sum+=a[i];maxv=max(maxv,sum);minv=min(minv,sum);}if(minv<-m||maxv>m) {puts("0");return 0;}if(minv>=0&&maxv>=0) cout<<m-maxv+1;else if(minv<=0&&maxv>=0){maxv+=abs(minv);if(maxv>m) puts("0");else cout<<min(m-abs(minv)+1,m-maxv+1);}else if(minv<=0&&maxv<=0){maxv+=abs(minv);if(maxv>m) puts("0");else cout<<min(m-abs(minv)+1,m-maxv+1);}return 0;
}

F. Mentors【二分】

#include<bits/stdc++.h>
using namespace std;
const int N=1e5*2+10;
int a[N],b[N],cnt[N],n,m;
int main(void)
{cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i],b[i]=a[i];sort(b+1,b+n+1);while(m--){int s1,s2; cin>>s1>>s2;if(a[s1]>a[s2]) cnt[s1]--;//将冲突的数量减去if(a[s1]<a[s2]) cnt[s2]--;//将冲突的数量减去}for(int i=1;i<=n;i++){int l=lower_bound(b+1,b+n+1,a[i])-b;//找到大于等于a[i]的下标if(b[l]>=a[i]) l--;//减去cnt[i]+=l;cout<<cnt[i]<<" ";}return 0;
}

G. Petya’s Exams【贪心】


按先结束的排序,在按先开始的排序。
然后枚举天数,贪心的模拟即可。
需要注意的一点就是题目隐含的信息是,对于每门的考试考试日必须考试这也是符合常理的。

#include<bits/stdc++.h>
using namespace std;
const int N=110;
int a[N],n,m,cnt,ans[N];
struct node{int st,ed,c,k,id;}Node[N];
bool cmp(node a,node b)
{if(a.ed==b.ed) return a.st<b.st;return a.ed<b.ed;
}
int main(void)
{cin>>n>>m;for(int i=0;i<m;i++) {cin>>Node[i].st>>Node[i].ed>>Node[i].c,Node[i].id=i+1;}sort(Node,Node+m,cmp);for(int i=1;i<=n;i++){for(int j=0;j<m;j++){if((Node[j].c==Node[j].k)&&(i==Node[j].ed)) //准备的天数够了,且是考试日{ans[i]=m+1,cnt++;break;}if(Node[j].k==Node[j].c) continue;//准备的天数够了但不是考试日。if(Node[j].st<=i&&i<Node[j].ed)//在区间内{ans[i]=Node[j].id;Node[j].k++;break;}}}if(cnt==m)//考完了m门{for(int i=1;i<=n;i++) cout<<ans[i]<<" ";}else puts("-1");return 0;
}

Codeforces Round #481 (Div. 3)【完结】相关推荐

  1. Codeforces Round #481 (Div. 3) A. Remove Duplicates

    题目地址:http://codeforces.com/contest/978/problem/A 题解:给一串长度为n的数组,然后删去相同的数字(从右往左). 方法:题目n和数组ai给的范围都很小,所 ...

  2. Codeforces Round #481 (Div. 3) F. Mentors 思维

    BUG反馈门 F. Mentors time limit per test 3 seconds memory limit per test 256 megabytes input standard i ...

  3. Codeforces Round #481 (Div. 3) F. Mentors(排序,暴力,map记忆化)

    题目 题意: 如果一个程序员比另一个程序员的能力值高,而且这两个程序员不在争吵状态,则能力值较高的程序员可以成为另一个程序员的老师,求每个程序员能成为多少其他程序员的老师. 思路: 先啥都不管,结构体 ...

  4. Codeforces Round #481 (Div. 3) F. Mentors(思维+二分)

    有 n 个程序员,每个程序员都有他的技能分数,分数严格高的可以做分数低的程序员的老师,但是有 k 对人发生过矛盾,他们不能构成师生关系,问每个人最多可以做几个人的老师 开始想的是开一个数组从 i∈[1 ...

  5. Codeforces Round #481 (Div. 3)题解

    成功掉到灰,真的心太累了,orz!!!!,不是很懂那些国外大佬为什么每次都是20多分钟AK的,QAQ A. Remove Duplicates time limit per test 1 second ...

  6. Codeforces Round #481 (Div. 3) E. Bus Video System

    E. Bus Video System Example 1 input 3 5 2 1 -3 output 3Example 2 input 2 4 -1 1 output 4Example 3 in ...

  7. C. Tyler and Strings(组合数学,树状数组维护前缀和)(Codeforces Round #775 (Div. 1, based on Moscow Open Olympiad i)

    对我来说比较困难的一题了,尝试着自己写了一下,调不出来遂放弃. Codeforces Round #775 (Div. 1, based on Moscow Open Olympiad in Info ...

  8. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  9. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

最新文章

  1. 重庆大学计算机学院就读,唐远炎(计算机学院)老师 - 重庆大学 - 院校大全
  2. ie compatibility
  3. 用友BIP|YonBuilder+APICloud 双平台,“1+1>N”的低代码战略
  4. 浏览器访问网页的详细内部过程
  5. 35岁学python爬虫_35岁码农的机器学习入门之路-python篇
  6. 装饰器python3 默认_python3【基础】-装饰器
  7. python识别_识别串口/ usb设备python
  8. Xcode10:library not found for -lstdc++.6.0.9 临时解决
  9. java生成视频缩略图
  10. laravel之生成PDF文档-TCPDF
  11. python把正整数翻译成英文_使用Python将Pig Latin翻译成英文3
  12. java中成员变量的加载时机_工作奇谈——JAVA高级特性之反射
  13. 0x80070091目录不是空的,处理方法
  14. 锂电池供电电路设计方案汇总(四款设计方案)
  15. 获取当前时间、获取当前月的第一天、获取当前年的第一天
  16. 自控力读书笔记 第八章 传染:为什么意志力会传染?
  17. AndroidInputSystem
  18. 各类后门整理!【白帽黑客必备生存技能】
  19. 设计中的确定性与不确定性思考
  20. python爬取汽车之家_python爬虫实战之爬取汽车之家网站上的图片

热门文章

  1. Py:利用pickle模块和API天气接口实现输入城市得到该城市的天气预报
  2. Py之matplotlib:python包之matplotlib库图表绘制包的简介、安装、使用方法(matplotlib颜色大全)详细攻略
  3. 洛谷——P1549 棋盘问题(2)
  4. CentOS6安装redmine
  5. 解决安装Tensorflow时的setup-tool错误
  6. C语言中函数可变参数解析
  7. nrf52832 DFU详细步骤 SDK13
  8. 简单的MapReduce实践
  9. 自然语言理解难在哪儿?
  10. Python:glob模块