hdu2829
摘要:题目大意:还是不说了,看原文链接吧。这类题目可单独作为一类四边形不等式,因为一般题目讨论的是一个最优解,这里是对应着用最优解集。其核心还是解的单调性s[i][j-1] 2 #include 3 #include 4 using namespace std; 5 const int N = 1010; 6 int dp[N][N],s[N][N]; 7 int val[N],sv[N],dv[N]; 8 const int infinity=(-1)^(1= n-1) return 0;14 m++;15 for(int i=1;i0;i--){21 ...
阅读全文
posted @
2013-11-24 14:44
男神发量
阅读(336)
推荐(0)
hdu3525
摘要:题目大意:某个大学有个2个校区,此大学有n(1X),X到Y之间空位 = F(Y)-F(X)+1 {F(X)表示1到X之间站的人数},如果X有人站。(树状数组+二分)第二步:比较A/B。(最初想法,现在令f(x,y)表示A的前x个数字与B中前y个数字的匹配数,对x从前到后枚举,找B个匹配的y(最多m个),那么f(x,y')=max(f(x,y'),f(x,y-1)+1) {y 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn=100100; 7 struct position{ 8 i
阅读全文
posted @
2013-11-20 22:13
男神发量
阅读(366)
推荐(0)
2013ACM-ICPC亚洲区南京站现场赛G题
摘要:题目大意:一个n维的系统中随机选一个向量(X1,X2,X3,...,Xn),其中0<=Xi<=R,且X1^2+X2^2+X3^2+……+Xn^2 <= R^2。现在给定n,R。求Xi的期望。其实是一道很简单的数学题。首先证明:对于(X1,X2,X3,...,Xn),其中0<=Xi<=R,且X1^2+X2^2+X3^2+……+Xn^2 <= R^2;(X1,X2,X3,...,Xn)的边界所围成的部分的(长度、面积、体积、[超过3维不知道怎么表达]……),反正就是那个积分和S(n,R) = K*R^n。(K为某待定系数)(使用积分和数学归纳法,证明过程应该不难
阅读全文
posted @
2013-11-14 22:02
男神发量
阅读(1335)
推荐(0)
poj1487
摘要:题目大意: 给一棵递归树,看链接图片,从根节点开始对于每个节点往它的子节点移动,直到叶子节点停止。每个节点选哪一个孩子节点继续往下走是随机的(等概率)。然后叶子节点都会标记一个数值,记为走到该节点的得分。输入条件:先输入整数n(n=0时结束),接下来有n行(n XWEWTX -> (X)|a|b|c|...|zE -> '='W -> {Blank}|空T -> (U)U -> T|X|IU -> UwUw ->{Blank}I -> [+|-]{Digit}+[.{Digit}]这道题另外一个关键点是将T转化成方程式,然后综合这
阅读全文
posted @
2013-11-13 22:10
男神发量
阅读(622)
推荐(0)
poj1947
摘要:题目大意:给n(n 2 #include 3 #include 4 using namespace std; 5 #define N 151 6 struct edge{ 7 int u,v,next; 8 edge(int e1=0,int e2=0,int e3=0){ u=e1,v=e2,next=e3; } 9 }e[N*2];10 int ec,head[N];11 void add_edge(int u,int v){12 e[ec]=edge(u,v,head[u]); head[u]=ec++;13 e[ec]=edge(v,u,head[v...
阅读全文
posted @
2013-10-14 19:26
男神发量
阅读(589)
推荐(0)
uva12589
摘要:题目大意:给n(no>=j)这个时候需要枚举o,效率是很不乐观的。优化:假设dp[i][*][*]都已经求出来了。那么dp[i+1][j][y]=max(dp[i][j][y],dp[i][j-1][y-li[i+1].y]+f(li[i+1].x,li[i+1].y,y)),这样i推出i+1就是O(1)的效率了,初始状态就是dp[x][0][0]=0。再加上一点剪枝,这样就是很好的solution了。再看看样例,有T 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int dp[51][51][.
阅读全文
posted @
2013-09-26 22:32
男神发量
阅读(379)
推荐(0)
hdu3516
摘要:题目大意:这个。。。。翻译起来还真是不好说,各位四六没过的ACMer正好去原网页看看题意,过了的好孩子还是去看看原网页看看锻炼一下吧。(当然我做这道题目的时候,教练已经摆明说要用四边形不等式,所以还是感觉没什么压力的)这样我一眼就看出来了题意描述的问题:应该澄清如果(i,j)这两个点放在一个区间(一棵树上),就必须要以点(xi,yj)作为最近公共祖先。 然后来分析一下优化因素:如果(iyj决定的(i 2 #include 3 #include 4 using namespace std; 5 const int maxn=1010; 6 const int infinity=(-1)^(...
阅读全文
posted @
2013-09-22 13:38
男神发量
阅读(503)
推荐(0)
hdu4753
摘要:很简单的位模拟(bit-mask),可惜队友读题误以为很难,没有及时跟我交流,不然应该很早就可以出了。 很容易看出来,总共才16个点、24条边。用一个int类型数字就可以描述这个图了,按照16点的关系可以找出已确定的那些边。然后就是很简单的DP了。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int jb[9]={ (1y) swap(x,y);29 return d[x][y];30 }31 int score[2],lastc;32 int get_lc(int em){...
阅读全文
posted @
2013-09-21 23:31
男神发量
阅读(280)
推荐(0)
poj1160
摘要:题目大意:在一个一维坐标轴上有v个(1 2 #include 3 #include 4 #include 5 using namespace std; 6 const int infinity=(-1)^(1>1;13 }14 int move_all(int fr,int ba){15 //printf("move from %d to %d = %d\n",fr,ba,(sum[ba]-sum[fr])-atx[fr]*(ba-fr));16 return (sum[ba]-sum[fr])-atx[fr]*(ba-fr);17 }18 int S(int i,.
阅读全文
posted @
2013-09-20 23:22
男神发量
阅读(457)
推荐(0)
hdu4745
摘要:区间DP,这类题目还是非常常见的,可惜平时都不怎么在意。一到比赛就弱得像鸟一样,真心囧。 题目要求很简单,就是一个最长的回文子序列,输出该子序列的长度。区间DP,最常用的一种策略(类似于数学归纳法):令dp[i][j](j>=i)表示从i到j的一些目标状态对于任意的x(x>=k),dp[k][x]若已知(k=i-1或者i+1,根据题意需要,确定向上k=i-1或者向下k=i+1)。dp[i][i]状态非常特殊,一般已知(像2中所述,那么初始状态可能是dp[1][1]或者dp[n][n])。根据以上,2中以向下为例,(j>i) dp[i][j]=f(dp[i+1][j],dp[i
阅读全文
posted @
2013-09-20 14:16
男神发量
阅读(746)
推荐(0)
hdu4741
摘要:2013年两场网络赛已经过了,之前的现场赛拿了多次铜牌,而这两场网络赛我们都表现得这么水,不由得感慨起来,ACM竞赛生涯就要画上句号了,甚至整个学习生涯中这种纯学术的竞赛都要完了。这两场网络表现得不好,痛定思痛,当然主要原因是我自己的水平太弱了,技不如人当然惨败了。赛后看各种报告和代码比较后也发现了,也许弱校弱的地方并不都是我们不够聪明和努力吧。所以这里我要特别吐槽一些地方。 第一,我觉得学校本身投入度不够,和如今一些学校的教育目标和方式不是特别好。我有一万次想写信给校长,但是又怕文采不好起不了反应或者文章感情过于激昂惹来祸端,要是给记个过,就亏大了。为什么我觉得学校本应该是无私教学育人...
阅读全文
posted @
2013-09-16 14:00
男神发量
阅读(337)
推荐(0)
hdu4099
摘要:要想通这个题目应该很容易,由于斐波纳契数在近100项之后很大,早就超出long long了。而输入最长的序列才40个数字,所以大约保留前50位,前40位是没有误差的!!!其实,想想我们判断double数字相等时fabs(a-b) 2 #include 3 #include 4 using namespace std; 5 const int maxlen=100000; 6 const int maxn=maxlen+1010; 7 char target[60]; 8 int active_id,active_idx; 9 void ccplus(char *&ch,int &
阅读全文
posted @
2013-09-10 21:26
男神发量
阅读(276)
推荐(0)
hdu3507
摘要:题意: 给n(n0;若有dp[k]+f(k,i)> dp[j]+f(j,i),那么一定有dp[i+x] > dp[k]+f(k+1,x+i); 也就是说 k一定不是对应着i的一个可能最优解。 在求解dp[i+x]时,k点就不用枚举了。若有dp[k]+f(k,i) dp[j]+f(j,i+x)。重新思考一下(****)中dp[i]的定义,应用数学归纳法:dp[1]=f(0,1) 或者dp[1]=f(0,1)+dp[0] (dp[0]=0)dp[2]=min{dp[1]+f(2,2),dp[0]+f(1,2)} (刚好对应两种区间拆分方式)假设dp[k]用上式定义也正确,那么 dp[k
阅读全文
posted @
2013-08-30 21:03
男神发量
阅读(331)
推荐(0)
hdu1506
摘要:题目大意: 一个横轴等距且为1的直方图,直方图总长为n,现给出每一列上的纵坐标hi(0 = (n+1-i)*height[i],不管di是多少,它肯定不是最优解 这样思路是不是就很好想了,用一个队列记录所有当前可选的i,又由于队列中的i,j没有height[j] 2 #include 3 #include 4 #include 5 using namespace std; 6 #define f(head,i) height[que[head]]*(i-que[head]) //矩形[que[head],i-1]的面积 7 typedef long long lli; 8 lli h...
阅读全文
posted @
2013-08-30 13:32
男神发量
阅读(231)
推荐(0)