传送门

题意

给出x个a区间和y个b区间,询问a和b交区间的子区间长度为m的个数

分析

类似于双指针,具体见代码

trick

代码

#include <bits/stdc++.h>
using namespace std; #define F(i,a,b) for(int i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
#define mem(a,b) memset(a,b,sizeof(a))
#pragma comment(linker, "/STACK:102400000,102400000")
inline void read(int &x){x=0; char ch=getchar();while(ch<'0') ch=getchar();while(ch>='0'){x=x*10+ch-48; ch=getchar();}} struct node
{
int l,r;
}a[101],b[101];
int t,n,m,x,y;
int loca,locb;
int ans; int main()
{
for(scanf("%d",&t);t--;)
{
scanf("%d %d %d %d",&n,&m,&x,&y);
for(int i=1;i<=x;++i) scanf("%d %d",&a[i].l,&a[i].r);
for(int i=1;i<=y;++i) scanf("%d %d",&b[i].l,&b[i].r);
ans=0;locb=1;
for(int i=1;i<=x;++i)
{
if(locb>y) break;
if(a[i].r<b[locb].l) continue;
while(a[i].l>b[locb].r) locb++;
while(locb<=y&&b[locb].l<=a[i].r)
{
int rr=min(b[locb].r,a[i].r),ll=max(b[locb].l,a[i].l);
if(rr-ll+1>=m) ans+=(rr-ll+2-m);
if(b[locb].l>=a[i].l&&b[locb].r>=a[i].r) break;
if(b[locb].l<=a[i].l&&b[locb].r<=a[i].r) {locb++;continue;}
if(b[locb].l>=a[i].l&&b[locb].r<=a[i].r) {locb++;continue;}
if(b[locb].l<=a[i].l&&b[locb].r>=a[i].r) break;
locb++;
}
}
printf("%d\n",ans);
}
return 0;
}
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>;
using namespace std; struct points
{
int l,r;
};
vector <points> a,b;
int main()
{
int cases,n,m,x,y,i,j,s;
points now;
bool flag;
int m1,m2;
scanf("%d",&cases);
while (cases--)
{
scanf("%d%d%d%d",&n,&m,&x,&y);
a.clear(); b.clear();
for (i=1;i<=x;i++)
{
scanf("%d%d",&now.l,&now.r);
if (now.r-now.l+1>=m)
{
a.push_back(now);
}
}
for (i=1;i<=y;i++)
{
scanf("%d%d",&now.l,&now.r);
if (now.r-now.l+1>=m)
{
b.push_back(now);
}
}
if (a.size()==0 || b.size()==0) printf("0\n");
else
{
m1=0; m2=0; flag=true; s=0;
while (m1<a.size() && m2<b.size())
{
while (flag && a[m1].r<b[m2].l )
{
m1++;
if (m1==a.size()) {flag=false; break;}
}
while (flag && b[m2].r<a[m1].l )
{
m2++;
if (m2==b.size()) {flag=false; break;}
}
if (flag)
{
x=max(a[m1].l,b[m2].l);
y=min(a[m1].r,b[m2].r);
if (y-x+1>=m) s+=(y-x+1-m+1);
if (a[m1].r<b[m2].r) m1++;
else if (a[m1].r>b[m2].r) m2++;
else {m1++; m2++; }
}
}
printf("%d\n",s);
}
}
return 0;
}

ZOJ5593:Let's Chat(双指针)的更多相关文章

  1. 三周,用长轮询实现Chat并迁移到Azure测试

    公司的OA从零开始进行开发,继简单的单点登陆.角色与权限.消息中间件之后,轮到在线即时通信的模块需要我独立去完成.这三周除了逛网店见爱*看动漫接兼职,基本上都花在这上面了.简单地说就是用MVC4基于长 ...

  2. Socket programing(make a chat software) summary 1:How to accsess LAN from WAN

    First we should know some basic conceptions about network: 1.Every PC is supposed to have its own IP ...

  3. Node聊天程序实例03:chat.js

    作者:vousiu 出处:http://www.cnblogs.com/vousiu 本实例参考自Mike Cantelon等人的<Node.js in Action>一书. chat.j ...

  4. Fake chat script for website download

    Are you searching for free fake webchat script then you are at the right place go get download your ...

  5. IRC(Internet Relay Chat Protocol) Protocal Learning && IRC Bot

    catalogue . Abstract . INTRODUCTION . 通信协议Connection Registration Action . 通信协议Channel operations Ac ...

  6. HDU 5071 Chat(2014鞍山赛区现场赛B题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5071 解题报告:一个管理聊天窗口的程序,一共有八种操作,然后要注意的就是Top操作只是把编号为u的窗口 ...

  7. ocket.chat 使用 Meteor 开发的实时协作工具,类似 丁丁。

    ocket.chat  使用 Meteor 开发的实时协作工具,类似 丁丁. https://rocket.chat/

  8. 局域网聊天Chat(马士兵视频改进版)

    Github地址: https://github.com/BenDanChen/Chat Chat 小小的聊天系统,主要是跟着网上的马士兵老师的公开视频然后再自己反思有什么地方需要改进的地方,然后大体 ...

  9. Dig out deleted chat messages of App Skype

    Last month Candy was arrested on suspicion of having doing online porn webcam shows, but Candy refus ...

随机推荐

  1. tiles

    参考博客:https://blog.csdn.net/aosica321/article/details/68948915 https://blog.csdn.net/it_faquir/articl ...

  2. msp430入门编程42

    msp430中C语言的软件工程--事件触发程序结构

  3. Swift--字典的了解

    字典存储时,key和value值的类型都是固定的,且都是无序的. 1.字典类型的缩写语法 在swift中,字典的完整格式如下: Dictionary<Key, Value> 注意:字典的k ...

  4. 【c++】面向对象程序设计之访问控制与继承

    受保护的成员(protected): 1.和私有成员类似,受保护的成员对于类的用户来说是不可访问的 2.和共有成员类似,受保护的成员对于派生类的成员和友元来说是可访问的 3.派生类的友元只能通过派生类 ...

  5. 答读者问(6):有关IT培训和毕业之前的迷茫等问题

    近期在微博上与一些读者朋友们交流,发现大家对自己的未来都比較的关心.有些朋友认为在大学里面没有学到什么东西,问我要不要到一些IT培训机构去"速成".另一些朋友即将毕业,不知道自己走 ...

  6. Linux下kill命令的学习,(主要根据man手册进行的翻译)

    名字      kill -终止一个进程 格式     kill  [-s signal | -p]  [--] pid ..                                      ...

  7. 解决Struts配置文件里无提示信息的问题

    (1)在struts2配置文件编写的时候.有可能无法提示所有信息,在配置文件里打个"<" 后,并没有不论什么的提示信息(使用快捷键Alt+/ 也不提示) 原因是下边的  &q ...

  8. Selenium 工具介绍、安装、配置及使用

    概念 selenium是一款跨平台开源工具,用于web的功能完整性測试,想做压力測试的能够换软件了 先看一眼官方站 http://docs.seleniumhq.org/download/ 首先要FQ ...

  9. [IT学习]Python如何处理异常特殊字符

    欢迎访问www.cnblogs.com/viphhs A byte of Python<输入与输出>一节中有一个处理回文的小例子(io_input.py).作者留了个思考题. 如何将标点去 ...

  10. Linux常用服务安装部署

    1,centos7默认是装有python的,检查python版本的命令 # 检查python版本 : python -V 2,centOS在安装python3以及tab补全功能 下载python3源码 ...