自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Time is up , let's go .

愿我的生命有够多的云翳,来打造一个美丽的黄昏!

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

原创 常用函数

求最大公约数:int gcd(int a,int b){ int c=a%b; while(c) { a=b; b=c; c=a%b; } return b;}int gcd(int a,int b) { return b?gcd(b,a%b):a;} 求组合数公式:ll

2013-07-20 10:59:01 635

原创 茉莉橘子 作者叶倾城。

每个的人的一生都是不能预测的,谁也不知道一生会是什么样,谁也不知道谁会改变你,看似对他人微不足道,却对你深含大义!珍惜.  握住一生不变的温柔,    不染尘的约誓。    如果,我从不曾向你说过一句又一句沉醉甜蜜的话,你还能不能懂得,我茂林深处一般的心田啊,那湖泊般清澈映落的心事?    如果,你眸中沉默的火我不曾遇见,当我在漆黑的人世间徜徉,会不会知道,你始终在我的身边,一

2012-05-22 08:44:35 2349

转载 《谈生命》 冰心

我不知道生命是什么,我只能说生命像什么。  生命像东流的一江春水,他从生命最高处发源,冰雪是他的前身。他聚集起许多细流,合成一股有力的洪涛,向下奔注,他曲折地穿过了悬崖削壁,冲倒了层沙积土,挟卷着滚滚的沙石,快乐勇敢地流走,一路上他享受着他所遭遇的一切:有时候他遇到巉岩前阻,他愤激地奔腾了起来,怒吼着,回旋着,前波后浪地起伏催逼,直到他过了,冲倒了这危崖他才心平气和地一泻千里。有时候他经过了细

2012-04-19 08:01:19 836

原创 2013 ACM/ICPC Asia Regional Changchun Online hdu Theme Section

题意:给定一个字符串,是否存在字符串的首部,尾部和中部 ,求最长的。kmp解决。#include#include#includeusing namespace std;const int N=1e6+50;int next[N];char str[N];void Get_Next(char *p,int len){ int j=1; next[0

2013-09-29 11:53:18 923

原创 2013 ACM/ICPC Asia Regional Changsha Online

