2013年10月19日
该文被密码保护。 阅读全文
posted @ 2013-10-19 21:57 男神发量 阅读(2531) 评论(60) 推荐(6) 编辑
  2013年10月14日
摘要: 题目大意:给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 男神发量 阅读(570) 评论(0) 推荐(0) 编辑
  2013年9月30日
摘要: 数位dp,终于守得云开见月明了。建议初学者先试试两道比较简单的hdu2089,hdu3555。 鸣谢:http://blog.csdn.net/acm_cxlove/article/details/8707084。 数位dp也是一种基于状态压缩、优化的动态规划。不同的是,它的压缩和优化往往基于数的一些特性。而数最基本的表现形式:a/b --- [a/b]、[a%b]。 这种dp才是体现一个人智慧的地方。(额外想为ACM竞赛的同学说两句,个人还是特别顶复旦出题的,至少它出的绝大部分题目都是可以自己通过大学以前的数学知识慢慢想到,而不是像某些学校的题目,只要听说过、学过、看过,某一个不知... 阅读全文
posted @ 2013-09-30 13:08 男神发量 阅读(1514) 评论(0) 推荐(0) 编辑
  2013年9月26日
摘要: 题目大意:给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 男神发量 阅读(370) 评论(0) 推荐(0) 编辑
  2013年9月22日
摘要: 题目大意:这个。。。。翻译起来还真是不好说,各位四六没过的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 男神发量 阅读(492) 评论(0) 推荐(0) 编辑
  2013年9月21日
摘要: 很简单的位模拟(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 男神发量 阅读(273) 评论(0) 推荐(0) 编辑
  2013年9月20日
摘要: 题目大意:在一个一维坐标轴上有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 男神发量 阅读(443) 评论(0) 推荐(0) 编辑
摘要: 区间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 男神发量 阅读(733) 评论(1) 推荐(0) 编辑
  2013年9月16日
摘要: 2013年两场网络赛已经过了,之前的现场赛拿了多次铜牌,而这两场网络赛我们都表现得这么水,不由得感慨起来,ACM竞赛生涯就要画上句号了,甚至整个学习生涯中这种纯学术的竞赛都要完了。这两场网络表现得不好,痛定思痛,当然主要原因是我自己的水平太弱了,技不如人当然惨败了。赛后看各种报告和代码比较后也发现了,也许弱校弱的地方并不都是我们不够聪明和努力吧。所以这里我要特别吐槽一些地方。 第一,我觉得学校本身投入度不够,和如今一些学校的教育目标和方式不是特别好。我有一万次想写信给校长,但是又怕文采不好起不了反应或者文章感情过于激昂惹来祸端,要是给记个过,就亏大了。为什么我觉得学校本应该是无私教学育人... 阅读全文
posted @ 2013-09-16 14:00 男神发量 阅读(323) 评论(0) 推荐(0) 编辑
  2013年9月10日
摘要: 要想通这个题目应该很容易,由于斐波纳契数在近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 男神发量 阅读(267) 评论(0) 推荐(0) 编辑