csp-c模拟测试43「A·B·C」
时间:2019-09-15
本文章向大家介绍csp-c模拟测试43「A·B·C」,主要包括csp-c模拟测试43「A·B·C」使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
A
题解
代码
B
题解
代码
C
题解
三分,对于怎么看出来三分,这可能是个套路,你觉得这个题你用贪心做不了(但非常像贪心),二分答案会被hack,然后你$dp$也难以做,你三分就可以了
三分$check$贪心做,很水,我会说
代码
/* n*log^2 */ #include<bits/stdc++.h> using namespace std; #define ll long long #define A 222222 struct node{ ll l,r; friend bool operator < (const node & a,const node &b){ return a.l==b.l?a.r>b.r:a.l<b.l; } }wat[A]; ll n,m,t,ans=0x7fffffffffffff,maxx=0,cnt=0; ll p[A],lef[A],now[A],c[A]; ll check(ll x){ ll sum=0; for(ll i=1;i<=n;i++){ now[i]=max(p[i]-x,0ll); c[i]=0; } for(ll i=1;i<=n;i++){ ll nowid=lef[i]; c[i]+=c[i-1]; if(lef[i]==0) continue ; ll cha=c[i]; // printf("i=%lld c[i]=%lld c[i-1]=%lld\n",i,c[i],c[i-1]); // printf("i=%lld now+cha=%lld\n",i,now[i]+cha); if(now[i]+cha>0){ sum+=now[i]+cha; c[i]-=(now[i]+cha); c[wat[nowid].r+1]+=now[i]+cha; now[i]=0; } } for(ll i=1;i<=n;i++){ ll cha=c[i]; // printf("now=%lld x=%lld cha=%lld\n",now[i],x,cha); if(now[i]+cha>0) return 0x7fffffffff; } return sum+x*t; } int main(){ // freopen("da.in","r",stdin); // freopen("ans.bf","w",stdout); scanf("%lld%lld%lld",&n,&m,&t); for(ll i=1;i<=n;i++){ scanf("%lld",&p[i]); maxx=max(maxx,p[i]); } for(ll i=1;i<=m;i++){ scanf("%lld%lld",&wat[i].l,&wat[i].r); } sort(wat+1,wat+m+1); for(ll i=1;i<=m;i++){ if(!lef[wat[i].l]) lef[wat[i].l]=i; } for(ll i=1;i<=n;i++) if(wat[lef[i-1]].r>=i){ if(wat[lef[i-1]].r>wat[lef[i]].r) lef[i]=lef[i-1]; } ll l=0,r=maxx; while(l<r){ ll len=(r-l); ll lmid=l+len/3,rmid=r-len/3; ll lnow=check(lmid),rnow=check(rmid); // printf("l=%lld r=%lld\n",l,r); if(lnow>=rnow) l=lmid+1; else r=rmid-1; ans=min(ans,lnow); ans=min(ans,rnow); } // printf("%lld\n",check(5)); printf("%lld\n",ans); }
原文地址:https://www.cnblogs.com/znsbc-13/p/11524078.html
- Spring实战——通过Java代码装配bean
- WCF技术剖析之三十一: WCF事务编程[中篇]
- Spring实战——无需一行xml配置实现自动化注入
- 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)
- RabbitMQ入门-Routing直连模式
- WCF技术剖析之三十二:一步步创建一个完整的分布式事务应用
- .NET的资源并不限于.resx文件,你可以采用任意存储形式[上篇]
- RabbitMQ入门-消息订阅模式
- 年终盘点:2018最值得学习的几种热门编程语言
- 如何编写没有Try/Catch的程序
- RabbitMQ入门-消息派发那些事儿
- RabbitMQ入门-高效的Work模式
- 谈谈分布式事务之四: 两种事务处理协议OleTx与WS-AT
- RabbitMQ入门-从HelloWorld开始
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 快速学习-NPM官方文档(英文版)
- 快速学习-Jenkins CLI QuickStart
- 快速学习-Jenkins CLI用户
- 快速学习-Jenkins CLI诊断
- 快速学习-Jenkins CLI下载
- vue-element-admin提交表单数据到后端
- JDK15正式发布,划时代的ZGC同时宣布转正
- Redis的各种数据类型实践---List结构
- Git分支操作方法
- 最全解密微信红包随机算法(含代码实现)
- 两次死锁的分析
- 一次解决你的图像尺寸和定位问题。
- vuedraggable实现列表拖动排序
- 在 Xcode 中添加 Swift package 依赖
- 浅谈JavaScript中的apply,call和bind