传送门

题意

给出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. 显示倒计时的Button按钮

    package com.pingyijinren.helloworld.activity; import android.os.CountDownTimer; import android.suppo ...

  2. linux修改PS1,自定义命令提示符样式

    目录 参数说明 修改颜色 linux默认的命令提示符是这样的: 白色的,如果当前执行的命令很多的话,一整块屏幕上全是一堆输出信息,上一条命令在哪?我刚输入的命令在哪?找的头晕.有没有办法可以修改命令提 ...

  3. Oracle Spatial中的空间索引

    转自cryolite原文 Oracle Spatial中的空间索引 Oracle Spatial可对空间数据进行R-tree索引,每个空间图层(Spatial Layer)的空间索引元信息都可以在US ...

  4. maven打包时的三方包的选择顺序

    在一个项目有多个模块引用多个版本的某个插件(或者叫三方包.jar包等)时,如何解决版本冲突问题?最终选用某个版本还是选择几个版本? maven在遇到上面的情况时,会智能处理版本冲突,最终选择一个版本, ...

  5. VS2012关于hash_map的使用简略

    VS关于hash_map使用的一些经常使用构造方法汇总,包含基本类型和结构体,相信够一般模仿使用: # include<hash_map> #include<iostream> ...

  6. HDU 1201 18岁生日 【日期】

    18岁生日 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  7. Office WORD WPS如何取消拼写检查

    1 审阅-修订-修订选项-拼写,全部取消勾选.

  8. cocos2d-x 2.0下怎样让BOX2D DEBUG DRAW的方法笔记

    原文链接: 这两天玩 cocos2d-x 和 box2d,发现 cocos2d-x 2.0 版本号要使用老方法 debug 渲染会出错.于是找到了新方法来 debug draw: 首先在你的头文件中添 ...

  9. 【转载】企业服务总线Enterprise service bus介绍

    企业服务总线(Enterprise service bus). 以往企业已经实现了很多服务, 构成了面向服务的架构,也就是我们常说的SOA. 服务的参与双方都必须建立1对1 的联系,让我们回顾一下SO ...

  10. poj 1840 哈希

    Eqs Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 14093   Accepted: 6927 Description ...