codeforces 397A On Segment's Own Points-yy

题意:有很多区间,找出目标区间不跟任何其他区间重叠的部分的长度

分析:

觉得很简单的题,但是脑子没转过弯了,一直没对。

思路就是用一个vis[]数组记录这个点是否被其他区间用了,但是不知道怎么了,我一直固执的要记录两个端点,结果,当然怎么都不对,因为要求的是区间的长度,跟点的个数不是一致的,而且最致命的就是这种方法会错过这样的区间:比如被别人占有的区间是(1,2),(3,4)  则目标区间还能用(2,3),但是如果记录了两个端点,那么会漏掉这个情况。然后我就一直卡在这了。其实只要记录区间的一个端点,不就好了!好好想想端点与区间的关系。

代码:

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	int n,l[200],r[200];
	int vis[200];
	while(cin>>n){
		memset(vis,0,sizeof(vis));
		int tot=0;
		for(int i=0;i<n;i++) cin>>l[i]>>r[i];
		for(int i=l[0]+1;i<=r[0];i++) vis[i]=1;
		for(int i=1;i<n;i++){
			for(int j=l[i]+1;j<=r[i];j++) vis[j]=0;
		}
		for(int i=l[0]+1;i<=r[0];i++) if(vis[i]) tot++;
		cout<<tot<<endl;
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

codeforces 397A On Segment's Own Points-yy

时间: 2024-10-03 00:18:48

codeforces 397A On Segment's Own Points-yy的相关文章

Codeforces Round #245 (Div. 2) A - Points and Segments (easy)

水到家了 #include <iostream> #include <vector> #include <algorithm> using namespace std; struct Point{ int index, pos; Point(int index_ = 0, int pos_ = 0){ index = index_; pos = pos_; } bool operator < (const Point& a) const{ return p

Codeforces Round #486 (Div. 3) D. Points and Powers of Two

Codeforces Round #486 (Div. 3) D. Points and Powers of Two 题目连接: http://codeforces.com/group/T0ITBvoeEx/contest/988/problem/D Description There are n distinct points on a coordinate line, the coordinate of i-th point equals to xi. Choose a subset of

CodeForces - 1073E :Segment Sum (数位DP)

You are given two integers l l and r r (l≤r l≤r ). Your task is to calculate the sum of numbers from l l to r r (including l l and r r ) such that each number contains at most k k different digits, and print this sum modulo 998244353 998244353 . For

codeforces gym 100345I Segment Transformations [想法题]

题意简述 给定一个由A C G T四个字母组成的密码锁(每拨动一次 A变C C变G G变T T变A) 密码锁有n位 规定每次操作可以选取连续的一段拨动1~3次 问最少几次操作可以将初始状态变到末状态 并且把每次操作输出 (此题有spj) --------------------------------------------------------------------------------------------------------- 为了方便叙述 所有没有明确说明的位置均是在mod4

Codeforces Round #319 (Div. 2) E - Points on Plane

题目大意:在一个平面里有n个点,点坐标的值在1-1e6之间,让你给出一个遍历所有点的顺序,要求每个点走一次,且 曼哈顿距离之和小于25*1e8. 思路:想了一会就有了思路,我们可以把1e6的x,y坐标都分成2000份,每份500,然后这样整个平面就被分成 了2000*2000个区域,然后按区域输出点就行了. 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 vector<int> ans[2005][2005];

Codeforces Round #501 (Div. 3) A Points in Segments

翻译 现在有一个数轴,上面会有\(M\)个点,标号为\(1\)到\(N\),现在给你在数轴上的条\(N\)线段的起始与终止的点,问哪几个点没有被这样线段覆盖,从小到大输出. 思路 签到题目.感觉几乎和一道题一样:校门外的树,撞题是很尴尬.思路差不多,即为开一个数组,全部赋值为\(0\),输入的线段的时候,将其起点与终点的全部的点赋值为\(1\),最后跑一下看看那些为\(0\)的点就完事了. Code #include<iostream> using namespace std; int boo

[POJ 3788] Interior Points of Lattice Polygons

同swustoj 169 Interior Points of Lattice Polygons Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 229   Accepted: 152 Description A lattice point is a point with integer coordinates. A lattice polygon is a polygon with all vertices lattic

codeforces 850 A

codeforces 850 A A. Five Dimensional Points introduction 在n个点中,是否存在一个点,与另外任意两个点连成的向量,为锐角 method 首先在2维的空间中,要让角不为锐角,最多只能存在5个点(四个向量) .鸽巢原理.在k维空间中,最多只能存在2k+1个节点.k=5时,最多只能存在11个节点.所以: 输出0,如果节点数大于11 枚举,如果节点数小于等于10 tips 成角的向量不能随意交换向量的两个端点 节点数=向量数+ 1 鸽巢原理是非常有

HDU 4081 Qin Shi Huang&#39;s National Road System 最小生成树+倍增求LCA

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4081 Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5428    Accepted Submission(s): 1902 Problem Description