http://www.lightoj.com/volume_showproblem.php?problem=1088 题意:给出N个点,Q个查询,问在区间内的点数有多少个. 思路:直接在线二分,注意边界问题 /** @Date : 2016-12-17-19.03 * @Author : Lweleth (SoungEarlf@gmail.com) * @Link : https://github.com/ * @Version : */ #include<bits/stdc++.h> #de…
题目链接: http://www.lightoj.com/volume_showproblem.php?problem=1088 题目描述: 给出一个n位数升序排列的数列,然后q个查询,每个查询问指定的区间覆盖了数列中几个数? 解题思路: 二分枚举区间的起始点和终点在数列中的位置. upper_bound() 返回数列中第一个大于所查询数的位置,或者没有大于所查询的数返回数列长度(越界) lower_bound()  返回数列中第一个等于或者大于所查询数的位置,或者没有等于,大于所查询数返回数列…
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1088 题意: 有一维的n个点和q条线段.询问每条线段上的点有多少个. 思路:寻找这些点中对于每条线段的上下界就可以. 代码: #include <stdio.h> #include <ctime> #include <math.h> #include <limits.h> #include <complex> #include…
http://www.lightoj.com/volume_showproblem.php?problem=1089 题意:给出许多区间,查询某个点所在的区间个数 思路:线段树,由于给出的是区间,查询的是点,考虑将其离线并离散化,普通线段树即可. /** @Date : 2016-12-17-20.49 * @Author : Lweleth (SoungEarlf@gmail.com) * @Link : https://github.com/ * @Version : */ #include…
[CF429E]Points and Segments(欧拉回路) 题面 CF 洛谷 题解 欧拉回路有这样一个性质,如果把所有点在平面内排成一行,路径看成区间的覆盖,那么每个点被从左往右的覆盖次数等于从右往左的覆盖次数. 发现这题很类似上面这个东西. 将\(L\)向\(R+1\)连边,但是不能直接做欧拉回路,因为图不连通. 找到度数为奇数的所有点,把相邻的两个两两配对,然后在他们之间连条边,然后求解欧拉回路. 因为这样子配对完之后新增的区间不交,令黑色区间为\(+1\),白色区间为\(-1\),…
[CF429E]Points and Segments 题意:给你数轴上的n条线段$[l_i,r_i]$,你要给每条线段确定一个权值+1/-1,使得:对于数轴上的任一个点,所有包含它的线段的权值和只能是+1,-1或0. $n\le 10^5$ 题解:首先,我们用扫描线,整个数轴被分成若干个小区间.对于一个小区间,如果有偶数条线段包含它,则它的权值只能是0,否则可以是+1/-1.我们可以在所有权值为+1/-1的小区间处人为的增加一条线段,这样的话我们只需要让所有小区间权值都是0就行了. 嗯...每…
A. Points and Segments (easy) Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/430/problem/A Description Iahub isn't well prepared on geometry problems, but he heard that this year there will be a lot of geometry problems on…
大一生活真 特么 ”丰富多彩“ ,多彩到我要忙到哭泣,身为班长,很多班级的事情需要管理,也是,什么东西都得体验学一学,从学生会主席.团委团总支.社团社长都体验过一番了,现在差个班长也没试过,就来体验了一番哈哈哈,其实这种精心服务一个班级的人还是很棒的一种感觉呢.思考思考最近的任务啊: (1)英语剧 (2)三下乡公益策划 (3)兼职 - 影视剧组后期特效 (3)三月底程序设计大赛天梯赛 (4)班会以及班级细节事件处理 (5)多模态视频处理 (6)兼职 - 校方艺考航拍记录 (7)六月四级考试和三下…
A. Points in Segments time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You are given a set of nn segments on the axis OxOx , each segment has integer endpoints between 11 and mm inclusive. S…
链接 CF429E Points and Segments 给定\(n\)条线段,然后给这些线段红蓝染色,求最后直线上上任意一个点被蓝色及红色线段覆盖次数之差的绝对值不大于\(1\),构造方案,\(n\leq10^5\) 欧拉回路. 考虑差分的思想(一般这样的区间覆盖问题都可以转化成差分,变成两两匹配问题.),一个线段被染色也就是\(l++\),\((r+1)--\) 设从\(l\)到\(r+1\)边为红色,\(r+1\)到\(l\)的边为蓝色. 那么我们就在考虑怎么样遍历这张图,使得每个点入度…
#include <iostream> #include <cstdio> #include <cmath> using namespace std; const int maxN = 100005; int a[maxN]; int t, tt; int n, q, x, y; int Bsearch_lower_bound(int x) { int l = 0, r = n - 1, mid = 0; while (l <= r) { mid = (l + r…
Problem Introduction The goal in this problem is given a set of segments on a line and a set of points on a line, to count, for each point, the number of segments which contain it. Problem Description Task.In this problem you are given a set of point…
Description Little Petya likes points a lot. Recently his mom has presented him n points lying on the line OX. Now Petya is wondering in how many ways he can choose three distinct points so that the distance between the two farthest of them doesn't e…
codeforces 895B XK Segments 题目大意: 寻找符合要求的\((i,j)\)对,有:\[a_i \le a_j \] 同时存在\(k\),且\(k\)能够被\(x\)整除,\(k\)满足:\[a_i \le k \le a_j\] 思路: 整体数组排序,对于当前\(a_i\)寻找符合条件的\(a_j\)的最大值和最小值 有:\[(a_i-1)/x+k=a_j/x\] 所以可以通过二分查找获得,这里我寻找\(((a_i-1)/x+k)*x\)为下界,\(((a_i-1)/x…
题目链接:problem=1127">http://www.lightoj.com/volume_showproblem.php?problem=1127 题意:有n个物体(n<30)和一个容量为W的容器.问将容器不装满的放置物品的方式有多少种. 思路 : 状态压缩+二分.将前n/2个物体看做一个总体,将剩下的看做一个总体.1<<(n/2)个状态代表前一半的物品使用情况,然后求出每一种状态的总的体积.排序.对于后面的那一半也是.答案仅仅需枚举一半然后在还有一半中找和W差的…
题目链接:http://lightoj.com/volume_showproblem.php? problem=1043 题意:一个三角形ABC,DE//BC.已知三角形ADE和四边形BDEC的面积的比,求AD的长度. 解法:二分AD边就可以 代码: #include <stdio.h> #include <ctime> #include <math.h> #include <limits.h> #include <complex> #inclu…
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1084 题解:不妨设dp[i] 表示考虑到第i个点时最少有几组那么 if a[i]-a[i-j]<=2*k (j>=2) then dp[i]=min(dp[i],dp[i-j]+1).所以先要排序,然后用二分找到最小的j然后用线段树或者其他的方法查询(i-1~i-j)的最小值. #include <iostream> #include <cstring&g…
水到家了 #include <iostream> #include <vector> #include <algorithm> using namespace std; struct Point{ int index, pos; Point(, ){ index = index_; pos = pos_; } bool operator < (const Point& a) const{ return pos < a.pos; } }; int ma…
题目 //终于看懂题目了,,,, //一条线段里面不是每个坐标上都有要染色的点,所以为了满足条件,只能考虑那些给出坐标的点 //所以就要排序一下了,不能直接根据坐标0 1 0 1…… #include <cstdio> #include <cstring> #include <algorithm> using namespace std ; struct tt { int a,b; }aa[]; int cmp(tt x,tt y) { return x.a<y.…
题意:给出n个点,m个区间,需要给这些点涂上蓝色或者红色,使得每个区间里面的点的红色的点的个数与蓝色的点的个数的差值小于1 唉,题目的标题就标注了一个easy= = 最开始做的时候对点还有区间都排序了,模拟来做,可是错了 后来发现不管区间怎么样,只要红色和蓝色交替涂色, 就一定能满足“使得每个区间里面的点的红色的点的个数与蓝色的点的个数的差值小于1 ”这个条件 有点像上次做的cf交替输出奇数偶数那个A题 #include<iostream> #include<cstdio> #in…
Description 题面 题目大意:有 \(n\) 个区间 \([L_i,R_i]\) ,你要给每一个区间染红蓝,使得每一个位置被红色染过的次数与被蓝色染过的次数差的绝对值不大于\(1\) Solution 如果 \(L_i->R_i+1\) 连边 染色就变成了定向,那么一个点要被从左往右和从右往左经过的次数的绝对值之差不超过 \(1\) 发现一个环就是符合要求的,那么我们就可以试图找一个欧拉回路 考虑奇度点的处理: 我们把相邻的奇度点连起来就可以了 因为某些有交的区间并没有连边,我们用奇度…
没什么好说的 #include<iostream> using namespace std; ], x, y,n, m, ans; int main(){ cin>>n>>m; ;i<=n;++i){ cin>>x>>y; a[x]++; --a[y+]; } ;i<=;++i) a[i]+=a[i-]; ;i<=m;++i) )ans++; cout<<ans<<endl; ;i<=m;++i)…
传送门 CodeForces 洛谷 Solution 考虑欧拉回路有一个性质. 如果把点抽出来搞成一条直线,路径看成区间覆盖,那么一个点从左往右被覆盖的次数等于从右往左被覆盖的次数. 发现这个性质和本问题十分的相似,那么我们就想一下怎么欧拉回路解决. 考虑显然可以差分对吧,如果把红色的贡献看成\(+1\),蓝色的看成\(-1\),那么就可以差分了. 那么这个也等价于欧拉回路,接着考虑对于奇数点,两两之间匹配就好了. 代码实现 代码戳这里…
传送门 如果把一条线段\([l,r]\)看成一条无向边\((l,r+1)\),从\(l\)走到\(r+1\)表示线段\([l,r]\)染成红色,从\(r+1\)走到\(l\)表示线段\([l,r]\)染成蓝色,那么题目等价于给每一条边定下方向,使得对于所有点,从左往右经过的次数和从右往左经过的次数差的绝对值不超过\(1\). 对于直线上所有奇数度的点,从左往右两两配对,那么就是要求对于所有的点从左往右经过的次数等于从右往左经过的次数.不难想到这是一个欧拉图.求解欧拉回路给边定向即可. 注意直线上…
题解: 方法非常巧妙的一道题 首先考虑要求全部为0怎么做 发现是个欧拉回路的问题(很巧妙) 直接dfs一遍就可以了 而这道题 要求是-1,1,0 我们可以先离散化 完了之后判断每个点被奇数还是偶数条边覆盖 如果是奇数,那么就多连一条边 另外有个细节是为了要用欧拉回路区间左开右闭 代码: #include <bits/stdc++.h> using namespace std; const int N=4e5; ; int n,cnt[N],rd[N],b[N],head[N],l1; stru…
题意:之前愣是没看懂题意...就是给你n个点的坐标xi,然后还规定了Li,Ri,要求给每个点染色,每一组L,R内的点红色和黑色的个数不能相差大于1个,问你能不能染成功,不能输出-1,能就按照输入的顺序输出颜色 思路:我会说我根本没想到怎么做吗?显然只要交替染色相差就不会大于1 代码: #include<set> #include<map> #include<stack> #include<cmath> #include<queue> #inclu…
1370 - Bi-shoe and Phi-shoe   PDF (English) Statistics   Time Limit: 2 second(s) Memory Limit: 32 MB Bamboo Pole-vault is a massively popular sport in Xzhiland. And Master Phi-shoe is a very popular coach for his success. He needs some bamboos for hi…
题意:有一条上面有n个点的数轴,给定m次操作,每次覆盖(x[i],y[i]),求最后没有被覆盖过的点的数量与他们的编号 n,m<=100 思路: #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<iostream> #include<algorithm> #include<map> #include<set&…
题意: 给你n个数,然后给你q个区间,然后问你这n个数有多少个在这个区间上: 思路: 树状数组搞搞,但是注意到数的范围很大,所以先离散化一下. 初始化初始化!!!卧槽,wa的我好郁闷... #include <bits/stdc++.h> using namespace std; typedef long long LL; const int N=2e5+10; int arr[N]; int c[N*4]; int n,Q; void add(int i) { while(i<=n+2…
Codeforces 题面传送门 & 洛谷题面传送门 果然我不具备融会贯通的能力/ll 看到这样的设问我们可以很自然地联想到这道题,具体来说我们可以通过某种方式建出一张图,然后根据"每个点度都是偶数的图必然每个连通块都存在欧拉回路"这一条件构造出原图的欧拉回路进而求解答案.因此现在问题转化为如何构建出这样一张图出来. 首先一个非常直观的想法是对于每个区间新建一个左部点,对于数轴上每一个整点新建一个右部点,然后从每个区间表示的左部点向这段区间中所有整点表示的右部点连边,这样问题可…