Codeforces Round #727 (Div. 2) A~D题
Codeforces提交链接
A题:Contest Start
题意:
k组样例。
每行3个整数,n,x,t。
n个人考试。
第1个人在 0 时刻开始考试,
第2个人在 x 时刻开始考试,
第3个人在 2*x 时刻开始考试,
…
每个人都需要花费t时间才能完成考试。
求所有人的不满意度总和。
某人的不满意度的计算:
假设某人在m时刻开始考试,在[m,m+t]内有几个人在考试就是他的不满意度(不算自己)。
题解:
人的编号: 1 2 3 4 5 6
开始时刻: 0 x 2*x 3*x 4*x 5*x
结束时刻: t x+t 2*x+t 3*x+t 4*x+t 5*x+t
观察发现:结束时刻永远是开始时间+t,
因此对于任意一个人来讲,w=t/x,w就表示他后面有w个人与他一同在考试,即w就是他的不满意度。
情况1:编号在[1,n-m]:
——每个人的不满度都为w。sum1=(n-m)*w。
情况2:编号在[n-w+1,n]:
——第(n-w+1)个人时,他的后面没有w个人。因此再求sum2:(w-1)~0的和。
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long ll;
int main()
{int k;scanf("%d",&k);while(k--){ll n,x,t;scanf("%lld %lld %lld",&n,&x,&t);ll w=t/x;ll sum1=0,sum2=0; if(w>=n-1)//w过大,只有情况2sum2=n*(n-1)/2;else{ll p=n-w;sum1=p*w;sum2=w*(w-1)/2;}printf("%lld\n",sum1+sum2);}return 0;
}
B题:Love Song
题解:
——水题,前缀和思想。
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=1e6+1100;
char a[N];
int b[N];
ll sum[N];
int main()
{int n,m,cnt=0;scanf("%d %d %s",&n,&m,a+1);for(int i=1;i<=n;i++)b[i]=a[i]+1-'a';sum[0]=0;for(int i=1;i<=n;i++)sum[i]=sum[i-1]+b[i]; while(m--){int l,r;scanf("%d %d",&l,&r);printf("%lld\n",sum[r]-sum[l-1]);}return 0;
}
C题:Stable Groups
题意:
n个学生,水平为ai。
现要对n个学生进行划分稳定组。
即每个稳定组内学生水平经过排序后,相邻水平不得大于x。
但老师手上另外有k个万能学生,即水平可随意变化。
问在借助这k个学生的情况下,最少划分几个稳定组。
题解:
- 首先对数组从小到大排序。
- a[i+1]-a[i]>x可能有多处。
对于每一处的断层修复至少需要(a[i+1]-a[i]-1)/x的万能学生。
减1因为相邻之间的距离,不算边界。 - 利用贪心思想,断层自然先修复最小的。
- 假设断层有cnt处,cnt+1单独的个体。
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=2e5+1100;
ll a[N],b[N];
int main()
{ll n,k,x;scanf("%lld %lld %lld",&n,&k,&x);for(int i=1;i<=n;i++)scanf("%lld",&a[i]);sort(a+1,a+1+n);ll cnt=0;for(int i=2;i<=n;i++){if(a[i]-a[i-1]>x)b[++cnt]=(a[i]-a[i-1]-1)/x;}sort(b+1,b+1+cnt);ll ans=cnt+1;for(int i=1;i<=cnt;i++){if(k>=b[i]){k-=b[i];ans--;}}printf("%lld\n",ans);return 0;
}
D:PriceFixed
题意:
Lena的一个节省的女孩,因此她的父亲派她去买东西。
可认为只有一家商店。
该商店规则:
所有产品每件2元,每件产品无限量。
当已购的所有产品总数量等于该产品所规定的打折数量时,
再购买该产品,该产品价格为1元。
购物清单:
n个产品:
ai,bi。
ai表示需购买该产品需要ai个,
bi表示当已购所有产品总数量等于bi时,该产品售价为1元。
参考博客:欣君
题解:
易知:一件产品打折所需的已购总数量越多的话,该产品越不容易被打折。
因此:
对于易打折的产品,采取一元购的措施,当不满足打折要求时,购买难打折的产品来为其凑数量。
对b排序,接着采取双指针遍历。
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=1e5+1100;
struct Node{ll a,b;
}q[N];
bool cmp(Node x,Node y){ return x.b<y.b;
}
int main()
{ll n;scanf("%lld",&n);for(int i=1;i<=n;i++)scanf("%lld %lld",&q[i].a,&q[i].b);sort(q+1,q+1+n,cmp);ll l=1,r=n,sum=0,cnt=0,cha=0; while(l<=r){if(q[l].b<=cnt){cnt+=q[l].a;sum+=q[l].a;++l;}else{//为了低价购买易打折的q[l].a个产品 //需高价购买难打折产品cnt-q[l].a个 cha=min(q[r].a,q[l].b-cnt);cnt+=cha;sum+=2*cha;q[r].a-=cha;if(q[r].a==0)--r;}}printf("%lld\n",sum);return 0;
}
Codeforces Round #727 (Div. 2) A~D题相关推荐
- Codeforces Round #727 (Div. 2)2021.6.20
Codeforces Round #727 (Div. 2) 闲话:打完省赛打cf,很不在状态地硬撑,wa和t了几次挺傻的地方,d题五分钟云出思路脑抽了调不出来.最后c还fst了.可以算的我拿去whi ...
- Codeforces Round #727 (Div. 2) E. Game with Cards dp + 思维
传送门 文章目录 题意: 思路: 题意: 初始有左右手,上面各有一个数字为000的卡牌,每次都有一个新卡kik_iki,你可以将其放在左手或者右手,使两只手上的卡片范围在[ll,i,rl,i][l_ ...
- Codeforces Round #727 (Div. 2) F. Strange Array 线段树 + 区间合并 + 排序优化
传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的数组,对每个位置iii求一个最大价值,价值计算方式如下:选择一个包含iii的[l,r][l,r][l,r],让后将其拿出来排序,之后价值 ...
- Codeforces Round #701 (Div. 2)赛后补题报告(A~D)
Codeforces Round #701 (Div. 2)赛后补题报告(A~D) A. Add and Divide 原题信息 http://codeforces.com/contest/1485/ ...
- Codeforces Round #727 (Div. 2) 题解
文章目录 A. Contest Start B. Love Song C. Stable Groups D. PriceFixed E. Game with Cards F. Strange Arra ...
- Codeforces Round #498 (Div. 3) - 赛后补题
D. Two Strings Swaps PS:没思考清楚,重复算了一些情况. #include<bits/stdc++.h> #include<bitset> #define ...
- Codeforces Round #727 (Div. 2)_B. Love Song(前缀和)
B. Love Song 不要隔天写题解,会变得不幸. 题目传送门: 题目传送门 题面截图: 题目大意: 给定长度为 n 的字符串,有 q 次询问,每次询问指定其中的一个连续子串 [ l , r ] ...
- Codeforces Round #750 (Div. 2)A-F1补题题解
A **题目描述:**有 a 首 1分钟的歌,b 首 2 分钟的歌,c首 3 分钟的歌.要分在两场音乐会,问最小的差是多少. 这道题的关键是题上说a,b,c,均不为0,这样的话三种歌总能被独立的分在两 ...
- 贪心 双指针----Codeforces Round #727 (Div.2) D. PriceFixed
题目链接 题目大意: 市场上有 nnn 种商品,每种商品的价格都是 222 .现在你需要买第 iii 种商品 a[i]a [ i ]a[i] 件.但是对于第 iii 种商品有一个属性 bbb ,意味着 ...
最新文章
- 002.iSCSI服务端配置
- 宏碁电脑开启虚拟化技术_开启windows电脑的cpu虚拟化(VT)图文操作步骤
- MATLAB实战系列(四)-导入txt文件技巧大全
- PRML(1)--绪论(上)多项式曲线拟合、概率论
- CentOS7配置ssh证书登录无效
- cookie和session理解
- 一起写框架-控制反转(Ioc)概述(二)
- Jvisualvm设置中文
- nginx报错502:connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory)
- 【UE4笔记】EventFunction事件和函数的区别
- Windows独立安装程序此更新不适用于你的计算机怎么解决?
- tvm relay inline pass的调研
- UI设计从业者,怎样才能成为月薪过万的UI设计师?
- 网站中图片变形如何解决
- Could not connect to SMTP host: smtp.***.com, port: 465, response: -1
- 网上书店管理系统项目【Java数据库编程实战】
- dp训练计划——poj3666(离散化+滚动数组优化)
- qq打开网页时提示用浏览器打开html,微信QQ打开网页时提示用浏览器打开
- 计算机应用英文怎么说,电脑用英文怎么写?
- 关于嵌入式系统开发工程师相关问题解答
热门文章
- 37岁Java程序员求职6K+职位被怼,你怎么看?
- fiddler手机抓包配置方法
- PMP - 活动持续时间估算题
- torchtext Filed 方法报错解决办法
- html5中插入样式表方法,如何插入css样式?
- 让老公“寒心”的对话 (转)
- python安装包的时候报错 ERROR: Exception: Traceback (most recent call last): File “C:\Users\
- 取消pycharm双击shift出现搜索框,但新版找不到ide.suppress.double.click.handler的问题解决
- 网页上做笔记--Diigo
- 浏览器突然不能上网,DNS问题