[THUPC2017] 天天爱射击 题解
俗话说的好,正难则反,既然不好想每一个子弹能打碎多少个木板,不如想每个木板被那枚子弹打碎。
然后就是显然的整体二分。由于可能木板不会被击碎,那些木板的分数会累加到最后一个子弹上,因此我们可以加一枚背锅弹,承担多余的分数。
时间复杂度 \(O((n+m)\log^2 m)\)。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2e5+5;
int n,m,c[N],sm[N];
struct que{
    int l,r,s,o,id;
}q[N*2],q1[N*2],q2[N*2];
void add(int x,int k){
    for(;x<=m+1;x+=x&-x)
        c[x]+=k;
}int sum(int x){
    if(!x) return 0;
    int re=0;
    for(;x;x-=x&-x)
        re+=c[x];
    return re;
}void dichot(int l,int r,int ql,int qr){
    if(ql>qr) return;
    if(l==r){
        for(int i=ql;i<=qr;i++)
            if(!q[i].o) sm[l]++;
        return;
    }int t1=0,t2=0,mid=(l+r)/2;
    for(int i=ql;i<=qr;i++){
        if(q[i].o){
            if(q[i].id<=mid){
                add(q[i].s,1);
                q1[++t1]=q[i];
            }else q2[++t2]=q[i];
            continue;
        }int x=sum(q[i].r)-sum(q[i].l-1);
        if(q[i].s>x){
            q[i].s-=x;
            q2[++t2]=q[i];
        }else q1[++t1]=q[i];
    }for(int i=1;i<=t1;i++){
        if(q1[i].o) add(q1[i].s,-1);
        q[i+ql-1]=q1[i];
    }for(int i=1;i<=t2;i++)
        q[i+ql+t1-1]=q2[i];
    dichot(l,mid,ql,ql+t1-1);
    dichot(mid+1,r,ql+t1,qr);
}int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(int i=m+1;i<=n+m;i++)
        cin>>q[i].l>>q[i].r>>q[i].s;
    for(int i=1;i<=m;i++)
        cin>>q[i].s,q[i].id=i,q[i].o=1;
    dichot(1,m+1,1,n+m);
    for(int i=1;i<=m;i++)
        cout<<sm[i]<<"\n";
    return 0;
}//Kaká
[THUPC2017] 天天爱射击 题解的更多相关文章
- 【LOJ#2402】[THUPC2017]天天爱射击(整体二分)
		[LOJ#2402][THUPC2017]天天爱射击(整体二分) 题面 LOJ 题解 显然对于每块木板可以二分被打烂的时间. 那么直接上整体二分处理就行了. #include<iostream& ... 
- 「NOIP2016」天天爱跑步 题解
		(声明:图片来源于网络) 「NOIP2016」天天爱跑步 题解 题目TP门 题目 题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是 ... 
- NOIP2016天天爱跑步 题解报告【lca+树上统计(桶)】
		题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.«天天爱跑步»是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一一棵包含 nn个 ... 
- NOIP2016(D1T2)天天爱跑步题解
		首先声明这不是一篇算法独特的题解,仍然是"LCA+桶+树上差分",但这篇题解是为了让很多很多看了很多题解仍然看不懂的朋友们看懂的,其中就包括我,我也在努力地把解题的"思维 ... 
- Noip 2016 天天爱跑步 题解
		[NOIP2016]天天爱跑步 时间限制:2 s 内存限制:512 MB [题目描述] 小C同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是 ... 
- [NOIP2016]天天爱跑步 题解(树上差分) (码长短跑的快)
		Description 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要 玩家每天按时上线,完成打卡任务.这个游戏的地图 ... 
- LuoguP7426 [THUPC2017] 体育成绩统计 题解
		Update \(\texttt{2021.3.11}\) 修复了一个笔误. Content 太长了,请直接跳转回题面查看. 数据范围:\(n\leqslant 10^4\),\(0\leqslant ... 
- 【LOJ2402】「THUPC 2017」天天爱射击 / Shooting(整体二分)
		点此看题面 大致题意: 有\(n\)个区间,每个区间有一个权值,当权值变成\(0\)时消失.每个时刻将覆盖某一位置的所有区间权值减\(1\),求每个时刻有多少个区间在这一刻消失. 前言 整体二分裸题啊 ... 
- [NOIP2016]天天爱跑步-题解
		题面传送门 解答 设第\(j\)号玩家在\(V_j\)时刻出发. 弱化问题:如果树退化成了一条链.则在\(j\)处的观察员能观察到的\(i\)号玩家当且仅当 \[ i玩家经过j,且 \begin{ca ... 
- 洛谷P1600 天天爱跑步——题解
		题目传送 首先要考虑入手点.先考虑一个一个玩家处理,显然不加优化的话,时间复杂度是O(n)的.发现对于玩家路径上的点都有一个观察员,一个都不能忽视,看起来是很难优化了.在做题时,发现一个思路很难想,就 ... 
随机推荐
- ZCMU-1038
			其实感觉不太难,读懂题意就行,我一开始没有仔细去读感觉就很懵.其题目意思就是一段字符串含有数字和'<'或者'>',一开始从左开始遍历,遇到'>'这类东西换方向,如果有多次遇到就删之前 ... 
- fastadmin表格 - 自定义接口
			1.文本过长溢出 文本超过250px则隐藏,如果需要修改此宽度,请在具体页面中重新定义formatter方法 点击通过弹窗展示完整的内容 弹窗插件使用Layer.js 调用方法 {field: 'co ... 
- 试了下Cursor,感觉程序员工种危险了
			大家好,我是汤师爷~ 今年8月份,AI 编程工具 Cursor 在开发者社区彻底火了.在 Twitter 平台上,Cloudflare 副总裁分享了一段视频,展示了一个令人震惊的案例.他年仅 8 岁的 ... 
- 华为云云日志服务 HarmonyOS NEXT采集最佳实践
			鸿蒙背景介绍 华为鸿蒙HarmonyOS系统是面向万物互联的全场景分布式操作系统,支持手机.平板.智能穿戴.智慧屏等多种终端设备运行,提供应用开发.设备开发的一站式服务的平台.2024 年 1 月 1 ... 
- AE错误代码
			错误代码 错误描述 错误名称 HRESULT:0x80040201 "Failed to load a resource (string, icon, bitmap, etc)." ... 
- 切换浏览器tab刷新实现
			标签: js 缘起 最近在做一个活动需求,需求交互有跨项目,跳转到另一个项目里完成指定任务,再回来领取相应任务奖励,产品十分反感要求用户主动刷新浏览器才更新活动页的任务信息. 解决方案 方案1:如果项 ... 
- DA14531芯片固件逆向系列(2)- 操作系统底层机制分析
			首发于先知论坛 https://xz.aliyun.com/t/9186 概述 DA145x软件平台利用了由Riviera Waves许可的小型高效实时内核,内核提供以下功能: 任务创建和状态转换. ... 
- 关于Qt数据库开发的一些冷知识
			一.知识要点 Qt即支持库的形式直接和数据库通信,也支持ODBC数据源的形式和各种数据库通信,这样就涵盖了所有的情况. Qt数据库程序打包发布,所有前提:注意区分32/64位,你的程序是32位的就必须 ... 
- 串口的Hex/AscII发送与显示
			首先,底层的数据传输都是字节流,所以不管选择什么方式,都会被分解为一个一个的字节. 1.选择Hex发送就代表你要发送的内容是纯数字,由程序完成String到Int再到Byte的转化.所以你应该保证每个 ... 
- Next.js + Mongodb CURD
			环境 Next.js 14 React 18 Mongodb 前言 花了两周时间学习了Next.js, 自己做了个demo,尝试了下服务器端渲染,客户端渲染,给人的感觉就是又像回到了asp.net M ... 
