- 博客(14)
- 收藏
- 关注
原创 最长公共上升子序列LCIS
int LCIS() { int i,j,k; memset(f,0,sizeof(f)); for(i=0;i<n;i++) { k=0; for(j=0;j<m;j++) { if(a[i]==b[j]) //如果a[i]==b[j] {
2014-05-04 22:28:20 478
原创 [2014Contest_2I]The Worst Schedule
解题思路: 涨姿势,什么叫闭合图http://www.cnblogs.com/wuyiqi/archive/2012/03/12/2391960.html 第一种解法: 第一问:s和i点连一个权为ai的边,y和i点连一个权为bi的边,若j依赖i,则i向j连一条权为inf的边。对图求最小割。 图可以这样建的原因是:假设j依赖i,若i到y的边断了,即i为延迟完成。这时候从s到i的的残留
2014-04-01 00:27:29 483
原创 [2014Contest_1B]Big Keng
解题思路:第一感觉是三分,然后确实写了一个,由于输入范围没给三分的边界不好确定,反正我弄个了好多个都TLE了。 其实题目也再暗示,不给输入范围和精确的样例输出。 很明显物体放大后最优的比例是不变的,我一开始SB没想到。 #include #include #include #include #include #include #include #include #in
2014-03-26 00:08:49 477
原创 [2014Contest_1I]How Many Sets II
解题思路:相当于给你n-m个球,你在上面放m个隔板,一共有C(n-m+1, m) % p种方法。 重要的地方是,在求完分母x = (1*2*3*...*m) % p后,我是直接对它x求逆得到x^p-2。由于m有可能大于p,m和p是不互质的,所以不能直接对x求逆。 解决的方法是用到的是Lucas定理:Lucas(n, m) = Lucas(n / p, m / p) * C(n % p, m %
2014-03-25 21:33:20 538
原创 [HDU1542]Atlantis
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1542 与以往线段树不同的地方是区间[l, r]表示的是线段为[l, r + 1],因为比如说对区间[1, 4]建树,它的儿子分别为[1, 2]和[3, 4],如果直接用这个区间表示线段,则2到3这部分没有了。特别的,当l==r时,结点[l, r]是指一条长度为1的线段,它起点为l,终点为l
2013-07-22 20:33:29 479
原创 [UVA10005]Packing polygons
题目大意:给定圆的半径,是否可以覆盖一个给定的简单多边形。 应该知道的: 一、三角形外心的求法:用向量的方法表示两条垂直平分线,再用公式求交。 二、张角法:若一条线段AB上方最小的张角为a(对应点为C),下方最小的张角为b(对应点为D),若a+b大于等于pi时,则三角形ABD或ABC的外接圆可以覆盖所有的点。 三、定理:令Pi={p1,p2,...,pi}, Di代表相对于Pi的最
2013-07-21 20:35:50 634
原创 [POJ3468]A Simple Problem with Integers
题目地址:http://poj.org/problem?id=3468 #include #include #include #include #include #include #include #include #include using namespace std; #define lson l , mid , rt << 1 #define rson mid + 1 , r
2013-07-18 23:02:30 433
原创 [HDU1698]Just a Hook
#include #include #include #include #include #include #include #include #include using namespace std; #define lson l , mid , rt << 1 #define rson mid + 1 , r , rt << 1 | 1 const int maxn = 120000; i
2013-07-18 21:42:30 498
原创 [POJ3270]Cow Sorting
题目大意:给定一个序列,每次可以选择两个元素a和b交换,代价为a+b,求将其变为升序的最小代价。 解题思路:将序列表示为循环相乘的形式,假设a的目标位置为x,x下的数为b,那么a和b必定在同一个循环内。容易想到将各个循环分别求解,用循环内最小的数作为媒介。但注意到两个循环A和B,将它们乘上对换(a,b),其中a属于A,b属于B,A和B将合成一个大循环C,而C内的最小的数比A或者B内的最小的
2013-05-28 17:35:56 521
转载 [HDU2256]Problem of Precision
题目大意: #include #include #include #include #include #include using namespace std; struct Matrix { int element[2][2]; }; int n, kase; Matrix a, b; Matrix MUL(Matrix a, Matrix b) {
2013-05-27 17:14:52 526
原创 [POJ1201]Intervals && [POJ2983]Is the Information Reliable
题目大意:有N个区间,起点A,终点B,要在[A,B]中选出不少于C个数,问一共最少可以选出多少个数。 解题思路:用S[I]表示前I个数一共选出了多少个数,根据题目有S[B] - S[A - 1] >= C,即S[A - 1] + C #include #include #include #include #include #include using namespac
2013-05-26 13:04:39 443
原创 [UVALive4394]String Painter
题目大意:两个字符串,a是原串,b是目标串,一次可以把a的任意段所有字母变成同一个字母,问用最少次数将a变成b。 解题思路: 考虑第j位 如果a[j]!=b[j] 则第j位一定要刷成b[j] 假设是从第i位刷到第j位(i和j要满足b[i]等于b[j]) 那么又要求从i+1到j-1位刷成正确的步数 但是这时候a[i+1]到a[j-1]已经变成了b[j] 也就是说一步染色后实质上
2013-03-28 14:24:33 749
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人