这是蒟蒻的真·第一场CF...所以其实升了1500+还是不错吧?

A. Heist

题意:找包含给出的n个数的最短连续序列,输出新加入的数的最小个数。

分析:排序+扫描即可。

#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
typedef unsigned long long ll;ll a[5019];int main(){ll n,ans=0; cin>>n;for(int i=1;i<=n;i++) cin>>a[i];sort(a+1,a+n+1);for(int i=2;i<=n;i++)ans+=a[i]-a[i-1]-1;cout<<ans<<endl;
}

B. Buying a TV Set

题意:给出a,b,x,y,计算正整数w和h的对数,使得w≤a,h≤b,w/h=x/y。

分析:对于x、y,求二者的gcd(最大公约数),得出约分后的w/h,

确定a、b能包含的w、h倍数上界即可。

#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
typedef unsigned long long ll;//计算正整数w和h的对数,w≤a,h≤b,w/h=x/yll gcd(ll a,ll b){ll r;while(b>0){ r=a%b; a=b; b=r; }return a;
}int main(){ll a,b,x,y,ans=0; cin>>a>>b>>x>>y;ll gcds=gcd(x,y); ll dx=x/gcds,dy=y/gcds;ll cnt=min((ll)a/dx,(ll)b/dy);cout<<cnt<<endl;
}

C. Coffee Break

题意:

  • 工作日持续m分钟。期间有n分钟可以选择喝咖啡:a1,a2,......每次一分钟。
  • 每天的任意两次喝咖啡至少间隔d分钟。希望在最短时间内完成n次咖啡时间。
  • 对于每个给定的分钟,确定一天,在此期间Monocarp应该在这一分钟喝咖啡。
  • 你必须尽量减少花费的天数。 并输出每个时间对应的天数。

分析:用set维护min元素,增加天数判断可行性即可,注意每次喝咖啡需要一分钟。

#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<map>
#include<set>
using namespace std;
typedef unsigned long long ll;/*【C】
工作日持续了m分钟。工作期间有n分钟可以选择喝咖啡:a1,a2,......每次一分钟。
每天的任意两次喝咖啡至少间隔d分钟。 希望在最短的工作日内完成这些n次咖啡休息时间。
对于每个给定的分钟,确定一天,在此期间Monocarp应该在这一分钟喝咖啡休息。
你必须尽量减少花费的天数。 并输出每个时间对应的天数。 */ll a[200009];map<int,int> maps;
set<int> ss;int main(){ll n,m,d; cin>>n>>m>>d;for(ll i=1;i<=n;i++){cin>>a[i]; maps[a[i]]=0; ss.insert(a[i]);}int ans=1,cnt=0; while(!ss.empty()){set<int>::iterator it=ss.lower_bound(cnt);if(it==ss.end()) cnt=0,ans++;else{ cnt=*it+1+d, maps[*it]=ans, ss.erase(it); }}cout<<ans<<endl; for(ll i=1;i<=n;i++) cout<<maps[a[i]]<<" ";
}

D. Glider

题意:

  • 一架飞机在地面以上h米的恒定高度飞行。
  • 从飞机上跳下后,飞行员将飞向与飞机相同的方向,与x轴平行。
  • 每秒覆盖一个距离单位。当然,他也会下降,y坐标每秒减少一个单位。
  • 在某些段上有上升的气流,每个这样的段由两个数字x1、x2表示。
  • 没有两个部分共享任何共同点。当滑翔机在其中一个区段内时,他不会下降。

  • 如图:在1处跳出,他将在10点停止。在2点跳出,他将在12点停止。
  • 如果滑翔机可以选择任何整数坐标从飞机上跳起并开始飞行,
  • 则确定沿着Ox轴从滑翔机飞行开始的点到飞行结束点的最大距离。
  • 接触地面后将完全停止,因此如果第二个坐标为0,则无法滑过上升的气流段。

分析:维护两个sum数组。sum1[ ]表示气流段包含距离的前缀和,

sum2[ ]表示非气流段包含距离的前缀和(可以不用,只是为了处理方便)。

用双指针的方法维护head、tail,按照转移方程:

ans=max(ans,h+sum1[tail]-max(0,sum1[head-1]));

进行转移。注意双指针的起点和变化模式。

#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<map>
#include<set>
using namespace std;
typedef unsigned long long ll;/*【D】*/ll sum1[200019],sum2[200019];int main(){ll n,h,le,ri,lastt=0; cin>>n>>h;for(ll i=1;i<=n;i++){cin>>le>>ri; sum1[i]=sum1[i-1]+ri-le;sum2[i]=sum2[i-1]+le-lastt; lastt=ri;} ll head=0,tail=1,ans=h;while(head<=n&&tail<=n){while(sum2[tail]-sum2[head]<h&&tail<=n){ans=max(ans,h+sum1[tail]-max((ll)0,sum1[head-1])); tail++;} head++;} cout<<ans<<endl;
}

