HDU - 6609
题目链接:HDU - 6609
然后在权值线段树上面二分即可。因为区间比较大,所以动态开点。但是要注意到,我们二分的是严格闭区间,所以还要考虑当前点能不能继续减少。
#pragma comment(linker, "/STACK:102400000,102400000")
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
#define mid (l+r>>1)
using namespace std;
typedef long long LL;
const int N=2e5+10,M=N*80;
int n,m,res[N],rt,lc[M],rc[M],num[M],cnt;
LL sum[M],s;
void change(int &p,int l,int r,int x){if(!p) p=++cnt,lc[p]=rc[p]=sum[p]=num[p]=0;if(l==r) return sum[p]+=l,num[p]++,void();if(x<=mid) change(lc[p],l,mid,x);else change(rc[p],mid+1,r,x);sum[p]=sum[lc[p]]+sum[rc[p]];num[p]=num[lc[p]]+num[rc[p]];
}
int ask(int p,int l,int r,LL val){if(l==r) return l;if(sum[rc[p]]>=val) return ask(rc[p],mid+1,r,val);else return ask(lc[p],l,mid,val-sum[rc[p]]);
}
LL asksum(int p,int l,int r,int ql,int qr){if(!p) return 0;if(l==ql&&r==qr) return sum[p];if(qr<=mid) return asksum(lc[p],l,mid,ql,qr);else if(ql>mid) return asksum(rc[p],mid+1,r,ql,qr);else return asksum(lc[p],l,mid,ql,mid)+asksum(rc[p],mid+1,r,mid+1,qr);
}
int asknum(int p,int l,int r,int ql,int qr){if(!p) return 0;if(l==ql&&r==qr) return num[p];if(qr<=mid) return asknum(lc[p],l,mid,ql,qr);else if(ql>mid) return asknum(rc[p],mid+1,r,ql,qr);else return asknum(lc[p],l,mid,ql,mid)+asknum(rc[p],mid+1,r,mid+1,qr);
}
void solve(){cin>>n>>m; s=cnt=rt=0;for(int i=1,x,pos,del;i<=n;i++){scanf("%d",&x); s+=x; LL tot=0;if(s<=m){res[i]=0; change(rt,1,m,x); continue;}pos=ask(rt,1,m,s-m),del=asknum(rt,1,m,pos,m);tot=asksum(rt,1,m,pos,m);res[i]=del-(tot-s+m)/pos;change(rt,1,m,x);}for(int i=1;i<=n;i++) printf("%d ",res[i]);puts("");
}
signed main(){int T; cin>>T;while(T--) solve();return 0;
}
HDU - 6609相关推荐
- hdu 6609
贪心肯定都能想到,删前几大的数,使i满足. 但暴力或者直接求前第k大肯定T: 所以我们只需要求删前K大个数(尽量少删)使得满足题意. 就能转化为权值线段树的经典做法..比赛时多想了个二分 一直T.. ...
- 集训队每周一赛 2020-04-02(思维/模拟+贪心+二分)
第六次周赛 A 金龙小学的口语考试 CodeForces 1185C1 题解 B 黄牌警告 CodeForces 1215A 题解 C 分糖果 CodeForces 678C 题解 D 密文 Code ...
- HDU 4389 - X mod f(x)
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4389 2012多校,第9场,1010 . 问题是,询问区间内 存在多少个 哈沙德数(Harshad ...
- hdu 多校赛 第三场
slove 2/11 rank 288 补题 5/11 --------------------------------------------------- 6604 Blow up the ...
- hdu 4389 囧,打表
http://acm.hdu.edu.cn/showproblem.php?pid=4389 题意 :一个数能被他各个位数之和整除则符合要求,给L,R,问区间里有多少个数符合要求. 囧,居然打表就能过 ...
- HDU——1106排序(istringstream的使用、STLvector练习)
排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- hdu 5438 Ponds 拓扑排序
Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...
- HDU 1248 寒冰王座(全然背包:入门题)
HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...
- hdu 1312 Red and Black 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 第二条深搜,题目并不难,但是做了我好久好久,由于一个细节,让我赌上了一个晚上的时间. 题目大意: ...
最新文章
- 介绍三种绘制时间线图的方法
- 用完U盘忘记安全退出了,会造成数据丢失吗
- BigDecimal divide方法结果为无限小数问题
- Linux7改运行级别,Centos7 修改运行级别
- python -lambda表达式的用法
- C#线程同步(1)- 临界区&Lock .
- 基于微信我们可以做什么样的应用?
- 腾讯推出基于区块链存证的“点亮莫高窟”活动
- 华为副总裁回应应用删除用户图片;美国拟允许华为参与 5G 标准建设;Firefox 76.0 发布​ | 极客头条...
- Robot Framework(4)——Selenium2Library关键字
- BW作为源系统连接时,激活DSO或其他模型时提示8*数据源不存在,无法激活
- java 汉字 char_char 类型如何存储一个汉字的?
- java 判断session失效_session过期时间设置和判断session是否过期
- 测试图片真假软件,如何找出照片的PS痕迹__如何检测一张图片是否被PS过_飞翔教程...
- 【2022年】浙江省专升本数学全面总结-(空间解析几何与向量代数)
- 删除ubuntu双系统后,开机出现grub黑屏,删除双系统引导项解决
- 【高等数学笔记】拉格朗日乘数法(Lagrange Multiplier Method):其实也没那么难嘛
- java将ppt转换成图片,图片以幻灯片的备注命名
- 百家讲坛全集免费下载
- 使用USB充电的5号电池
热门文章
- mri计算机系统,MRI的一些基本介绍
- MATLAB对水下目标去噪声代码,水下目标噪声与背景噪声的建模与仿真
- iPhone 13发布前迎来坏消息,摩托车会损坏手机相机?
- 问题解决:系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的about_Execution_Policies
- 用于单图像超分辨率的增强深度残差网络
- 浏览器页签icon图标的设置和获取
- Dynamic 365 子网格编辑控制列可编辑
- zabbix下载方式
- SumToken钱包怎么样_SUMTOKEN钱包靠谱吗
- 招聘海报制作可以用什么软件,有什么免费模板?