摘要: 题意:忽略字母外的符号和大小写,求连续最长回文子串(n2#include3#include45#defineN2001067chars1[N],s2[N],s[N];8intdp[4][N],flag[N];910intis_other(charx)11{12if(x>='A'&&x='a'&&x='a'&&s[i]0)80fprintf(fout,"%c",s[flag[maxindex]]);81for(inti=0;i2#include3#include45#defi 阅读全文
posted @ 2013-11-19 21:01 byluoluo 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 题意:s个无门的牛屋(1~s),有c个里面有牛,每个牛屋为一格,求最少用几格木板为所有有牛的屋子装门。注意,木板最多可用m条,每条都不限长度。思路:先给有牛的屋子序号排序,求出相邻有牛的屋子的间隔,按 从大到小排序。用第一个和最后一个有牛的屋子的总厂减去前m-1个间隔的长度,即为答案。亦即,选出m-1个最长的间隔空出,剩余的m个区间用长木板盖门。1#include2#include3#defineN20545intcmp(constvoid*a,constvoid*b)6{7return*((int*)a)-*((int*)b);8}9intcmp2(constvoid*a,constvoid 阅读全文
posted @ 2013-11-14 11:14 byluoluo 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 给出Base b( 29) s1[ll] += 'A' - 10; else s1[ll] += '0';1#include23FILE*fin=fopen("palsquare.in","r");4FILE*fout=fopen("palsquare.out","w");56voidsolve(intb,intx)7{8intl=0,ll=0;9chars[20],s1[20];10inttemp=x;11while(temp>0)12{13/*intch=temp%b;14 阅读全文
posted @ 2013-11-13 18:48 byluoluo 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 题意:一只牛有1-12位数字的铭牌号,每个数字可能代表的字母如下:2: A,B,C 5: J,K,L 8: T,U,V 3: D,E,F 6: M,N,O 9: W,X,Y 4: G,H,I 7: P,R,S例如:“4734”对应的名字可能有GPDG GPDH GPDI GPEG GPEH GPEI GPFG GPFH GPFI GRDG GRDH GRDI GREG GREH GREI GRFG GRFH GRFIGSDG GSDH GSDI GSEG GSEH GSEI GSFG GSFH GSFI HPDG HPDH... 阅读全文
posted @ 2013-11-13 14:19 byluoluo 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 题意:给出n个区间(a, b) (n#include#defineN5005structSeg{ints,e;}seg[N];intcmp(constvoid*a,constvoid*b){structSeg*x=(structSeg*)a;structSeg*y=(structSeg*)b;if(x->s==y->s)returnx->e-y->e;returnx->s-y->s;}intmain(){FILE*fin=fopen("milk2.in","r");FILE*fout=fopen("milk2 阅读全文
posted @ 2013-11-12 13:42 byluoluo 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 题意是一条线上的点,D x是破坏这个点,Q x是表示查询以x所在的最长的连续的点的个数,R是恢复上一次破坏的点。线段树结点 设置一个 ll 记录区间左端点开始的最大连续个数, rl 记录区间右端点开始的最大的连续个数,ml表示该区间最大的连续点的个数。主要是更新和查询两个操作。/*key:ll,rl,ml;//左起最大长度,右起最大长度,区间最大长度求与某点相连的连续最长距离。线段树优化了求连续最长的时间,枚举是O(n),线段树O(log2[n])*/#include#includeusingnamespacestd;#definelsonl,m,rty?x:y;returnz>x?z: 阅读全文
posted @ 2013-11-11 20:56 byluoluo 阅读(240) 评论(0) 推荐(0) 编辑
摘要: hdu 4501 小明系列故事——买年货http://acm.hdu.edu.cn/showproblem.php?pid=4501每种商品只能选一次故为01背包。可以理解为有三个个背包(钱、积分总数、免费领取的件数),某件商品只要满足一种条件即可选取 。#include#include#defineN105#defineK7intdp[N][N][N][K];intn,v1,v2,k;intc1[N],c2[N],val[N];intmax(intx,inty){returnx>y?x:y;}intmain(){while(scanf("%d%d%d%d",& 阅读全文
posted @ 2013-11-07 00:27 byluoluo 阅读(193) 评论(0) 推荐(0) 编辑
摘要: CodeForces 340B题意:给出n个点(无重点,无三点共线),选四个点组成平面四边形,求所能组成的四边形的最大面积。 (n#include#includeusingnamespacestd;#defineN310structPoint{doublex,y;}p[N];doublexmult(Pointp0,Pointp1,Pointp2){return(p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);}intmain(){intn;doubleans=0;cin>>n;for(inti=0;i>p[i].x>> 阅读全文
posted @ 2013-10-26 16:08 byluoluo 阅读(146) 评论(0) 推荐(0) 编辑
摘要: hdu1520题意:给定一棵关系树,每个节点有个权值,子节点和父节点不能同时选,问最后能选的最大价值是多少?点u有两个状态,选 - dp[u][1],不选 - dp[u][0]设v为儿子结点,则状态转移方程为:dp[u][1] = sum(dp[v][0]) 说明:父节点选后,儿子节点都不能选dp[u][0] = sum( max(dp[v][0], dp[v][1]) ) 说明:父节点不选时,子节点可选可不选,取决于值的大小从叶子节点开始往根节点遍历,因此用dfs,在回溯阶段更新。/***树形DP**/#include#includeusingnamespacestd;#defineN... 阅读全文
posted @ 2013-10-23 00:55 byluoluo 阅读(348) 评论(0) 推荐(0) 编辑
摘要: CodeForces 339C题意:有k(1#include#includeusingnamespacestd;intm,w[11],wn,lr[2],ans[1005];stackst;booldfs(intt,intpre){//coutm){returntrue;}inta=t%2,b=(a+1)%2;for(inti=0;ilr[b]){lr[a]+=w[i];st.push(w[i]);if(dfs(t+1,w[i]))returntrue;lr[a]-=w[i];st.pop();}}returnfalse;}intmain(){strings;cin>>s>&g 阅读全文
posted @ 2013-10-20 18:02 byluoluo 阅读(158) 评论(0) 推荐(0) 编辑