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个学生的情况下,最少划分几个稳定组。

题解:

  1. 首先对数组从小到大排序。
  2. a[i+1]-a[i]>x可能有多处。
    对于每一处的断层修复至少需要(a[i+1]-a[i]-1)/x的万能学生。
    减1因为相邻之间的距离,不算边界。
  3. 利用贪心思想,断层自然先修复最小的。
  4. 假设断层有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题相关推荐

  1. Codeforces Round #727 (Div. 2)2021.6.20

    Codeforces Round #727 (Div. 2) 闲话:打完省赛打cf,很不在状态地硬撑,wa和t了几次挺傻的地方,d题五分钟云出思路脑抽了调不出来.最后c还fst了.可以算的我拿去whi ...

  2. Codeforces Round #727 (Div. 2) E. Game with Cards dp + 思维

    传送门 文章目录 题意: 思路: 题意: 初始有左右手,上面各有一个数字为000的卡牌,每次都有一个新卡kik_iki​,你可以将其放在左手或者右手,使两只手上的卡片范围在[ll,i,rl,i][l_ ...

  3. Codeforces Round #727 (Div. 2) F. Strange Array 线段树 + 区间合并 + 排序优化

    传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的数组,对每个位置iii求一个最大价值,价值计算方式如下:选择一个包含iii的[l,r][l,r][l,r],让后将其拿出来排序,之后价值 ...

  4. Codeforces Round #701 (Div. 2)赛后补题报告(A~D)

    Codeforces Round #701 (Div. 2)赛后补题报告(A~D) A. Add and Divide 原题信息 http://codeforces.com/contest/1485/ ...

  5. Codeforces Round #727 (Div. 2) 题解

    文章目录 A. Contest Start B. Love Song C. Stable Groups D. PriceFixed E. Game with Cards F. Strange Arra ...

  6. Codeforces Round #498 (Div. 3) - 赛后补题

    D. Two Strings Swaps PS:没思考清楚,重复算了一些情况. #include<bits/stdc++.h> #include<bitset> #define ...

  7. Codeforces Round #727 (Div. 2)_B. Love Song(前缀和)

    B. Love Song 不要隔天写题解,会变得不幸. 题目传送门: 题目传送门 题面截图: 题目大意: 给定长度为 n 的字符串,有 q 次询问,每次询问指定其中的一个连续子串 [ l , r ] ...

  8. Codeforces Round #750 (Div. 2)A-F1补题题解

    A **题目描述:**有 a 首 1分钟的歌,b 首 2 分钟的歌,c首 3 分钟的歌.要分在两场音乐会,问最小的差是多少. 这道题的关键是题上说a,b,c,均不为0,这样的话三种歌总能被独立的分在两 ...

  9. 贪心 双指针----Codeforces Round #727 (Div.2) D. PriceFixed

    题目链接 题目大意: 市场上有 nnn 种商品,每种商品的价格都是 222 .现在你需要买第 iii 种商品 a[i]a [ i ]a[i] 件.但是对于第 iii 种商品有一个属性 bbb ,意味着 ...

最新文章

  1. 002.iSCSI服务端配置
  2. 宏碁电脑开启虚拟化技术_开启windows电脑的cpu虚拟化(VT)图文操作步骤
  3. MATLAB实战系列(四)-导入txt文件技巧大全
  4. PRML(1)--绪论(上)多项式曲线拟合、概率论
  5. CentOS7配置ssh证书登录无效
  6. cookie和session理解
  7. 一起写框架-控制反转(Ioc)概述(二)
  8. Jvisualvm设置中文
  9. nginx报错502:connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory)
  10. 【UE4笔记】EventFunction事件和函数的区别
  11. Windows独立安装程序此更新不适用于你的计算机怎么解决?
  12. tvm relay inline pass的调研
  13. UI设计从业者,怎样才能成为月薪过万的UI设计师?
  14. 网站中图片变形如何解决
  15. Could not connect to SMTP host: smtp.***.com, port: 465, response: -1
  16. 网上书店管理系统项目【Java数据库编程实战】
  17. dp训练计划——poj3666(离散化+滚动数组优化)
  18. qq打开网页时提示用浏览器打开html,微信QQ打开网页时提示用浏览器打开
  19. 计算机应用英文怎么说,电脑用英文怎么写?
  20. 关于嵌入式系统开发工程师相关问题解答

热门文章

  1. 37岁Java程序员求职6K+职位被怼,你怎么看?
  2. fiddler手机抓包配置方法
  3. PMP - 活动持续时间估算题
  4. torchtext Filed 方法报错解决办法
  5. html5中插入样式表方法,如何插入css样式?
  6. 让老公“寒心”的对话 (转)
  7. python安装包的时候报错 ERROR: Exception: Traceback (most recent call last): File “C:\Users\
  8. 取消pycharm双击shift出现搜索框,但新版找不到ide.suppress.double.click.handler的问题解决
  9. 网页上做笔记--Diigo
  10. 浏览器突然不能上网,DNS问题