04 2016 档案
摘要:Description 给你一个N个点的凸多边形,求离每一个点最远的点。 给你一个N个点的凸多边形,求离每一个点最远的点。 Input 本题有多组数据,第一行一个数T,表示数据组数。 每组数据第一行一个数N,表示凸多边形点的个数,接下来N对数,依次表示1~N这N个点的坐标,按照逆时针给出。 本题有多
阅读全文
摘要:树链剖分 线段树维护区间最小值,区间最大值 更新,对于每一个区间,找到当前区间的最小值的最大值,和要更新的值比较,如果比最大值还大,则此数对于以后的询问无任何贡献,直接返回即可,若有贡献,则一直递归到叶子节点,将最值全部更新 询问,直接询问区间最小值即可 /* Alice 和 Bob 在玩一个游戏。
阅读全文
摘要:题目大意:n个点,求第k远的点对的距离 KD树裸题 注意要用堆维护第k远 #include<bits/stdc++.h> #define ll unsigned long long #define maxn 100010 using namespace std; inline int read(){
阅读全文
摘要:题目大意:一个无向图,求所有点对不同的最小割种类数 最小割最多有n-1个,这n-1个最小割构成一个最小割树 分治法寻找n-1个最小割。对于当前点集X,任选两点为ST做最小割,然后找出与S相连的所有点和与T相连的所有点构成S集与T集,更新S集与T集的最小割。然后递归处理两个集合。 最后将最小割排序,找
阅读全文
摘要:题目大意:给定n个数字以及每个数字的个数和权值,将满足条件的数字配对,使得总代价不小于0,且配对最多 最大费用最大流拆点,对于每个点,连一条由S到该点的边,容量为b,花费为0,再连一条到T的边 对于每个合法的配对,连一条容量无穷,费用为ci*cj的边 跑最大费用最大流即可 #include<bits
阅读全文
摘要:题目大意:有一个数列,将其分成m段,求最小方差 先弄出n^3的dp,打出决策点,然后发现决策点是单调递增的,决策单调性搞一搞就可以了 #include<bits/stdc++.h> #define ll long long #define maxn 3010 using namespace std;
阅读全文
摘要:题目大意:一个字符串,刚开始为空,依次在后面添加一个字符,问每次添加完字符后本质不同的字符串有多少种 后缀自动机裸题,添加字符时,更新的结点个数即为新增加的子串 #include<bits/stdc++.h> using namespace std; inline int read(){ int s
阅读全文
摘要:题目大意:一个数列A,n个元素,其中m个元素不动,其他元素均不在相应位置,问有多少种排列 保证m个元素不动,组合数学直接计算,剩余元素错位排列一下即可 #include<bits/stdc++.h> #define ll long long #define mod 1000000007 using
阅读全文
摘要:Description 兔子们在玩两个串的游戏。给定两个字符串S和T,兔子们想知道T在S中出现了几次, 分别在哪些位置出现。注意T中可能有“?”字符,这个字符可以匹配任何字符。 兔子们在玩两个串的游戏。给定两个字符串S和T,兔子们想知道T在S中出现了几次, 分别在哪些位置出现。注意T中可能有“?”字
阅读全文
摘要:1、题目大意:N堆石子摆成一条线。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。n<=100 n^3 #include<bits/stdc++.h> using namespace std; int
阅读全文
摘要:Description 背景 小M还是个特么喜欢玩MC的孩纸。。。 描述 小M在MC里开辟了两块巨大的耕地A和B(你可以认为容量是无穷),现在,小P有n中作物的种子,每种作物的种子有1个(就是可以种一棵作物)(用1...n编号),现在,第i种作物种植在A中种植可以获得ai的收益,在B中种植可以获得b
阅读全文
摘要:题目大意:一个凸包,随机一个点使得其与前两个点组成的面积比与其他相邻两个点组成的面积小的概率 根据题意列方程,最后求n条直线的交的面积与原凸包面积的比值 1 #include<bits/stdc++.h> 2 #define maxn 100010 3 #define eps 1e-10 4 usi
阅读全文
摘要:传送阵:http://acm.hdu.edu.cn/showproblem.php?pid=4899 题目大意:给定一个DNA序列,求有多少长度为m的序列与该序列的最长公共子序列长度为0,1...|S|; 分析:我们可以考虑对于求两个串的最长公共子序列的dp:f[i,j]代表第一个串到了i,第二个串
阅读全文
摘要:传送阵:http://acm.hdu.edu.cn/showproblem.php?pid=4898 题目大意:一个首尾相连的字符串,将其分为k个子串,使得最大的字串最小 将所有子串排序,输出第k小即可 对于有循环节的串,用抽屉原理解决即可 #include<iostream> #include<c
阅读全文
摘要:传送阵:http://acm.hdu.edu.cn/showproblem.php?pid=4897 题目大意:一棵树,三个操作:1、将某条链取反,2、将与某条链相邻的边取反,3、查询某条链上为1的边数 树链剖分直接上 某条边是否被修改取决于这条边以及这条边的两个端点 对于第一个操作相当于修改边,第
阅读全文
摘要:题目大意:平面上一堆点,用两条平行于坐标轴的直线将其分为四部分,使得点数最多的一部分最少 第一维枚举,第二维三分,点集用两棵树状数组维护 #include<bits/stdc++.h> #define maxn 100010 using namespace std; inline int read(
阅读全文
摘要:题目大意:平面上两条线段,一个人从一条线段的一个点到另一条线段的一个点,最小时间是多少 路径肯定是在一条线段上走一段,然后走平面,最后再走另一条线段,那么需要确定的就是在两条线段上走的距离,其他暴力算就行了 一条线段距离的确定直接三分就好了,另一条嘛,再套个三分就好了 #include<iostre
阅读全文
摘要:题目大意:给一个点阵,其中有的地方没有点,操作是去掉某个点,并询问当前点阵中最大的正方形 若没有修改的话,裸dp 加上修改,可以考虑时光倒流,这样答案就是递增的 可以用并查集维护点的连通性,O^2的 #include<bits/stdc++.h> using namespace std; #defi
阅读全文

浙公网安备 33010602011771号