上一页 1 ··· 31 32 33 34 35 36 37 38 39 ··· 44 下一页
摘要: 题目链接传纸条的加强版,会了那个,这个也就没问题了。数据范围特别小。6维的也能过吧。。。 1 #include <stdio.h> 2 #include <string.h> 3 int p[21][21],o[61][21][21][21]; 4 int main() 5 { 6 int i,j,k,u,n,max,t; 7 int a[9] = {0,0,0,-1,-1,-1,0,-1}; 8 int b[9] = {0,0,-1,0,-1,0,-1,-1}; 9 int c[9] = {0,-1,0,0,0,-1,-1,-1};10 scanf("... 阅读全文
posted @ 2012-08-03 09:18 Naix_x 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 今天突然发现memset的原理,如memset(p,0,sizeof(p)),这句话特别常见,讲所有的元素初始化为0,但是memset(p,1,sizeof(p)),却是将所有的元素初始化为16843009,以前也知道不能初始化为1,但是原因就不得而知了。那天研究别人代码,发现一句相当于是memset(p,243,sizeof(p))的语句,却是把整个数组赋值为-202116109,我十分不解。。本来想就算了的,但还是查一下百度。。。原来memset是将1个字节(8位数字)初始化为那个数,所以前面的问题都可以解释了,1的二进制是00000001,int有4个字节,所以初始化为所有的数初始... 阅读全文
posted @ 2012-08-02 19:01 Naix_x 阅读(999) 评论(0) 推荐(0) 编辑
摘要: 题目链接这是拓扑排序? 我很纳闷。。有重边WA了N次。。。 1 #include <stdio.h> 2 #include <string.h> 3 int p[501][501],o[501],n,k[501],z; 4 void dfs() 5 { 6 int i,j,nu = 1; 7 while(nu <= n) 8 { 9 if(i == n+1)10 break;11 for(i = 1; i <= n; i ++)12 {13 if(o[i] == 0&&!k[i])1... 阅读全文
posted @ 2012-08-02 10:57 Naix_x 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题目链接加强版的传纸条,必须用三维解法。而且要注意初始化成负数,不然就会WA到死。。。看大神代码,用memset初始化负数。。。 1 #include <stdio.h> 2 #include <string.h> 3 int p[301][301],o[621][301][301],i,j,k; 4 int getmax(int a,int b,int c,int d) 5 { 6 int max; 7 max = a; 8 if(max < b) 9 max = b;10 if(max < c)11 m... 阅读全文
posted @ 2012-08-02 09:30 Naix_x 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 题目链接第一个多进程DP,在Vijos做的第一个题是三取方格数。。。然后发现,这种DP,没见过。。。然后最搞笑的是,做CF的时候,E题神似那种问题,后悔没认真学一下,然后从基础学起,看了个讲多进程的博客,搞一下这个题。。。先是O(n^4)的暴力解法。这个题n m都是小于50的。所以暴力的方法也过了。o[i][j][k][u] 代表第一个人到达i,j第二个人到达k,u的取得最大值,其实我一直很疑惑的一个问题是,如何判断不能重复的走的方法,看博客上的处理,原来如此啊。只需要简单的特判一下 i ==k&&j == u如果为真的话,则max+p[i][j]就行了,假的话要max+p[i 阅读全文
posted @ 2012-08-01 19:09 Naix_x 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 做DP,已经有一段时间了,虽然还有很多不会的,树形DP,数位DP,状态压缩DP。。。不过也做过很多各种一维的,二维,记录一下自己做过的题,为以后整理模版,复习什么的提供方便吧。以后会不断更新!(写完发现,好多水题啊) 一定要独立思考!!! 经典入门题:最长上升子序。O(n^2)的。。话说n*log(n)的还不会呢。。。SDUT 1299 数塔 HDU 2084 数塔 最长公共子序 HDU 1159Common Subsequence 最大子段和 HDU 1003 Max Sum 编辑距离 SDUT 1225 编辑距离 杭电的DP专题 HDU 1058Humble Numb... 阅读全文
posted @ 2012-08-01 14:43 Naix_x 阅读(405) 评论(0) 推荐(0) 编辑
摘要: 题目链接这个题,数据很变态。。WA了N次。。。看DISCUSS,过的。 1 #include <stdio.h> 2 #include <string.h> 3 #define N 125001 4 int p[60][60][60],o[60][60][60]; 5 int qua[N],qub[N],quc[N]; 6 int x[7] = {0,0,0,0,-1,1}; 7 int y[7] = {1,-1,0,0,0,0}; 8 int z[7] = {0,0,1,-1,0,0}; 9 int main()10 {11 int i,j,k,a,b,c,t,tim 阅读全文
posted @ 2012-08-01 10:55 Naix_x 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 题目链接普通的DFS。。。输出字典序最大的。。。我竟然没注意。。#include <stdio.h>#include <string.h>char p[31],o[31],max[31];int k[31];int ans,z,len;void dfs(int step,int sum){ int i; if(step == 5&&sum == ans) { z = 1; o[5] = '\0'; if(strcmp(o,max) > 0) { strcpy(max,o); } ... 阅读全文
posted @ 2012-08-01 10:52 Naix_x 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题目链接没早发现这个DP,一直纠结各种图论题,蛋疼。。无奈水平太菜,最后两个小时都没搞出,本来想开10个标记数组的。。。。搞到最后半小时,发现同颜色的不会算,暴力吧。。。然后有个小细节没搞好,计算的时候。WA了,无奈还有10分钟,唉,已无力,查数据。。吃完饭,查出数据。。。过了。。。200+的DP,写的纠结。。。这次又是被虐了。。。QC只出了一个线段树模版,这个没做出,不应该啊,感觉数据应该不会很强,不会乱搞啊。。。 1 #include <stdio.h> 2 #include <string.h> 3 int rr[1001][1001],rc[1001][1001 阅读全文
posted @ 2012-07-31 19:20 Naix_x 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 题目链接算是 有公式把。一个数的可以化成,素数相乘的形式,约数个数 = 每个素数的次幂+1的乘积。知道了这个,还有3个需要注意。。。。我竟然错了9次。。。哭死了。。。。注意 1 的情况特判。 注意在sqrt(N)的范围以外的素数,直接输出2。含有sqrt(N)范围以外的的素数的 约数的非素数,找的时候特判一下,最后结果*2; 1 #include <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 #define eps 0.00000001 5 int p[100001],o[4001],k[4000 阅读全文
posted @ 2012-07-31 10:31 Naix_x 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 题目链接当以为是神题的时候,其实他是个恶搞题。挺不错的一个题。耐下心来,仔细想想就OK。View Code 1 #include <stdio.h> 2 #include <string.h> 3 int main() 4 { 5 long long a,b,n; 6 while(scanf("%lld%lld%lld",&a,&b,&n)!=EOF) 7 { 8 if(!a&&!b&&!n) break; 9 n = n%5;10 if(n == 0)11 printf("%lld\ 阅读全文
posted @ 2012-07-31 09:52 Naix_x 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 表示水出A和B,C没看懂,E看懂了以前貌似还见过不会做,CE应该都是DP。。。唉,DP,啊。。。。A题3分钟,B题卡了错了4次,很多2B错误。。把trick都想清楚了,这个基本属于乱搞题了。。。43分钟做出5Y了第二个,还用这个题,查了3个,挂了4个。。。赚了,然后就是围观,别的题。。。话说,rating大张啊,变蓝了。。。A题 水。。。#include <stdio.h>#include <string.h>int main(){ int i,j,n,m,z = 0; scanf("%d%d",&n,&m); for(i = 0;i 阅读全文
posted @ 2012-07-31 09:48 Naix_x 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 题目链接好久 好久 好久 没搞过多重背包的题了,不过还是挺模版的。加上二进制优化了,不加目测会超时。每次都感觉自己写的转换二进制,这么搓呢。。。 1 #include <stdio.h> 2 #include <string.h> 3 #define N 100001 4 int p[N],v[N]; 5 int main() 6 { 7 int i,j,k,c,num,n,sum,vv,max; 8 while(scanf("%d",&c)!=EOF) 9 {10 memset(p,0,sizeof(p));11 memset(v,0,.. 阅读全文
posted @ 2012-07-30 16:14 Naix_x 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 题目链接知道算法后,就简单多了,虽然对算法也不是很懂,套上模版就能过。 1 /*POJ 1061 青蛙的约会 2 从题意中很容易得到等式x+mt = y+nt(mod L)//t代表时间 3 移动左右得到 (m-n)t = y-x(mod L); 4 所以 得到(m-n)*a - L*b = y-x的扩展欧几里得,求解a,套上模版就OK了。 5 */ 6 #include <stdio.h> 7 #include <string.h> 8 __int64 x,y; 9 __int64 ext_eucld(__int64 a,__int64 b)10 {11 __int6 阅读全文
posted @ 2012-07-30 13:26 Naix_x 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 题目链接表示 完全 从学长的文档上照搬的。这才是真正的扩展的欧几里得,以下内容从文档上复制的。扩展欧几里得的简易证明过程: 1 如果gcd(a, b) = d 那么一定存在一个整数x, y满足ax+by = d; 2 3 当b == 0时,显然,x = 1, y = 0. d = a; 4 当b != 0时, 设 5 a*x1 + b*y1 = d ;(d = gcd(a, b)) 6 b*x2 + (a%b)*y2 = d; 7 所以 8 a*x1 + b*y1 = b*x2 + (a – [a/b]*b)*y2 9 a*x1 + b*y1 = a*y2 + b*(x2 –... 阅读全文
posted @ 2012-07-30 12:36 Naix_x 阅读(182) 评论(0) 推荐(0) 编辑
上一页 1 ··· 31 32 33 34 35 36 37 38 39 ··· 44 下一页