自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JayYe的专栏

最后的战役

  • 博客(31)
  • 收藏
  • 关注

转载 POJ【数论/组合/博弈论】题目列表

转自 : http://hi.baidu.com/lydrainbowcat/item/f16e64103f8c5c088fbde44cPOJ【数论/组合/博弈论】题目列表原来的列表比较水,今天换了一个难一些的列表,重新开始做~红色的代表已经AC过,蓝色的代表做了但是还没过。这句话貌似在我空间里的每份列表里都有额。博弈论POJ 2234 Matc

2013-07-31 22:26:41 944

原创 poj 2186 Popular Cows 强连通

题意:有n头牛,某头牛可能会认为另一头牛受欢迎,现在给你m种关系,每种关系A B表示A认为B是受欢迎的,这种受欢迎有传递性,如果A认为B受欢迎,B认为C受欢迎,那么A认为C受欢迎,现在问你被其他所有人认为受欢迎的牛有多少头。对关系图缩点后,其实就是要求出度为0的强连通,如果这样的强连通大于1,那么就没有这样的牛。如果得到的是多个有向无环图,那么也没有这样的牛,其实这种情况已经被包括进来

2013-07-31 16:08:14 848

原创 ZOJ 2674 Strange Limit 欧拉定理

这竟然是这么不错的题,我原以为是恶搞的水题。。。题意: 求aa..a%m!的极限刚开始我是这样做的,既然有极限,那么当式子取模值增大到一定数就不会再增大了,那就直接while循环恶搞啊。。。原来这题应用到欧拉定理,当时没想这么多,欧拉定理是这样的,如果a和n互质,那么aφ(n)=1(mod n) ,所以对于任意的a,b,n 就有ab=aφ(n)+b mod φ(n)(m

2013-07-31 13:36:30 1284

原创 hdu 3221 Brute-force Algorithm 指数循环节

观察题目的程序可以很容易得到F[1] = a ,F[2] = b , F[3] = F[1]*F[2] , ....   F[n] = F[n-1]*F[n-2]由于n 也就是说a的次幂和b的次幂都是斐波那契数列,这样就很简单了,然后根据A^x % m = A^(x%phi(m)+phi(m)) % m (x >= phi(m))不清楚这个公式的可以戳这里看看http:

2013-07-31 12:51:36 808

原创 uva 10692 - Huge Mods 指数循环节

这题也是求多重指数解取模,和hdu 的2837 有点像公式 A^x % m = A^(x%phi(m)+phi(m)) % m (x >= phi(m))这里的A和m不一定互质,这样问题就很简单了,附上代码。#include #define LL long longconst int maxn = 1000;bool vis[maxn];int pri[maxn]

2013-07-31 11:19:50 1706

原创 hdu 2837 Calculation 指数循环节

hdu 2837 关于指数循环节的几点疑问,希望路过的大牛看看指点一下!

2013-07-31 11:09:44 1618

原创 hdu 4630 No Pain No Game 线段树 树状数组

题意:给你一个n的排列,有m个询问,每次询问L R,从L到R区间里选出两个数a, b使得gcd(a,b)最大,每次输出最大的gcd对于x的所有倍数,我们把他们两两结合得到的最大公约数看做x,把所有的找到的位置排个序,如果询问的L R的最大公约数可以是x,那么这个询问的LR区间必然包含所有的位置的某一个相邻的位置,这样的话就可以把相邻的位置看做线段l r,它有个val值x ,那么询问就是

2013-07-30 20:04:28 1844 3

转载 【关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明】【指数循环节】

文章转自AekdyCoin  福大AC大神!http://hi.baidu.com/aekdycoin/item/e493adc9a7c0870bad092fd9以下内容全部原创,转载请注明作者 : AekdyCoin 以及本文地址曾经看过如下一个公式:以上的公式如果第一次见到,难免有不少疑惑:为什么可以这么写?限制条件为什么是x >= Phi(C)

2013-07-30 18:04:40 1652

原创 poj 1236 Network of Schools 强连通分量

题意:给你一个有向图,第一问:增加一个点至少需要加多少边使得该点能到达其他所有点。第二问:至少需要加多少边使得整个图变成一个强连通分量。对于第一问就很简单了,只需要求出缩点后入度为0的点的个数,对于第二问的话,需要求出缩点后入度为0的个数和出度为0的个数,较大值为答案。比如0出度大于0入度,这样把所有0出度的连到不为该节点祖先的其他子树的0入度节点上,画个图应该很明白。

2013-07-29 21:27:34 866

原创 hdu 4614 Vases and Flowers 线段树

这两天在搞基础的图论。。。一直没去搞这个,今天一搞原来这么简单,怪不得别人说线段树模板题,只不过函数多了点,成段更新,单点询问,懒惰标记。#include #include #define lson rt<<1, l, mid#define rson rt<<1|1, mid+1, rconst int maxn = 50005;struct PP{ int sum, f

2013-07-29 20:12:26 749

原创 poj 3177 Redundant Paths 边双连通

这道题和poj 3352差不多的,只不过有重边,这样的话其实不用管,对所有的边都建边就行了,不过貌似poj的数据很弱,反正对于2 21 22 1这种数据我是输出0的,别人的有输出1的都过了。#include #include const int maxn = 5005;const int maxm = 10005;struct EDGE{ int to, v

2013-07-29 12:45:29 730

原创 poj 3352 Road Construction 边双连通缩点

题意:给你一个图,问至少需要加多少条路使得整个图成为边双连通。求出割边并缩点,可以得到一棵树,统计树上所有度为1的点数,最后的答案就是(cnt+1)/2,这个画个图就明白了。#include #include const int maxn = 1002;const int maxm = 1005;struct EDGE{ int to, next, vis;}

2013-07-28 17:00:43 782

原创 poj 2942 Knights of the Round Table 点双连通

圆桌骑士,记得小时候街机也有同名还蛮喜欢玩的游戏。题意:有n个骑士经常举行圆桌会议,商讨大事~每次圆桌会议至少应有3个骑士参加,且相互憎恨的骑士不能坐在圆桌旁的相邻位置。如果发生意见分歧,则需要举手表决,因此参加会议的骑士数目必须是奇数以防止赞同票和反对票一样多。知道了哪些骑士相互憎恨之后,你的任务是统计有多少个骑士不可能参加任何一个会议。(题意来自刘汝佳白书)首先可以对不

2013-07-28 15:21:22 857

原创 poj 1523 SPF 无向图求割点

无向图求割点和块的模板题#include #include const int maxn = 1111;struct EDGE{ int to, next;}edge[maxn<<2];int head[maxn], iscut[maxn], dfn[maxn], low[maxn], subnet[maxn], E, time; void newedge(int

2013-07-28 11:22:36 1065 2

原创 hdu 4600 Harvest Moon

牧场物语,太经典的游戏了。小时候玩一个暑假都不够的~题意:给你一个w*h的格子,有 A种 种子,每种种子都能撒播在3*3的格子上,超出格子范围的种子无效,种子n天后成熟,就直接能收获了。有的种子收获后直接消失,然后格子又变成空的又能撒播种子了,但是有些种子可以视作永远不会消失,然后以m天为一个周期成熟收获。现在让你只能买一种种子,初始的钱为Y,给你每个种子买进一个的价格和1*1的格子成熟收获后

2013-07-27 00:30:01 1493

原创 SRM 494 DIV.1 总结

250p:暴力。。。直接O(n^5)。。n刚开始在想O(n^3)算法。。。搞了半天没搞出,最后还是用最暴力的方法写的,下次应该记得直接超暴力!#include #include #include #include #include #include #include #include #include #include #include #include #

2013-07-23 10:39:24 774

原创 POJ 2761 Feed the dogs 树状数组求第k大的数

上次就听岐哥讲了树状数组如何高效求第k大的数,一直没去敲,今天早上起来睡不着就敲了下了,也是看的岐哥的博客才完全搞明白的http://www.cnblogs.com/wuyiqi/archive/2011/12/25/2301071.htmlint findkth(int k) {int i, cnt = 0, ans = 0;for(i = 20;i >= 0; i-

2013-07-23 07:25:55 1519

原创 hdu 1299 Diophantus of Alexandria

题意:给你一个n (1 首先由这个式子可以很快得到,a = (b*n) / (b-n) ,令b - n = m  则 a = n + (n*n)/k , b = n+k ,问题就转化成求n^2的因子数,最后这个因子数要处理下,因为有重复。求出n的所有素因子个数,n^2的所有素因子个数就是n的两倍,求因子数就是各个素因子的个数加一 相乘 。#include #include

2013-07-22 14:22:24 881

原创 uva 10140 - Prime Distance

题意:给你一个L,U,求L到U中相邻最近的两个素数和相邻最远的两个素数,(1<=L<U<=2147483647) 即maxn =2147483647 素数筛选法预处理出sqrt(maxn)的素数表,对于给定的L,U,也是相当于筛选法,只需要把L,U范围内素数的倍数筛选掉就行#include #define LL long longbool vis[111111],

2013-07-22 13:47:36 1782

原创 uva 10090 - Marbles 扩展欧几里得

题意:给你一个n,c1, n1, c2, n2 ,要保证x*n1 + y*n2 = n 且 要 x*c1 + y*c2最小首先来复习下扩展欧几里得,对于一元二次方程 ax + by = n , 扩展欧几里得求出 ax + by = gcd(a,b)的一组x0, y0 , 令d = gcd(a,b) ,如果 d|n ,方程有解 。ax + by = d方程通解为 x = x0 + b*t

2013-07-22 13:42:27 946

原创 uva 10061 - How many zero's and how many digits ?

题意:给你一个N和一个进制B,求N!在B进制下末尾0的个数和总的位数。第一个问题很容易转化为求N!能整除几个B,这里可以处理出所有B的素因子和素因子的个数a[i],然后同样对N!处理出所有整除B的各个素因子的个数pnum[i],对于所有的pnum[i] / a[i]取最小值即可。求总的位数有两种求法,一种是直接用double的 cal来保存N!当前的值,枚举过程中只要cal >=B就除一次

2013-07-22 12:31:06 930

原创 uva 11490 - Just Another Problem

题意:这题题目有点长,不过很清楚,看懂后就可以推出一个公式 S = y(6y + 7x) ,即 S = 6y^2 + 7xy,所以S #include #include #include using namespace std;#define LL long longconst int mod = 100000007;LL ans[1111111];bool cmp(con

2013-07-22 12:01:54 1133

原创 SRM 585 DIV 1 总结

题意:给你一棵高度为H的完全二叉树的路,问最少需要多少辆车把这路走完,车子不能返回。那么最优的方案就是从小到上一层层的走完,就很容易地可以得到一种递推,需要注意的就是dp[0]  = 1#include #include #include #include #include #include #include #include #include #incl

2013-07-22 11:37:54 874

原创 SRM 495 DIV 1 总结

250p:水题。题意讲得很清楚,找到每个位置是否有唯一可能。可以直接暴力搞起复杂度O(k*n*n),也可以双向处理一下,可以达到O(n)的复杂度。#include #include #include #include #include #include #include #include #include #include #include #include

2013-07-19 16:25:06 877

原创 POJ 1947 Rebuilding Roads 树形DP

题意:给你一颗树,问最少要去掉多少边才能得到一颗节点数为p的树把节点1当做根节点,对于每一个节点,dp[u][i]表示节点u保留i个点最少去边数,我是把子树一颗颗地加进去,所以初始的dp[u][1] = 0,以前我也做过,不过是令dp[u][1] = 节点儿子数+1,根节点的话 = 儿子数,因为根节点不需要去父亲的边了,这应该是通常的做法吧。#include #inclu

2013-07-18 22:23:15 797

原创 Codeforces 161D 树形DP

题意:给你一颗数,边权值为1,问有多少对节点满足最小距离为k (n 由于k很小,所以我们可以直接对于每个节点保存该节点子树中到它距离为dis(0 #include #include struct EDGE { int to, next;}edge[100005];struct PP { int dis[505];};int E, head[50005],

2013-07-18 16:43:59 909

原创 POJ 1155 TELE 树形DP

题意:给你一棵树,root为电视台,每个叶子节点为潜在的用户,其他节点为为讯号传播的中转站,每条边都有权值,如果信号发送到某个叶子节点,将收到用户交的费用,但是经过的边都要消耗费用,问最多能发送到几个用户且不亏本,不赚不亏也算。对于每个节点,节点的子树都为一个背包,由此进行分组背包即可。#include #include #define INF 1111111111

2013-07-18 15:39:28 959

原创 hdu 1561 The more, The Better 树形DP入门题

题意:中文题,简单明了。解题思路:首先将所有的可以直接攻克的城堡并在节点0的下面,然后对于每个节点,利用分组背包的思想,该节点的各个子树看成各个背包。#include #include struct EDGE { int to, next;}edge[222];int head[222], E, cnt[222], dp[222][222], val[222];v

2013-07-18 15:27:14 794

原创 SRM 496 DIV 1 总结

250p:大水题,给你一幅图,水平可以连续染色red,垂直可以连续染色blue,水平垂直都有染色就是green,问从空白图到给你的图最少需要多少次染色。对于red和blue分开考虑就可以了,也可以先把green转换为red或者blue,然后贪心搞。500p:令人蛋疼的题,弄了一天,往dp上想破了脑子最后居然算法还是错的,最后参考了Soooooooo大神的解题思路才搞出来  http:/

2013-07-18 11:14:13 797

原创 SRM 497 DIV 1 总结!

250pt : 模拟题#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespa

2013-07-16 15:36:36 750

原创 SRM 195 Div1 总结

第一次做SRM div1,总的来说最大的问题就是理解题意,250p看了好久才差不多看懂,500p看的更是相当久。。。哎,必须要把自己的题目阅读能力慢慢地训练提升上来!250p:题意看懂了的话就很简单了,只需要两个枚举就行了。500p:这么短的题目我看了好久竟然都看不懂,其实就是找到从i(0

2013-07-03 00:00:55 6863

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除