Fork me on GitHub
摘要: 题意:将一个无向图中的双向边改成单向边使图强连通,问最多能改多少条边,输出改造后的图。分析:1.双连通做法:双连通图转强连通图的算法:对双连通图进行dfs,在搜索的过程中就能按照搜索的方向给所有边定向,其中桥不能改造,只能保留双向边。代码:#include #include #include #in... 阅读全文
posted @ 2014-07-20 15:12 whatbeg 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 题意:n个城市,中间有m条道路(双向),再给出k条铁路,铁路直接从点1到点v,现在要拆掉一些铁路,在保证不影响每个点的最短距离(距离1)不变的情况下,问最多能删除多少条铁路分析:先求一次最短路,铁路的权值大于该点最短距离的显然可以删去,否则将该条边加入图中,再求最短路,记录每个点的前一个点,然后又枚... 阅读全文
posted @ 2014-07-20 10:21 whatbeg 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 题意:给出n条y=ai*x+bi的直线。对于这些直线,如果存在x使得该直线y大于其他任意一直线,那么这条直线可以被看见,问有多少条直线可以被看见。做法什么的不讲了,参见:http://blog.csdn.net/ten_three/article/details/12289427 以及 http:/... 阅读全文
posted @ 2014-07-17 23:41 whatbeg 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个只有三行的方块阵(横向最多100个),然后p,q,r分别代表第1,2,3层的方格数,两人轮流去掉一个格子,此时这个格子的右上方都会被去掉,面临只剩最左下角的一个格子的状态的人输,问先手能否赢,要赢得话应该取哪个方格。解法:记忆化搜索,设dp[p][q][r]表示第1,2,3层方格数分别为... 阅读全文
posted @ 2014-07-16 23:45 whatbeg 阅读(291) 评论(0) 推荐(1) 编辑
摘要: 枚举两点,然后同步BFS,看代码吧,很容易懂的。代码:#include #include #include #include #include #include #include #define Mod 1000000007using namespace std;struct Point{ i... 阅读全文
posted @ 2014-07-16 21:00 whatbeg 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 题意:给一些点,问这些点能够构成多少个凸四边形做法:1.直接判凸包2.逆向思维,判凹包,不是凹包就是凸包了怎样的四边形才是凹四边形呢?凹四边形总有一点在三个顶点的内部,假如顶点为A,B,C,D,则构成四个三角形:ABC,ACD,ABD,BCD,假如某一个三角形(最外的三个顶点)的面积等于另三个三角形... 阅读全文
posted @ 2014-07-15 00:00 whatbeg 阅读(613) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个矩阵,每次选某一行或者某一列,得到的价值为那一行或列的和,然后该行每个元素减去p。问连续取k次能得到的最大总价值为多少。解法:如果p=0,即永远不减数,那么最优肯定是取每行或每列那个最大的取k次,所以最优解由此推出。如果不管p,先拿,最后再减去那些行列交叉点,因为每个点的值只能取一次,... 阅读全文
posted @ 2014-07-14 01:27 whatbeg 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 当时不知道怎么下手,后来一看原来就是排个序然后乱搞就行了。解法不想写了,可见:http://blog.csdn.net/u013368721/article/details/28071241其实就是滑动窗口的思想。代码:#include #include #include #include #inc... 阅读全文
posted @ 2014-07-13 15:06 whatbeg 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 题意:有N个齿轮,三种操作1.操作L x y:把齿轮x,y链接,若x,y已经属于某个齿轮组中,则这两组也会合并。2.操作Q x y:询问x,y旋转方向是否相同(等价于齿轮x,y的相对距离的奇偶性)。3.操作D x :拆下齿轮x,并且x所在的齿轮组不会断开4.操作S x : 查询齿轮x所在的齿轮组有... 阅读全文
posted @ 2014-07-13 14:21 whatbeg 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 原题: ZOJ 3684http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3684题意: 给你一棵树,树的根是树的中心(到其他点的最远距离最小)。现在你要破坏所有叶子节点到根节点的连通,每条边破坏都需要一定能量。你有一个能量为p... 阅读全文
posted @ 2014-07-12 20:17 whatbeg 阅读(506) 评论(0) 推荐(0) 编辑
摘要: 原题:ZOJ 3681http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3681题意:给一个m,n,m表示m个人,可以把m个人分成k组,每组m/k个人,人数要一样,如果超过一半的组支持Italy的话,说明这n个人都支持Italy... 阅读全文
posted @ 2014-07-12 11:00 whatbeg 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 原题: ZOJ 3676 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3676题意:给每个朋友一瓶可乐,可乐有普通和高级两种,每个朋友只能喝一瓶可乐,喝普通可乐的朋友会给你P个瓶盖,喝高级可乐的朋友会给你Q个瓶盖。问最多能... 阅读全文
posted @ 2014-07-11 20:07 whatbeg 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个有向图,问有多少个点由任意顶点出发都能达到。分析:首先,在一个有向无环图中,能被所有点达到点,出度一定是0。先求出所有的强连通分支,然后把每个强连通分支收缩成一个点,重新建图,这样,这个有向图就变成了一个有向无环图。在这个新的图中,只需知道出度为0的点有几个即可。如果出度为0的点超过1... 阅读全文
posted @ 2014-07-10 21:34 whatbeg 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 原题:ZOJ 3774 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3774 这题比较复杂,看这篇比较详细:http://blog.csdn.net/acdreamers/article/details/23039571 阅读全文
posted @ 2014-07-10 20:46 whatbeg 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 原题: ZOJ 3769http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3769一个带有一些限制的背包问题。假设在没有限制的情况下,那么定义:dp[i][j]表示在前 i 类物品中,总的Toughness为 j 的时候最大的伤... 阅读全文
posted @ 2014-07-10 20:00 whatbeg 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 原题:ZOJ 3772 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3772 这题算是长见识了,还从没坐过矩阵+线段树的题目呢,不要以为矩阵就一定配合快速幂来解递推式的哦。 由F(x)=F(x-1)+F(x-2)*A[x] 阅读全文
posted @ 2014-07-09 21:19 whatbeg 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 原题:ZOJ 3768http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3768一个结论:一个正整数总能用不超过三个前n项相加表示。先找一个的,在找两个,三个的,二分找,用lower_bound函数。代码:#include #i... 阅读全文
posted @ 2014-07-09 19:02 whatbeg 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 原题: FZU 2173 http://acm.fzu.edu.cn/problem.php?pid=2173 一开始看到这个题毫无头绪,根本没想到是矩阵快速幂,其实看见k那么大,就应该想到用快速幂什么的,况且n<=50,可以用矩阵来表示图。 1.为什么能用矩阵快速幂呢? 原理: 原始矩阵m[][] 阅读全文
posted @ 2014-07-08 21:28 whatbeg 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 原题: FZU 2170http://acm.fzu.edu.cn/problem.php?pid=2170这题确实是当时没读懂题目,连样例都没想通,所以没做了,所以还是感觉这样散漫的做不好,有些题目明明很简单,却因为没看懂而放弃了,甚至去玩了,这样达不到太大的效果。解法:定义: dp[i][j]:... 阅读全文
posted @ 2014-07-08 20:15 whatbeg 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 原题: FZU 2169http://acm.fzu.edu.cn/problem.php?pid=2169这题貌似有两种解法,DFS和SPFA,但是DFS怎么都RE,SPFA也要用邻接表表示边,用向量表示的话会TLE,而且用SPFA有一个异或,就是题目说要沿最短路走到都城,但是SPFA是走最短路去... 阅读全文
posted @ 2014-07-08 19:40 whatbeg 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 原题: ZOJ 3674http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3674题意不难理解,很容易想到用暴力,但是无从下手,不知道怎么实现。后来看了网上的代码,直接用vector和map暴力,用到了set_intersect... 阅读全文
posted @ 2014-07-07 23:59 whatbeg 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 原题: ZOJ 3675http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3675由m#include #include #include #include #include using namespace std;#defin... 阅读全文
posted @ 2014-07-07 22:07 whatbeg 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 原题: ZOJ 3686http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3686这题本来是一个比较水的线段树,结果一个mark坑了我好几个小时。。哎。太弱。先DFS这棵树,树形结构转换为线性结构,每个节点有一个第一次遍历的时间... 阅读全文
posted @ 2014-07-07 21:16 whatbeg 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 原题:ZOJ 3795http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3795题目大意:给定一个有向图,要求把点分为k个集合,使得每个集合中的任意两点a, b满足a, b互相不可到达。分析:求出强连通分量后缩点,得到有向无环图... 阅读全文
posted @ 2014-07-06 16:33 whatbeg 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 原题:ZOJ 3791http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3791题意:给定两个0-1序列s1, s2,操作t次,每次改变m个位置,求把s1改变为s2的方法总数。解法:DP,s1和s2哪些位置相同并不重要,重要的是... 阅读全文
posted @ 2014-07-06 16:28 whatbeg 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 原题: ZOJ 3666http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3666博弈问题。题意:给你1~N个位置,N是最终点,1~N-1中某些格子能够移石头到另外一些指定的格子,1~N-1上有M个石头,位置不定,现在Alice... 阅读全文
posted @ 2014-07-06 12:15 whatbeg 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 原题:ZOJ 3668http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3668典型差分约束题。将sum[0] ~ sum[n] 作为节点,AxR w = BxR --> x(L-1) w = -A注意还有 -10000#inc... 阅读全文
posted @ 2014-07-06 12:15 whatbeg 阅读(261) 评论(0) 推荐(0) 编辑
摘要: //求因子个数 int Facnt(int n) { int res = 1; for(int i=2;i*i 1) res = 2*res; return res; } //求因子和 int Facsum(int n) { int res = 1; for(int i=2;i*i 1) res *= (n+1); ... 阅读全文
posted @ 2014-07-04 23:27 whatbeg 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 原题: ZOJ 3781http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3781题意:给一个n*m的X,O构成的格子,对一个点操作可以使与它相连通的所有一样颜色的格子翻转颜色(X->O或O->X),问给定的矩阵最少操作多少次可... 阅读全文
posted @ 2014-07-03 11:03 whatbeg 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 原题:ZOJ 3780http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3780刚开始看到还以为是搜索题,没思路就跳过了。结果后来发现就是一个简单的模拟啊,因为每行每列都只能消去一次,直接慢慢消去就好了,因为按字典序从小到大,那... 阅读全文
posted @ 2014-07-02 11:12 whatbeg 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 原题:ZOJ 3777 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3777题意:给每个题目安排在每个位置的value。有一个程序随机选择安排的顺序,总的value值大于等于m时,就可以接受这个安排。问能够获得一次满足条件... 阅读全文
posted @ 2014-07-01 21:35 whatbeg 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 原题: ZOJ 3785 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3785 题意:当天是星期六,问经过1^1+2^2+3^3....+n^n天后是星期几? 这题开始以为是这种式子的求和问题,翻了半天没翻到公式。结果没搞 阅读全文
posted @ 2014-07-01 21:15 whatbeg 阅读(240) 评论(0) 推荐(0) 编辑
摘要: ll random(ll n) { return (ll)((double)rand()/RAND_MAX*n + 0.5); } ll pow_mod(ll a,ll p,ll n) { if(p == 0) return 1; ll ans = pow_mod(a,p/2,n); ans = ans*ans%n; if(p%2) ... 阅读全文
posted @ 2014-06-30 21:45 whatbeg 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 原题: URAL 1091 http://acm.timus.ru/problem.aspx?space=1&num=1091 题意:要求找出K个不同的数字使他们有一个大于1的公约数,且所有的数字都不能大于一个指定的数字S。 解法:可以考虑每个S内的素数,此素数和它的所有倍数构成一个集合,则可以在这 阅读全文
posted @ 2014-06-29 23:06 whatbeg 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 原题: UVA 1169 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3610大白书上的原题。代码:#include #include #include ... 阅读全文
posted @ 2014-06-29 16:56 whatbeg 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 原题:UVA 1172 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3613动态规划问题。定义: dp[i] = 右岸前i个村庄(m岸)能够与左岸(n岸)... 阅读全文
posted @ 2014-06-29 12:41 whatbeg 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 设两只青蛙跳了t步,则此时A的坐标:x+mt,B的坐标:y+nt。要使的他们在同一点,则要满足: x+mt - (y+nt) = kL (p是整数) 化成: (n-m)t + kL = x-y (L > 0) 则变成求解同余方程: (n-m)t ≡ (x-y) mod L ,用扩展gcd解决。 且此 阅读全文
posted @ 2014-06-29 02:12 whatbeg 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 定义:dp[i][j] 表示 在前i个数中,使整个gcd值为j时最少取的数个数。 则有方程: gg = gcd(a[i],j) gg == j : 添加这个数gcd不变,不添加, dp[i][j] = dp[i-1][j] gg != j: t添加,更新答案, dp[i][gg] = dp[i-1] 阅读全文
posted @ 2014-06-29 01:47 whatbeg 阅读(377) 评论(2) 推荐(0) 编辑
摘要: //函数计算欧拉函数 int ola_phi(int n) { int m = (int)sqrt(n+0.5); int ans = n; for(int i=2;i 1) ans = ans/n*(n-1); } //筛出欧拉函数表 int phi[N]; void phi_table(int n) { for(int i=2;i<=n;i+... 阅读全文
posted @ 2014-06-28 21:45 whatbeg 阅读(566) 评论(0) 推荐(0) 编辑
摘要: ll exgcd(ll a,ll b,ll &x,ll &y) { if(!b) { x = (ll)1,y = (ll)0; return a; } ll r = exgcd(b,a%b,x,y); ll t = x; x = y; y = t - a/b*y; return r; } //计算模... 阅读全文
posted @ 2014-06-28 21:39 whatbeg 阅读(473) 评论(0) 推荐(0) 编辑