首页 > 其他分享 >CF--810--D

CF--810--D

时间:2022-12-14 19:11:07浏览次数:57  
标签:-- CF back int push 端点 810 inf

D. Rain

//一个for做两次前缀和,也就是在把前面已经有过的数字加一遍就可以了,用一个sum维护
//最大值只会出现在端点处,但是这里的端点,不等价于记录的点,而是前一个点
//然后找出每一个大于m的地方,这两个值的关系
//最后比较一次也就可以了

//收获:这样子进行差分,用vector进行维护的二阶差分,而不把所有的数都求出来
//极值只会在端点处
//对每个人造出的影响进行分析
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int M=1e6+5;
const int inf=1e15;

struct node {
    int pos,k;
    bool operator<(const node T)const {
        if(pos!=T.pos)return pos<T.pos;
        return k<T.k;
    }
};

int n,m;
int x[M],p[M],d[M],mx,mn;
void up(int id,int v) {
    if(v<=m)return ;
    mx=max(mx,id+v-m);
    mn=min(mn,id-v+m);
}
//从全局考虑影响

signed main() {
    int TT;cin>>TT;
    while(TT--) {
        vector<node>v;
        cin>>n>>m;
        mx=-inf,mn=inf;
        v.push_back({-inf,0});
        v.push_back({inf,0});
        for(int i=1;i<=n;i++) {
            cin>>x[i]>>p[i];
            v.push_back({x[i]-p[i]+1,1});
            v.push_back({x[i]+1,-2});
            v.push_back({x[i]+p[i]+1,1});
        }
        sort(v.begin(),v.end());
        int pre=0;
        for(int i=1;i<v.size()-1;i++) {
            d[i]=d[i-1]+v[i].k;
            if(v[i].pos!=v[i+1].pos) {
                up(v[i].pos,pre+d[i]);
                up(v[i+1].pos-1,pre+d[i]*(v[i+1].pos-v[i].pos));
            }
            pre+=d[i]*(v[i+1].pos-v[i].pos);
        }
        for(int i=1;i<=n;i++) {
            if((x[i]+p[i])>=mx&&(x[i]-p[i])<=mn)cout<<"1";
            else cout<<"0";
        }
        cout<<'\n';
    }
    return 0;
}

标签:--,CF,back,int,push,端点,810,inf
From: https://www.cnblogs.com/basicecho/p/16982992.html

相关文章

  • NFS服务实现linux硬盘的映射实现文件存储与应用服务的分离
    NFS服务实现linux硬盘的映射实现文件存储与应用服务的分离。实现目标:在服务器A上访问服务器B上指定的文件系统。服务器B配置步骤:1、编辑/etc/exports格式:共享目录指定共享......
  • 通过WebRTC 的 RTSP 视频获取
    背景由于项目需要,需要使用摄像头在Web页面上展现,由于海康威视摄像头推出的流为rtsp流,已知存在的基于FFmpeg的方案延迟都太高,所以就项目最终选择基于此方案。方案说明webr......
  • 常用的正则工具类
    验证只包含中英文和数字的字符串/***验证只包含中英文和数字的字符串**@paramkeyword*@return*/publicstaticBooleanvalidKeyword(Stringkeyword){Strin......
  • java 常见基础题
    Java中==和equals和hashCode的区别基本数据类型的​​==​​比较的值相等.类的​​==​​​比较的内存的地址,即是否是同一个对象,在不覆盖​​equals​​​的情况下,同比较内......
  • Qt平台下使用QJson 使用
    前言在Qt开发环境下使用Json的解析和输出当然要使用QJson来完成。QJson解析JSON主要使用的类如下#include<QJsonDocument>#include<QJsonObject>#include<QJsonArray>......
  • js60秒倒计时防刷新
    JavaScript倒计时,实现起来不难,但是一刷新往往就重新计算了,如果要实现刷新不重计该如何做呢?有这么几种思路,    1:cookie    2:本地缓存    3:window.name……......
  • 神策《2022 营销自动化应用基准报告》正式发布
     以人为本的时代为营销人员带来了新的机会:与客户建立更紧密的连接,更多地基于品牌与客户的双向参与,以创造更好的产品和体验,而不仅仅是基于大众传播渠道的推广策略传递品牌信......
  • struts1.2 文件上传处理
    前一段时间刚来公司,看到一个项目中以前有人写的struts代码。是使用了FormFile来处理关于文件上传的模块。但是用力一段时间后,发现出问题了。写完的这个模块,上......
  • <script>alert('1')</script>;,"aa",'1'
    <script>alert('1')</script>;,"aa",'1'<script>alert('1')</script>;,"aa",'1'<script>alert('1')</script>;,"aa",'1'<script>aler......
  • 以生态共建促产业发展,点亮HPC新未来
    作者|曾响铃文|响铃说作为IT行业的“明珠”,极“硬核”的高性能计算不如云计算、AI、物联网技术备受关注。但不可忽视的是,近年来,高性能计算正在从高精尖科研加速迈向千行......