P14507 缺零分治 mexdnc题解

news/2025/11/16 20:16:59/文章来源:https://www.cnblogs.com/sadlin/p/19228870

P14507 缺零分治 mexdnc

考时思路对了,但是代码太乱了,冗长复杂,难以调试,我直接放弃了,赛后补题,看题解,发现写的都是gousi(个人感觉,我确实看不懂写的都是啥),看部分题解发现我的思路确实没问题,于是重写了一遍赛时的思路,稍微调了调就过了。

肯定把能得到的mex都提出来,每次肯定先用大的mex,然后依次用,发现可以前缀和优化后,直接二分查找,然后再将剩余减去即可。

#include<bits/stdc++.h>
#define ll long long
#define int ll
#define ls p<<1
#define rs p<<1|1
#define re register 
#define pb push_back
#define pir pair<int,int> 
#define f(a,x,i) for(int i=a;i<=x;i++)
#define fr(a,x,i) for(int i=a;i>=x;i--)
#define lowbit(x) (x&-x)
using namespace std;
const int N=2e5+10;
const int M=5e6+10;
const int mod=1e18+2;
const int INF=1e9+7;
mt19937 rnd(251);int n,q;
map<int,int> mp;
map<int,int> sum;
int f[N];bool cmp(int x,int y){return x>y;
}int a[N],b[N];
int c[N];
int cnt=0;int query(int x){int pos=upper_bound(a+1,a+1+cnt,x)-a;int ans=b[pos-1];int k=x-a[pos-1];if(k){if(pos>cnt){ans=-1;}else{if(k<c[pos]){ans+=1+(pos==1);}else{ans+=k/c[pos]+((k%c[pos])!=0);}}}return ans;	
}void solve(){cin>>n>>q;for(int i=1;i<=n;i++){int x,y;cin>>x>>y;mp[x]+=y;if(x>n){continue;}f[x]+=y;}//	for(int i=0;i<=n;i++){
//		cout<<f[i]<<" ";
//	}
//	cout<<"\n";int mx=0;for(int i=1;i<=n+1;i++){f[i]=min(f[i-1],f[i]);if(f[i]!=0){mx=max(mx,i+1);if(mp[i]<mp[i-1]){c[++cnt]=i;sum[i]=mp[i-1]-mp[i];}else{mp[i]=mp[i-1];}}else{c[++cnt]=i;sum[i]=mp[i-1]-mp[i];break;}}sort(c+1,c+1+cnt,cmp);for(int i=1;i<=cnt;i++){if(a[i-1]>mod){a[i]=a[i-1];b[i]=b[i-1];	}else{a[i]=a[i-1]+c[i]*sum[c[i]];b[i]=b[i-1]+sum[c[i]];}}//	for(int i=1;i<=cnt;i++){
//		cout<<c[i]<<" "<<sum[c[i]]<<"\n";
//	}
//	cout<<"\n";for(int i=1;i<=q;i++){int x;cin>>x;if(f[0]==0){if(x!=0){cout<<"-1\n";continue;	} else{cout<<"1\n";continue;}}else{if(x==0){cout<<"-1\n";continue;	}}if(mx==x){cout<<"1\n";continue;}cout<<query(x)<<"\n";}
}void clear(){mp.clear();sum.clear();for(int i=0;i<=n+3;i++){f[i]=a[i]=b[i]=c[i]=0;}cnt=0;
}signed main(){
//  	freopen("mexdnc2.in","r",stdin);
//  	freopen("a.out","w",stdout);ios::sync_with_stdio(0);cin.tie(nullptr);int t;cin>>t;while(t--){solve();clear();} return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/967317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python多进程通信 —— 两进程通信 —— Pipe与Queue的通信性能对比

python多进程通信 —— 两进程通信 —— Pipe与Queue的通信性能对比运行代码:点击查看代码 import time from multiprocessing import Process, Pipe, Queuedef reader_pipe(pipe):output_p, input_p = pipeinput_p.c…

20232427 2025-2026-1 《网络与系统攻防技术》实验五实验报告

一、实验内容 本次实验聚焦信息搜集技术实践,核心内容包括五部分: 1.选择目标域名,通过多种工具查询其 DNS 注册信息、对应 IP 地址、IP 注册详情及地理位置; 2.尝试获取社交平台好友的 IP 地址并定位其地理位置;…

解决Elctron打包成功,IPC无法注册问题。

目录解决Elctron打包成功,IPC无法注册问题。项目地址 解决Elctron打包成功,IPC无法注册问题。 核心问题原因IPC 处理程序未注册:主进程未注册 resource:scanDirectory通道的处理程序 注册时序问题:处理程序注册可能…

Swagger开启账号验证访问

背景概述 在一些小型的Java后端开发项目工程中集成Swagger生成接口文档是一个比较普遍的做法,默认情况下访问Swagger文档是没有限制的,任何人都可以访问并进行调试。这在某些场合下可能并不合适,特别是对于一些具备…

标准解读——GB/T 46353—2025《信息技术 大数据 资料资产价值评估》国家标准

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

noip7

11.1311.13 挂分场。 t1 神秘淀粉质。 不想改了,反正noip不考(题解说的)。 赛时写了2h发现想假了,当场😡。 t2 简单构造。 但是挂分了。 每个球跳的次数求假了(不是这也能假)。 然后就挂了。 codewww #include…

代码背后的故事:docker容器名生成算法

让我们一探每次docker run背后自动生成的容器名是怎么生成的,以及生成算法背后的故事吧。我们知道容器化最大的好处是软件交付形成了一种标准化,其带来的好处是巨大且深远的,让开发者从解决各种环境差异的痛苦中解放…

在Windows系统置顶窗口不被Win+D快捷键影响

需求背景 Windows10系统,工作需要开多个应用程序,在使用双屏幕时(多显示器设置为:扩展这些显示器),希望使用另外一个屏幕做监控用,总时只要打开一个浏览器窗口盯着监控信息。但是经常需要通过快捷键Win+D快速返…

dns服务详解

dns服务 1、dns服务是什么叫做名称服务,作用就是将域名解析成ip地址,这个叫做正向解析将ip地址解析成域名叫做反向解析还提供邮件服务器的交换记录在互联网中有很重要的作用是一个c/s架构,每一个电脑就是一个dns客户…

一乐人物志

LEWISAK,真名 Woiler,CSP-S 2025 rk721,尽管进了高新一中博雅班,但是在二班和一四班的学生拉开了一年的 whk 差距,回家后每天推旮旯隔膜,被骂是虾头油渍处,ZR 模拟赛送了 1500 分后 rating 1479。初二时染上了不…

详细介绍:基于Spring Boot的高校实习实践管理系统(源码+论文+部署+安装)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

点分树

事实上比较朴素。 P6329 【模板】点分树 | 震波 大致思路是将点分治的那个过程建成一棵树。每一层的重心和下一层的中心连边。 这棵树有两个重要性质:树高保证为 \(\log n\),任意两点的 lca 一定在这两个点的路径上。…

HTTP请求走私漏洞介绍 - 实践

HTTP请求走私漏洞介绍 - 实践2025-11-16 19:46 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important…

20232428 2025-2026-1 《网络与系统攻防技术》实验五实验报告

1.实验内容 (1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取信息 (2)尝试获取BBS、论坛、QQ、MSN中某一好友的IP地址,并查询获取该好友所在的具体地理位置 (3)使用nmap开源软件…

xml.etree.ElementTree 完全支持嵌套查找子元素,且有多种简洁实用的方式。

xml.etree.ElementTree 完全支持嵌套查找子元素,且有多种简洁实用的方式。 核心实现方式 1. XPath 路径直接嵌套查找(最常用) 通过 / 分隔层级,直接定位深层子元素,支持精确匹配标签名、属性等。 import xml.etre…

深入解析:Spring MVC 拦截器interceptor

深入解析:Spring MVC 拦截器interceptorpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

HarmonyOS 5 鸿蒙Context上下文机制与资源管理详解 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

《重生之我成为世界顶级黑客》第八章:未来野望

《重生之我成为世界顶级黑客》第八章:未来野望词穷,暂时没灵感了。龙傲天盯着桌上那个用40积分换来的企鹅玩偶,嘴角泛起一丝苦涩的笑意。这次的经历像一盆冷水,浇醒了他这些天因微小进步而产生的自满。企业的安全防…

打开工作空间时,但未在 DTD/架构中声明

OpenFromFile时,如果路径不存在或者不合法, 将报错,请先检查路径! {"未指定的错误\r\n\r\n使用了元素 {http://schemas.microsoft.com/windows/2005/02/color/WcsCommonProfileTypes}Text,但未在 DTD/架构中…

开源软件的崛起:技术共享与协作创新的新时代 - 详解

开源软件的崛起:技术共享与协作创新的新时代 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…