上一页 1 2 3 4 5 6 ··· 25 下一页
摘要: 题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1982 题意:无向图,给n个点,n^2条边,每条边有个一权值,其中有k个点有发电站,给出这k个点的编号,选择最小权值的边,求使得剩下的点都能接收到电。 发电站之间显然不能有边,那么把k个点合成一个点,然后在图上就MST就可以了。 1 //STATUS:C++_AC_31MS_401KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #inc... 阅读全文
posted @ 2013-10-30 00:13 zhsl 阅读(703) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3864 题意:给定一个数n,求n的因子只有四个的情况。 Miller_Rabin和Pollard_rho模板题,复杂度O(n^(1/4)),注意m^3=n的情况。 1 //STATUS:C++_AC_62MS_232KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #... 阅读全文
posted @ 2013-10-10 14:46 zhsl 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751 题意:有n个人,每个人都认识一些人,要求把他们分成两个集合,使得两个集合中的人都相符两两认识。 如果两个人单向认识或者相互不认识,那么必定在不同的集合,因此建立边,染色就可以了。。 1 //STATUS:C++_AC_31MS_388KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #... 阅读全文
posted @ 2013-09-28 11:10 zhsl 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4750 题意:Q个询问t,求在一个无向图上有多少对点(i,j)满足 i 到 j 的所有路径上的最长边的最小值大于等于t。 (i,j)所有路径上的最长边的最小值,容易想到就是 i, j之间的瓶颈路,瓶颈路也就是最小生成树上的边了。注意到每条边的权值都是不相等的,那么MST就是确定的。假设当前MST的边的权值是f[i],Kruskal的并查集中维护一个cnt[i],表示以节点 i 为根的集合的节点个数,那么两个集合x和y合并,点对数就增加cnt[fa[x]]*cnt[fa[y]]*2,sum为点... 阅读全文
posted @ 2013-09-28 11:07 zhsl 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4749 题意:给两个串S和P,求S串中存在多少个与P串的大小关系一样的串。 因为数字的范围是1 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 ... 阅读全文
posted @ 2013-09-28 10:49 zhsl 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4747 题意:求一个数列中,所有mex(L,R)的和。 注意到mex是单调不降的,那么首先预处理出mex(1,j)的值,复杂度O(n),因为mex最大为n。同时预处理出每个数a[i]的右边第一次出现a[i]的位置,用next[i]表示。然后依次从1开始枚举起点 i,则就是求 i 到n的所有mex的和了。i从i+1变化,j>next[i]的mex值都不会变化,因为还是存在a[i]。那么只要考虑i+1到next[i]-1这个区间了,这个区间中,mex第一次大于a[i]的位置k,[k,next[i. 阅读全文
posted @ 2013-09-28 01:06 zhsl 阅读(419) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4742 题意:求3维的LIS。。 用分治算法搞得,参考了cxlove的题解。。 首先按照x排序,然后每个三元组一个编号1-n。接下来只要考虑y和z的值,假设[l,mid]区间已经求好,那么我们对[l,r]区间按照y排序,更新[mid+1,r]区间的最优值时,只要考虑z值了,用树状数组维护z的最长LIS,遇到[mid+1,r]区间的就更新。 1 //STATUS:C++_AC_1750MS_5348KB 2 #include 3 #include 4 #include 5 /... 阅读全文
posted @ 2013-09-28 00:39 zhsl 阅读(609) 评论(1) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题意:在有重边的无向图中,求权值最小的桥。 注意trick就好了,ans为0时输出1,总要有一个人去丢炸弹吧。。。 1 //STATUS:C++_AC_62MS_8144KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #includ... 阅读全文
posted @ 2013-09-28 00:18 zhsl 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4737 题意:给一个数列a0, a1... , an-1,令f(i, j) = ai|ai+1|ai+2| ... | aj,求数列中有多少对f(i,j)满足f(i,j) 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #i... 阅读全文
posted @ 2013-09-28 00:12 zhsl 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 注意到F(x)的值比较小,所以可以先预处理所有F(x)的组合个数。f[i][j]表示 i 位数时F(x)为 j 的个数,方程容易转移:f[i][1 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include ... 阅读全文
posted @ 2013-09-27 23:35 zhsl 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4727 水题。。 1 //STATUS:C++_AC_187MS_288KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #i... 阅读全文
posted @ 2013-09-13 00:53 zhsl 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/userstatus.php?user=zhsl 题意:给两个大数,他们之间的加法法则每位相加不进位。现在可以对两个大数的每位重新排序,但是首位不能为0,求两个数相加最大的和。 从最高位开始,考虑和最大贪心,每次从两个大数中找两位a和b,max=(a+b)%10的和最大。如果max有多种组成情况,对于a+b10的组合情况,如果有a+b10的组合情况。。 1 //STATUS:C++_AC_453MS_2260KB 2 #include 3 #include 4 #include 5 //#include 6 #i... 阅读全文
posted @ 2013-09-13 00:52 zhsl 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4725 如果直接建图复杂度过大,但是考虑到每层之间的有效边很少,只要在每层增加两个虚拟节点n+i和2*n+i。n+i节点向i 层的所有连边,权值为0。i 层的所有点向2*n+i节点连边,权值为0。然后每层直接建立边就可以了,即2*n+i-1向n+i连边,权值为c,2*n+i向n+i-1连边,权值为c。3*n个点,最多有有9*n条边。。 1 //STATUS:C++_AC_730MS_14340KB 2 #include 3 #include 4 #include 5 //#in... 阅读全文
posted @ 2013-09-13 00:42 zhsl 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722 简单的数位DP,f[i][j][k]表示第 i 位数为 j 时余数为k的个数,然后直接找就可以了。。 1 //STATUS:C++_AC_31MS_412KB 2 #include 3 #include 4 //#include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #in... 阅读全文
posted @ 2013-09-13 00:35 zhsl 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4720 先两两点之间枚举,如果不能找的最小的圆,那么求外心即可。。 1 //STATUS:C++_AC_0MS_292KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16... 阅读全文
posted @ 2013-09-13 00:34 zhsl 阅读(261) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 25 下一页