题意 描述不理解, 是让求(l+sqrt(l*(l-1)))^k%k ;向下取整。设b=sqrt(l*(l-2)) (l+b )^k是小数直接算会有错误。所以要凑成整数。Cn=(l+b)^k +(l - b)^k   ;  Cn的二项式展开可以知道 b 的奇数次方会相消掉。(l-b)是在0和1范围内的,(l-b)^k也是在0和1之间。所以结果是向上取整的。最后减1Cn*( (l

2013-09-25 09:41:30 716

原创 poj 2773 Happy 2006

题意: 求与m互质的第k个数。我们可以找到规律,1 ,2 ,3 ,4, 5, 6 ,7,8,9,     11,12,13,14 与5互质的数 x*m + 小于5与互质的数。gcd(b×t+a,b)=gcd(a,b)  (t为任意整数)则如果a与b互素,则b×t+a与b也一定互素,如果a与b不互素,则b×t+a与b也一定不互素故与m互素的数对m取模具有周期性

2013-09-10 15:22:35 551

原创 hdu 4712 Hamming Distance

题意:给n个16进制数,求每对16进制数异或得到的数的二进制中1的个数最少的个数。#include#include#include#includeusing namespace std;#define mem(x,y) memset(x,y,sizeof(x))#define FF freopen("Input.txt","r",stdin)#define Debug puts(

2013-09-09 17:13:21 739

原创 CodeForces - 292E 线段树

题意:给a,b两个数组, 然后有m个操作,t 如果t=2 ,接着输入一个k ,然后输出b【k】;如果t =1,接着输入3个数,x,y,k,表示b【y】到b【y+k-1】等于a【x】到a【x+k-1】。线段树设置两个变量,flag1 表示这段区间被x占用,flag2表示这段区间从y位置开始,#include#include#includeusing namespace std;#

2013-08-11 18:32:18 632

原创 poj 2886 线段树 (用反素数)

题意:有n 个人,每个人有一个卡,上面有一个非零的数。第一次给一个数k,第k个人跳出,然后看第k的卡上数字是多少,如果大于0 则顺时针数那人人跳出。小于零,逆时针数到的那个人跳出,一次类推,第x次跳出的人会得到f(x),f(x)等于x的因子个数,求最大的f(x)f(x)满足反素数。 线段树的区间存的是有多少人。#include#include#includeusing namespa

2013-08-11 14:15:43 601

原创 STL用法 (set)

set:set中的元素师唯一的,multiset中可以存在多个相同的。set的头文件是#includeset中的元素默认从小到大排序;也可以这样定义;int main(){ set >s1;//从大到小排序 set >s2;//从小到大排序 s1.insert(3); s1.insert(2); s1.insert(7); se

2013-08-11 09:48:04 666

原创 poj 3321 线段树(将点转换为对应区间)

题意:n个点,n-1条边,有m个查询,Q a,表示a的子树中包含a有多少苹果。C a,表示a这个点如果有苹果就被摘掉,没有苹果就长出一个。将对应点转换成对应区间,然后进行线段树#include#include#includeusing namespace std;#define mem(x,y) memset(x,y,sizeof(x))const int N=1e5+2;st

2013-08-10 10:45:52 676

原创 hdu 4276 树形dp背包

题意:n个点,n-1条边,每条边有权值,每个点有价值 ,问你能否在T时间内从1走到n,如果能,获得的最大价值。       先用spfa求出1至n的最短路径,并且将1到n最短路径上的边权致零,t减去dis【n】这样以后就可以不用考虑怎样回到n了,就和普通的树形dp一样,状态方程   dp [ u ] [ j ] = max ( dp [ u ][ j ]  ,dp[ v] [k ] +  

2013-08-06 08:28:21 593

原创 hdu 1695 两个区间中互素的个数 (容斥)

题意是,【1,l】,【1,r】之间个数一个数两个数的最大公约数等于k  求有多少这样的数对。设x是在【1,l】中取的数,y是在【1,r】中取的数。x =a*k  ,y=b*k ,k为最大公约数, 所以a与b互素,问题转换为区间(1,l/k)(1  ,  r/k)中有多少互素的数对。容斥原理在这里求的是 i 在(1,l/k)中与i不互素的个数。例如  1到10中能被2,3整除的个数为 1

2013-08-03 17:04:48 926

原创 hdu 3501 欧拉函数求和

题意:求小于n 的与n不互质的数的和。 小于n与n互质的欧拉函数的和 sum = n*(phi(n))/ 2;所以结果就是 ans= (n-1)*n / 2  - sum;#include#include#include#define ll long longconst int mod=1000000007;ll phi(ll n){ ll m=(ll)sqrt(n

2013-07-30 19:13:42 757

原创 hdu 2588 欧拉函数 &&hdu 2504

题意:x在1到n之间,求满足条件的gcd(x,n)>=m的x个数题解:设n=p*d   ;   x= q *d  ;  d为gcd(x,n) 则p与q互质。所以我们只需求d>=m时的 p,与p互质的数就是q的取值,即为x的取值 ,所以(n/p)的和即为答案。#include#include#includeconst int N=1e6;int num[N];int phi(int

2013-07-30 17:26:52 739

原创 hdu 1573 孙子定理

题意:在1 到n中求有多少个x满足 x%a【i】=b【i】。令任意固定整数为M,当M/A余a,M/B余b,M/C余c,M/D余d,…,M/Z余z时,这里的A,B,C,D,…,Z为除数,除数为任意自然数([span]如果为0,没有任何意义,如果为1,在孙子定理中没有计算和探讨的价值,所以,不包括0和1)时;余数a,b,c,d,z为自然整数时。1、当命题正确时,在这些除数的最小公倍数内

2013-07-30 10:41:39 722

原创 3613 kmp应用

题意:n组数据,先输入26个数,代表a到z每个字母对应的价值,然后一个字符串,求将字符串分成两个,如果是回文串这个字符串的价值是每个字母的和,不是回文串价值为0  最大价值。如  第一组样例 ,aba ,分成两个a 和ba ,a就是一个回文串。所以价值为1;题解求字符串的回文串前缀,和回文串后缀#include#include#include#includeusin

2013-07-29 13:24:33 513

原创 hdu 4614 线段树

题意:有n个花瓶,编号为0 到 n-1,有m的操作,每个操作输入k,a,b,k=1,表示从标号为a的花瓶开始连续插花,每个瓶插一朵。如果某个瓶被占用,就在这瓶后面的瓶插花,到编号为n-1的瓶还有花,就扔掉剩下的花,并输出 这部操作插花的第一个瓶编号和最后一个瓶标号,  k=2 表示在区间a b之间,把插的花扔掉,并输出扔掉花的数目,#include#include#includeus

2013-07-27 10:28:59 522

原创 hdu 4602 找规律

题意是:给你两个数   n  k,,问n的所有整数划分中,k出现的次数。题解:        1       2     3     4    5     6    7   当n=5时,28    12    5      2    1 n =6         64     28    12   5     2     1   ····························

2013-07-26 09:32:02 573

原创 hdu 3635 并查集

题意:有n个球在n个城市,刚开始,1号球在1号城市,依次2号球在2号城市。有两种操作,T  A B 将A球所在城市的球全部移到B球所在城市。   Q   A  查询A所在的城市,A求移动的次数,A所在城市的球的总数。并查集主要是路径压缩时,更改 移动的次数。如 子节点的移动次数等于加等于父节点的次数#include#include#include#includeusing

2013-07-24 14:57:40 581

原创 poj 3071 概率dp

题意是:有2^n支队伍,告诉你p【j】【k】表示j打败k的概率。求最后赢得比赛概率最大的队伍。dp【i】【j】 表示在第i回合,j获胜的概率此题需要注意的是比赛队伍的次序,第一回合:1和2 比赛,3和4 ,5 和6 ,7和8, 依次类推;if(((j>>(i-1))^1)==(k>>(i-1))) 判断j和k是否可以比赛;比如3支队伍,可以比赛的队伍是:0 1    1 0

2013-07-24 09:43:19 604

原创 poj 1456 贪心+并查集优化

题意:题目链接有n个商品,每个商品有两个属性val 和day,val表示商品的价值,day 表示商品最后卖出去的期限,卖每个商品需要一天的时间。题解:贪心,贪心测率和hdu 1789 一样。按照val从大到小排序。然后从第一个开始,如果它的最后期限没有被占用,这天就用来买这件商品,如果被占用就在这天之前找出第一个没被占用的。并查集的用处就是找可用的那天,把被占用的连续的天数看做一个集合,根

2013-07-23 19:06:28 516

原创 nyoj 项目安排

题意:小明每天都在开源社区上做项目,假设每天他都有很多项目可以选,其中每个项目都有一个开始时间和截止时间,假设做完每个项目后,拿到报酬都是不同的。由于小明马上就要硕士毕业了,面临着买房、买车、给女友买各种包包的鸭梨,但是他的钱包却空空如也,他需要足够的money来充实钱包。万能的网友麻烦你来帮帮小明,如何在最短时间内安排自己手中的项目才能保证赚钱最多(注意:做项目的时候,项目不能并行,即两个项

2013-07-23 13:15:34 601

原创 zoj 3643 模拟栈

题意是:给两个字符串a和b ,在b中从左向右找a并删除该段字符串,直到找不到为止,共能删多少次。#include#include#define FF freopen("Input.txt","r",stdin)char m[512010],z[300],flag[512010];int main(){ //FF; int ans,top; while(~sca

2013-07-23 13:08:25 772 1

原创 zoj 3641 并查集

题意是:有n的操作,arrive  str1   m 然后m个数,表示str1到教室,并且他知道m信息,信息的标号为输入的m个数, share str1 str2 表示str1和str2 两个人交换两个人的信息。并且当第三个人与其中一个人交换信息时,另一个人也交换。即这三个人相互知道他们的信息。check str1 表示查询 str1这个人知道信息的条数。题解:并查集。#inclu

2013-07-23 11:34:58 522

原创 zoj 3645 高斯消元

题意是:给12个方程,形如 (a0-x0)^2 +(a1-x1)^2+ ·········+ (a10-x10)^2=d^2;利用嘴一个方程和上面11个方程相减,编程一次方程组 yoga高斯消元法解方程;#include#include#include#include#includeusing namespace std;#define FF freopen("Inp

2013-07-22 08:38:41 613

原创 zoj 3647 组合数学

给个n*m的方格,问有多少三角形,共线的不算。共有 (n+1)*(m+1) 个点,设为 t 。 从这里面选出3 个点,共有C(t,3)种,在水平上共线: ( (m+1)*fun(n+1,3) ) 在竖直上共线的有 ( (n+1)*fun(m+1,3) ),对于倾斜的情况,先枚举两端的端点,如图,在一个6*6的方格中选4*4的两个端点,其中可构成三点花线的另一点的个数为最大公约数gcd(

2013-07-20 10:56:13 634

原创 ubuntu 命令

sudo chmod -R 777 路径 更改文件夹的权限。sudo rm -r 删除命令。sudu mv 移动命令

2013-07-19 18:35:10 822

原创 poj 1849 贪心 ||树形dp

题意是:在m点有两辆车,要清扫所有的路,问走的最短路。和poj1935 差不多,poj 1935 是一个人走的最短路。题解 所有边权和 * 2  —— 树的最长路径。#include#include#include#includeusing namespace std;#define FF freopen("Input.txt","r",stdin)#define m

2013-07-18 17:17:44 569

原创 poj 1935 树形dp,

题意:一个人在m城镇,想参观这座城的k的城镇,求走过的最短路。题解:假设从m点出发,最后回到m点,则 len为所有点的权值和乘以2,如果不会到m点,应该停留在叶子节点,这个以节点一定离m最远的点,在这条最远的路上,只会走一遍。所以最后结果应为  len 减去离m最远的距离。#include#include#include#includeusing namespace std;#d

2013-07-18 11:10:53 496

原创 hdu 3586 树形dp +二分

题意:给n个节点的树,要求使叶子节点与根断开,割掉的边的权值和不超过m。求这些被割边的权值最大中的最小。dp 【u】+=min(dp【v】,w),w 为 u 到 v 的权值。如果w 大于二分的 mid dp【u】+=dp【v】;二分枚举边权。#include#include#include#includeusing namespace std;#define FF fr

2013-07-17 15:23:09 615

原创 zoj 3668 差分约束

题意:给定L,R ,A,B; 表示序列从L到R的和>=A  , 查分约束:  u---->v 建条边 ,则有dis( v ) sum【R】表示0到R的和。 则sum【R】 - sum【L-1】 >= A; sum【R】 - sum【L-1】   写成小于等于的形式 。sum【L-1】 - sum【R】  #include#include#include#includeusi

2013-07-16 10:54:05 543

原创 poj 1655树形dp && poj 3107 &&poj 2378 && poj 3140

题意:给你一个树,删除一个点后,形成的所有新树种,节点个数最多的点为被删点的balance,求最小的balance。用了两次dfs ,第一次求每个节点的子节点的个数(包括本身节点),存在num数组中。第二次dfs,dp【u】=max ( dp[ u ]  ,  n - num [ u ] , num [  v ]  )#include#include#include#in

2013-07-15 10:04:49 823

原创 hdu 1011 树形dp 背包

题意: 给定n和m,n为节点数,m为你拥有的士兵数,每个士兵可以消灭20个bug,每个节点有bug和values,消灭bug获得该节点的values获得 v  节点的values 必须先消灭v父节点的values。1为入口点,即根节点。dp【u】【j】;表示u节点 j个士兵获得的最大values。则状态方程为: dp [ u ] [ j ] = max ( dp [ u ] [

2013-07-13 18:34:33 606

原创 poj 1155 树形dp 背包

题意:求最多的用户量。dp【u】【j】代表节点u用户数为 j 时的花费。方程: dp[ u ] [ j ] = max ( dp [ u ] [ j ] , dp [ u ] [ j - k ] + dp [ v ] [ k ] - w ) ;#include#include#include#includeusing namespace std;const int N

2013-07-13 18:22:58 541

原创 poj 1947 树形dp 背包

题意:求得到p个点最少删除多少条边。p个点事连通的。题解:dp【u】【j】 以u为根得到j个点需要的最大价值。对于一个子节点 v 两种选择,要和不要。 不要的话,就删除u与v相连的边。 即dp【u】【j】+=1;要的话,即进行背包  dp【u】【j】=min(dp【u】【j】,dp【u】【j-k】+ dp【v】【k】);对于节点 u 我们没有考虑它的父节点,在最后求解时,dp【

2013-07-13 17:25:37 478

原创 hdu1561 树形dp 背包

解题很好想,状态方程  dp[ u ][ j ]=max( dp[ u ][ j ] ,dp[ u ][ j - k ] + dp[ v ][ k ]);此题还要建边,刚开始没想到建边,自己还写了个建边的以0为根,其实没必要,题目给的信息就够了。状态方程很好想,就是背包是的范围弄错了,调了老大会。#include#include#include#includeusing n

2013-07-12 10:17:20 702 1

原创 CodeForces 219D Choosing Capital for Treeland (树形dp)

题意是:给定n个点,n-1条有向边。求 使该点到所有点改变边方向最少,并输出那些点。题解:正向边权值为0,反向为1.第一次dfs记录每个点到所有子树中需要改变的边的条数。 (自下向上推)第二次dfs由父节点求子节点到所有点的需要改变的边的条数。(自上向下)#include#include#include#include#includeusing namespace std

2013-07-10 09:02:53 1285

原创 poj3342树形dp

和poj2342一样,只是加了判断最大值是否唯一。当dp2【s】>=dp1【s】时,若dp1【x】==dp2【x】;则不唯一。因为父节点不去更优。儿子节点去和不去都一样。结果就不唯一了。特殊考虑的是根节点,如果dp1【root】==dp2【root】 ,则不唯一,因为已经到根节点,不影响其他的点了。此题还可以建单向边,因为给定的条件是老板在后面,#include#include

2013-07-09 10:53:09 614

原创 hdu 2196 树形dp

题意:   求每个点的最远距离。树形dp,做了两天,感觉就是从子节点得到父节点。此题要用到两次dfs, 第一次dfs1用来求所有节点在他子树范围内到叶子节点的最长距离和次长距离。dp1,和dp2第二次dfs2 ,求f【】,如果dp1[s]==dp1[x]+len (s为父节点,x为子节点),则 x 在最长树的分支上,f[x]=max(f[s]+len,dp2[s]+len); 

2013-07-09 08:28:44 418

空空如也

空空如也

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

TA关注的人

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