——时间划过风的轨迹,那个少年,还在等你。

Codeforces Round #509 (Div. 2) A,B,C,D 题解相关推荐

  1. 【Codeforces Round #767 (Div. 2)】 C. Meximum Array 题解

    [Codeforces Round #767 (Div. 2) ]C. Meximum Array 题解 1629C: Meximum Array 题解 [Codeforces Round #767 ...

  2. Codeforces Round #509 (Div. 2) F. Ray in the tube(思维)

    题目链接:http://codeforces.com/contest/1041/problem/F 题意:给出一根无限长的管子,在二维坐标上表示为y1 <= y <= y2,其中 y1 上 ...

  3. Codeforces Round #509 (Div. 2) D. Glider(前缀和)

    题目描述:(简化) 给出飞行员高度h,和n个上升气流区间,飞行员可从任意位置x跳下,求飞行员最大的滑行距离 题目链接:http://codeforces.com/contest/1041/proble ...

  4. Codeforces Round #744 (Div. 3)【A-D E的题解】

    目录 A. Elections[800 / 模拟] B. Make it Divisible by 25[900 / 思维] C. Save More Mice[1000 / 贪心] D1. All ...

  5. Codeforces Round #411 (Div. 1)(A~D)题解

    题目链接: #411 (Div. 1) 差点翻船. 题解: A.A. 这个推导一下,找一下规律就可以了.答案是:ans=(n+1)2−1ans=\frac{(n+1)}{2}-1. B.B. 容易发现 ...

  6. Codeforces Round #645 (Div. 2) D - The Best Vacation 题解(二分+思维)

    题目链接 题目大意 一年有n个月,每个月有d[i]天,让你找出连续x天,使其日期的总和最大,可以跨年 题目思路 这里要发现一个性质:即连续的x天一定满足最后一天在月份的结尾,结论是显然的. 然后用两个 ...

  7. Codeforces Round #641 (Div. 2) D. Orac and Medians 题解(思维)

    题目链接 题目大意 就是数组里一段数可以都变成他的中位数,问整个序列能不能变成k.可以变化很多次 题目思路 emmm,根本没什么思路,看了题解感觉根本想不到啊,但是仔细想想其实确实应该那么想. 先令a ...

  8. Codeforces Round #249 Div.2 435 BD两题题解

    B D B 给个长度最多为18的数字,交换相邻数字不超过k次,求能够产生的最大数字. 该贪心的要贪心. 很明显把大的数字换到最高位显然更好. 我们从最高位开始枚举iii,从i" role=& ...

  9. Codeforces Round #645 (Div. 2) E - Are You Fired? 题解(思维)

    题目链接 题目大意 给你一个长为n的数组前(n+1)/2个数为a[i],后面的数为x,让你求出一个长度k使其所有连续为k的数组之和都大于0 题目思路 首先要找性质,如果k满足,那么显然k*2也满足那么 ...

最新文章

  1. 微信公众平台开发(26) ACCESS TOKEN
  2. libsvm学习(二)——第一次体验libsvm(转)
  3. Java for LeetCode 206 Reverse Linked List
  4. linux磁盘管理不用LVM,[linux] LVM磁盘管理(针对xfs和ext4不同文件系统)
  5. web前端基础(08html5新标签)
  6. Iso时间转java instant,Java /将ISO-8601(2010-12-16T13:33:50.513852Z)转换为
  7. 【BZOJ-2618】凸多边形 计算几何 + 半平面交 + 增量法 + 三角剖分
  8. Python游戏开发! Mac完美安装pygame
  9. Java中的并发工具类:Semaphore基本理解和底层实现
  10. ccs安装多版本编译器离线_CCS编译器安装,DSP/BIOS安装
  11. C# image转byte[] byte[]转image
  12. 2020年易语言调用大漠插件来制作游戏脚本教程
  13. igraph基本使用方法示例
  14. hau 1031 Design T-Shirt
  15. 佛祖,你为什么不帮我
  16. DP什么意思 design pattern 设计模式 面向对象 概念大全
  17. [UE4渲染]LightPass中加入ramp图
  18. 无人机基于目标检测的路径规划任务
  19. 2022年11月编程语言排行
  20. android 点阵字体生成,点阵字体 ASCII码 汉字库 自我学习 简单总结

热门文章

  1. C语言程序设计CAP——C语言学习笔记(七) 上
  2. MyApplication
  3. 计算机三员培训个人总结,信息技术培训个人总结
  4. 这是你想要的 Go 技术 leader 吗?
  5. 用扫地机器人楼下吵吗_扫地机器人影响楼下
  6. 体验管理|关于客户旅程编排(CJO),你不知道的事!
  7. Lucene系列之全局搜索引擎入门教程
  8. 苹果手机计算机的使用技巧,IPHONE玩机技巧介绍 让你的操作更高效
  9. OpenWRT校园网ipv6设置
  10. 手把手教你学Python之Matplotlib绘图(一文掌握数据可视化库-Matplotlib)