[HDU5603] the soldier of love 题解
考虑到正向求解困难,于是正难则反。
那么实际上对于 \(a_i\) 和 \(a_{i+1}\) 来说,它们给答案的贡献就是满足 \(l_j>a_i,r_j<a_{i+1}\) 的区间数量。
那么就是经典转化了。直接转换为二维数点问题即可。时间复杂度 \(O(tn\log V)\),离散化可以将 \(\log V\) 转化为 \(\log n\)。
#include<bits/stdc++.h>
using namespace std;
const int N=3e5+5;
const int M=1e6+5;
const int K=2e6+5;
struct que{
int x,y,id,o;
}q[K];int n,m,k;
int c[M],as[N];
int cmp(que x,que y){
if(x.x!=y.x) return x.x<y.x;
return (x.y!=y.y)?x.y<y.y:x.id<y.id;
}void add(int x){
for(;x<=1e6;x+=x&-x) c[x]++;
}int sum(int x){
int re=0;
for(;x;x-=x&-x) re+=c[x];
return re;
}void solve(){
for(int i=1;i<=n;i++){
int l,r;cin>>l>>r;
q[++k]={l,r,0,0};
}for(int i=1,x;i<=m;i++){
int num,lst;
cin>>num,x=as[i]=0;
while(num--){
lst=x,cin>>x;
q[++k]={lst,x-1,i,-1};
if(lst) q[++k]={lst,lst-1,i,1};
}q[++k]={x,1e6,i,-1};
if(x) q[++k]={x,x-1,i,1};
q[++k]={1e6+1,1e6,i,1};
}sort(q+1,q+k+1,cmp);
for(int i=1;i<=k;i++){
if(!q[i].x) continue;
if(!q[i].id) add(q[i].y);
else as[q[i].id]+=q[i].o*sum(q[i].y);
}for(int i=1;i<=m;i++)
cout<<n-as[i]<<"\n";
for(int i=1;i<=1e6;i++) c[i]=0;
}int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
while(cin>>n>>m) k=0,solve();
return 0;
}
[HDU5603] the soldier of love 题解的更多相关文章
- codeforcess水题100道
之所以在codeforces上找这100道水题的原因是为了巩固我对最近学的编程语言的掌握程度. 找的方式在codeforces上的PROBLEMSET中过的题最多的那些题里面出现的最前面的10个题型, ...
- 题解 CF546B Soldier and Badges
CF546B Soldier and Badges 简单的贪心qwq 排个序,如果当前数与之前的数相重,已经用过,则加到一个之前没有用过的数 #include<cstdio> #inclu ...
- 题解 CF546C 【Soldier and Cards】
思路 是一道水题,可以用队列+模拟来写,注意不要拿完队列中的元素! 代码 #include<iostream> #include<cstdio> #include<que ...
- HDU 5603 the soldier of love 离线+树状数组
这是bestcorder 67 div1 的1003 当时不会做 看了赛后官方题解,然后翻译了一下就过了,而且速度很快,膜拜官方题解.. 附上官方题解: the soldier of love 我们注 ...
- 2017 google Round C APAC Test 题解
题解参考网上的答案,以及我自己的想法. 主要参考网站:http://codeforces.com/blog/entry/47181,http://codeforces.com/blog/entry/4 ...
- Codeforces Round #304 (Div. 2) E. Soldier and Traveling 最大流
题目链接: http://codeforces.com/problemset/problem/546/E E. Soldier and Traveling time limit per test1 s ...
- Codeforces Round #304 (Div. 2) D. Soldier and Number Game 数学 质因数个数
D. Soldier and Number Game Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/conte ...
- Codeforces Round #304 (Div. 2) C. Soldier and Cards 水题
C. Soldier and Cards Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/546 ...
- Codeforces Round #304 (Div. 2) B. Soldier and Badges 水题
B. Soldier and Badges Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/54 ...
- ACM ICPC 2018 青岛赛区 部分金牌题题解(K,L,I,G)
目录: K Airdrop I Soldier Game L Sub-cycle Graph G Repair the Artwork ———————————————————— ps:楼主脑残有点严 ...
随机推荐
- Kettle连接MySQL数据库时提示Driver class 'org.gjt.mm.mysql.Driver' could not be found
使用Kettle连接MySQL数据库时,提示以下连接提示信息导致我们无法对数据库进行连接: Driver class 'org.gjt.mm.mysql.Driver' could not be fo ...
- 将.nuget文件夹从C盘移到其它盘,再也不用担心的C盘爆红了
将.nuget文件夹从C盘移到其它盘,再也不用担心的C盘爆红了 命令 查看缓存文件夹的具体路径 dotnet nuget locals all --list 第一步 在文件资源管理器输入%AppDat ...
- 下列哪个选项是对 WebSocket 的正确描述?
A. 一种扩展 HTTP 的协议,通信消息以 XML 格式描述. B. 使用 http或https作为URI连接的前缀,并使用与HTTP和HTTPS相同的端口号进行通信. C. 它是一种双向通信 ...
- Ubuntu 22.04 LTS 代号已经公布:那就是 Jammy Jellyfish
Ubuntu 22.04 LTS 代号已在 Ubuntu 开发之家 Launchpad 上公布. 在字母系列中的字母"I"之后,是"J". 因此,Canonic ...
- Qt/C++音视频开发79-采集websocket视频流/打开ws开头的地址/音视频同步/保存到MP4文件/视频回放
一.前言 随着音视频的爆发式的增长,各种推拉流应用场景应运而生,基本上都要求各个端都能查看实时视频流,比如PC端.手机端.网页端,在网页端用websocket来接收并解码实时视频流显示,是一个非常常规 ...
- Qt开源作品10-代码统计组件
一.前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行.注释行.代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计.写完这个工具第一件事情就 ...
- Linux查找JDK的 实际位置
检查JDK是否安装 java -version 查找java命令的位置 which java 查找列出该链接所指向的原始文件或目录 ls -l /usr/bin/java 查找目录 ls -l /et ...
- B站千万级长连接实时消息系统的架构设计与实践
本文由哔哩哔哩资深开发工程师黄山成分享,原题"千万长连消息系统",本文进行了排版和内容优化等. 1.引言 在当今数字娱乐时代,弹幕已经成为直播平台上不可或缺的互动元素之一. 用户通 ...
- 基于实践:一套百万消息量小规模IM系统技术要点总结
本文由公众号"后台技术汇"分享,原题"基于实践,设计一个百万级别的高可用 & 高可靠的 IM 消息系统",原文链接在文末.由于原文存在较多错误和不准确内 ...
- [源码阅读]-Redis核心事件流程
Redis核心流程 本文分析基于Redis-1.0源码,核心流程代码主要分布在redis.c,ae.c两个文件中. Notion版本 1.Redis核心流程中的重要数据结构 struct redisS ...