摘要:
思路:我们考虑如果取掉一个部分,那么能影响到最优解的只有离它最近的那两个部分。 因此我们考虑堆维护最小的部分,离散化离散掉区间,然后用线段树维护区间有没有雪,最后用平衡树在线段的左右端点上面维护最小的id 我讲的貌似不是很清楚。。 还有,蜜汁80分,打死也改不出来。。 阅读全文
摘要:
思路:我们可以考虑三角剖分,这样问题就变成考虑三角形的选取概率和三角形内有多少个点了。 先用树状数组预处理出三角剖分的三角形中有多少个点,然后用线段树维护,先用原点极角排序,然后枚举i,再以i极角排序,此时线段树的作用就来了,每次到一个询问的教室点,我们就在线段树里面查找之前的概率,统计贡献即可。 阅读全文
摘要:
思路:转换成n条三维空间的直线,求最大的集合使得两两有交点。 有两种情况:第一种是以某2条直线为平面,这时候只要统计这个平面上有几条斜率不同的直线就可以了 还有一种是全部交于同一点,这个也只要判断就可以了。 然后我并不能改出来,wa了好多个点 WA的程序: 只好改成std的写法了。 阅读全文
摘要:
题意:有一堆兔子,还有一个r为半径的圆,要求找到最大集合满足这个集合里的兔子两两连边的直线不经过圆。 思路:发现如果有两个点之间连边不经过圆,那么他们到圆的切线会构成一段区间,那么这两个点的区间一定会有交集,形如s0 s1 e0 e1 同样的,如果是n个点,那就是s0 s1 s2..sn e0 e1 阅读全文
摘要:
http://poj.org/problem?id=1226 题意:给定n个串。求一个最长的串,使得这个串或者其反串在每个串中都出现过? 思路:先在大串里面加入正反串,然后二分,判定即可。 阅读全文
摘要:
http://www.lydsy.com/JudgeOnline/problem.php?id=2732 题意:给你n个靶子,让你求是否有一个经过原点的抛物线经过最多的前k个靶子,求出最大的k 思路: 就是这样的形式:y1<=ax^2+bx<=y2,这里y1,y2,x是已知的,有多组,我们发现,变量 阅读全文
摘要:
http://www.lightoj.com/volume_showproblem.php?problem=1314 题意:给定一个串和p,q,求长度在p到q之间的子串有几种 思路:后缀数组,对于每个位置的贡献是min(n-sa[i],q),然后要减去重复和没有的部分,就是max(height[i] 阅读全文
摘要:
http://www.spoj.com/problems/PHRASES/ 题意:给n个串,求n个串里面都有2个不重叠的最长的字串长度。 思路:二分答案,然后就可以嘿嘿嘿 PS:辣鸡题目毁我青春,一开始二分的时候ans没有赋初值为0,结果没答案的时候就会输出奇怪的数字T_T,其实主要还是怪我不小心。 阅读全文
摘要:
http://poj.org/problem?id=3683 思路:2-SAT,输出任意一组方案,O(m+n) 为什么我会犯用错数组这种错误。。 阅读全文
摘要:
2-SAT,复杂度是O(m),每个点分成2个点,代表选或者不选,然后建图有个原则,就是一条有向边x->y代表x选了y必选,然后建图完tarjan,如果有2个点在同一个环中,无解,否则建立反向图拓扑排序,搜到一个点,就把他对立点和后继全部选为不选。 阅读全文