2017.10.1 蚯蚓 思考记录
来源:互联网 发布:高频交易程序员 编辑:程序博客网 时间:2024/05/19 02:24
现在看来这个题真心不难、
如果能保证一个从大到小的顺序的话,对所有的数依次进行相同比例的分裂操作,左右两边一定也是单调的
由于每次要+q,等价于取出元素-q,这在式子里是不影响大小关系的
所以就sort+queue就可以了
码:
#include<iostream>#include<cstdio>#include<queue>#include<algorithm>using namespace std;#define ll long longqueue<ll>q[4];int i,j,n,m,p,t,wz,lin[8000005];ll u,v,o,tot;bool cmp(ll a,ll b){return a>b;}int main(){scanf("%d%d%d%lld%lld%d",&n,&m,&p,&u,&v,&t);for(i=1;i<=n;i++){scanf("%lld",&lin[i]);}sort(lin+1,lin+1+n,cmp);for(i=1;i<=n;i++)q[2].push(lin[i]);for(i=1;i<=m;i++){ o=-2147483647,wz=0; for(j=1;j<=3;j++) { if(q[j].empty())continue; if(q[j].front()>o) { o=q[j].front(); wz=j;} } o+=tot;if(!(i%t)){ if(m/t*t==i)printf("%lld",o);else printf("%lld ",o); }tot+=p;q[wz].pop();q[1].push(o*u/v-tot);q[3].push(o-(o*u/v)-tot);}printf("\n");for(i=1;i<=m+n;i++){ o=-2147483647,wz=0; for(j=1;j<=3;j++) { if(q[j].empty())continue; if(q[j].front()>o) { o=q[j].front(); wz=j; } } o+=tot;if(!(i%t)){ if((m+n)/t*t==i)printf("%lld",o);else printf("%lld ",o); }q[wz].pop();}}
阅读全文
0 0
- 2017.10.1 蚯蚓 思考记录
- 2017.10.1 atcoder TK1 D 思考记录
- 2017.10.1 互不侵犯king 思考记录
- 蚯蚓
- 蚯蚓
- 蚯蚓
- 2017.10.5 高速公路 思考记录
- 2017.10.5 最短母串 思考记录
- 2017.10.6 单词 思考记录
- 2017.10.28 压缩 思考记录
- 2017.10.28 排序 思考记录
- 2017.4.1 kth_number 思考记录
- 2017.10.7 括号序列 思考记录
- 2017.10.7 弹飞绵羊 思考记录
- 2017.10.9 放棋子 思考记录
- 2017.10.10 杀人游戏 思考记录
- 2017.10.11 network 网络扩容 思考记录
- 2017.10.13 硬币游戏 思考记录
- Map原理分析
- 1040. 有几个PAT(25)
- sql 数字转换为字符
- SQL查询语句题目(二)
- NoSQL文档型数据库之MongoDb的配置与使用
- 2017.10.1 蚯蚓 思考记录
- JVM (PART VI)垃圾收集算法
- typecho安装后登录失败报错 405 Not Allowed nginx/1.10.2
- kuangbin带你飞:专题一 简单搜索 L
- uri,file,path互相转化
- 循环中setTimeout打印结果(使用闭包)
- 第四周Valid Parentheses
- 机器学习常见算法分类汇总
- NOIP 2014 飞扬的小鸟