Codeforces Round #515 (Div. 3)【未完结】
2022.3.9
题单地址:https://codeforces.com/contest/1066
目录
- A. Vova and Train【思维】
- B. Heaters【贪心】
- C. Books Queries【模拟链表】
- D. Boxes Packing【贪心】
- E. Binary Numbers AND Sum【思维 前缀和】
A. Vova and Train【思维】
#include<bits/stdc++.h>
using namespace std;
int main(void)
{int t; cin>>t;while(t--){int L,v,l,r; cin>>L>>v>>l>>r;int cnt=L/v;int cnt1=r/v;int cnt2=(l-1)/v;cout<<max(0,cnt-(cnt1-cnt2))<<endl;}return 0;
}
B. Heaters【贪心】
题目理解错了,导致一直wa。题目的意思是1的点可以点亮。点亮最少的1,覆盖整个区间。
我一开始理解错了以为是1的点就是热的,可以不用管,其实不然。
贪心思路: 尽可能的向右找1,右边找不到,左边找。都找不到则无解。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],n,r;
int main(void)
{cin>>n>>r;for(int i=1;i<=n;i++) cin>>a[i];int cnt=0;for(int i=1;i<=n;i++){int pos=-1;for(int j=i;j<=i+r-1&&j<=n;j++) if(a[j]) pos=j;//右边找if(pos!=-1){cnt++,i=pos+r-1;continue;}pos=-1;for(int j=max(1,i-r+1);j<=i;j++) if(a[j]) pos=j;//左边找if(pos==-1) {puts("-1");return 0;}cnt++,i=pos+r-1;if(i>=n) break;}cout<<cnt;return 0;
}
C. Books Queries【模拟链表】
#include<bits/stdc++.h>
using namespace std;
int n,l=0,r=1;
map<int,int>mp;
int main(void)
{cin>>n;while(n--){char op;int id;cin>>op>>id;if(op=='L') mp[id]=l--;else if(op=='R') mp[id]=r++;else{int len1=mp[id]-(l+1);int len2=r-1-mp[id];cout<<min(len1,len2)<<endl;}}return 0;
}
D. Boxes Packing【贪心】
题目的意思是说,我们要将最后的一次全部拿走。那么倒着来就行了。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5*4+10;
int a[N],n,m,k;
int main(void)
{cin>>n>>m>>k;for(int i=0;i<n;i++) scanf("%d",&a[i]);int sum=0,cnt=1,ans=0;for(int i=n-1;i>=0;i--){if(a[i]>k) break;if(sum+a[i]>k) {if(cnt<m){sum=a[i],cnt++,ans++;}else break;}else sum+=a[i],ans++;if(cnt>m) break;}cout<<ans;return 0;
}
E. Binary Numbers AND Sum【思维 前缀和】
对于每一个1计算前面有多少个1。即只要计算贡献就好了。
#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
const int mod=998244353;
const int N=1e5*3+10;
int n,m,s[N];
string a,b;
int main(void)
{cin>>n>>m;cin>>a>>b;reverse(a.begin(),a.end());reverse(b.begin(),b.end());a="0"+a,b="0"+b;for(int i=m;i>=1;i--){s[i]=s[i+1];if(b[i]=='1') s[i]++;}LL sum=0;for(LL i=1,j=1;i<=n;i++,j=j*2%mod)if(a[i]=='1') sum=(sum+j*s[i])%mod;cout<<sum;return 0;
}
Codeforces Round #515 (Div. 3)【未完结】相关推荐
- Codeforces Round #486 (Div. 3)【完结】
2022.3.2 题单地址:https://codeforces.com/contest/988 目录 A. Diverse Team[模拟] B. Substrings Sort[暴力枚举] C. ...
- Codeforces Round #498 (Div. 3)【完结】
2022.3.6 题单地址:https://codeforces.com/contest/1006 目录 A. Adjacent Replacements B. Polycarp's Practice ...
- Codeforces Round #490 (Div. 3)【完结】
2022.3.3 题单地址:https://codeforces.com/contest/999 目录 A. Mishka and Contest[模拟] B. Reversing Encryptio ...
- Codeforces Round #481 (Div. 3)【完结】
2022.3.1 题目地址:https://codeforces.com/contest/978 目录 A. Remove Duplicates[模拟] B. File Name[贪心 / 双指针] ...
- Codeforces Round #479 (Div. 3)【完结】
2022.2.28 开始复盘div3 题目链接:https://codeforces.com/contest/977 目录 A. Wrong Subtraction[签到模拟题] B. Two-gra ...
- Codeforces Round #108 (Div. 2)
Codeforces Round #108 (Div. 2) C. Pocket Book 题意 给定\(N(N \le 100)\)个字符串,每个字符串长为\(M(M \le 100)\). 每次选 ...
- Codeforces Round #715 (Div. 1) C. Complete the MST 补图 + 思维 + 最小生成树
传送门 文章目录 题意: 思路 题意: 给你一张nnn个点mmm个边的图,mmm条边是给定的,要求你给未给定的边赋值一个边权,使得所有边权异或和为000,求所有满足这种情况的图中最小生成树边权和最小的 ...
- CodeCraft-21 and Codeforces Round #711 (Div. 2)
CodeCraft-21 and Codeforces Round #711 (Div. 2) 题号 题目 考点 A GCD Sum 签到,模拟 B Box Fitting 贪心 C Planar R ...
- Codeforces Round #700 (Div. 2)A~D2解题报告
Codeforces Round #700 (Div. 2)A~D2解题报告 A Yet Another String Game 原题链接 http://codeforces.com/contest/ ...
最新文章
- 每天2小时,吃透 985博士总结的这份保姆级TensorFlow + PyTorch笔记(20G高清/PPT/代码)...
- 每天工作四小时的程序员-转
- 使用php与mysql构建我们的网站
- 文巾解题 1418. 点菜展示表
- P3911 最小公倍数之和
- 【好文链接】什么是光流
- python 列表和字段的相关函数
- ubuntu18设置屏幕旋转_无线电对讲机,常用电台上中继台设置
- matlab 不同函数间传递结构体数据_VC与Matlab混合编程及复杂数据:结构体传递
- Android Studio 修改app名字和图标
- 【Mybatis】TKMybatis 介绍和使用
- win10设置透明任务栏
- 解决网页微信扫码登录报40163
- 关于我的大学ACM江湖
- JavaScrpit+Html实现日期时间启动、停止操作(应用场景:计时器、秒表)
- C++ 直接计算多项式的值
- 高分七号(GF-7)
- R语言学习记录:聚类分析的R实现
- Excel出现“向程序发送命令时出现问题”错误
- 易飞ERP与PDM集成方法