09 2013 档案

摘要:1350这题没什么 就考一下map的用法吧 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 mapq; 8 int f[110]; 9 char s1[110][44],ss[45];10 int o[110],p[110];11 int main()12 {13 int i,j,n,k,t;14 scanf("%d",&n);15 for(i = 1; i (n-p[k+1]-t))43 printf("NO\n");44 ... 阅读全文
posted @ 2013-09-30 16:42 _雨 阅读(221) 评论(0) 推荐(0) 编辑
摘要:1521根据区间和 来确定第k个数在哪 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 int s[N>1;21 build(l,m,w>1;34 if(k=r)43 {44 return s[w];45 }46 int m = (l+r)>>1,re=0;47 if(am)50 re+=getsum(a,b,m+1,r,w<<1|1);51 return re;5... 阅读全文
posted @ 2013-09-27 18:09 _雨 阅读(357) 评论(0) 推荐(0) 编辑
摘要:1003看篇国家论文《从《parity》的解法谈程序优化》对于区间i,j 如果用sum[i],sum[j]来表示到i的1的个数的奇偶性 那么仔细想下 sum[i-1] 若与区间i,j相等 则sum[j]为偶 否则为奇那么就可以把性质相同的合并在一个集合里 性质相同为朋友 不同为敌人 可以把一个端点分成两个 一个是自己一个是他的敌人 当与别的点合并时根据朋友的朋友是朋友 朋友的敌人是敌人 敌人的敌人 是朋友 这些原则 来进行合并 ,并判断是不是有矛盾端点比较大 用map离散化下 map相对其它离散化方法操作还是比较简单点 1 #include 2 #include 3 #include ... 阅读全文
posted @ 2013-09-27 16:05 _雨 阅读(377) 评论(0) 推荐(0) 编辑
摘要:1470最简单的三维树状数组 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define lowbit(x) x&(-x) 8 int re[130][130][130],n; 9 int getsum(int x,int y,int z)10 {11 int s = 0,i,j,g;12 for(i = x; i >= 1 ; i -= lowbit(i))13 for(j = y ; j>= 1; j -= lowbit(j))14 ... 阅读全文
posted @ 2013-09-25 22:23 _雨 阅读(177) 评论(0) 推荐(0) 编辑
摘要:1471先学习了下tarjan算法的LCA 离线算法 它是先知道询问的结点对 在遍历的时候就已经算出来了看篇图解 讲的很清楚 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 struct node 9 {10 int u,v,w,next;11 }ed[N<<2];12 int head[N],t,n,q,dis[N];13 int vis[N],ans[N],qhead[N<<2];14 int father[N],x[ 阅读全文
posted @ 2013-09-25 19:43 _雨 阅读(224) 评论(0) 推荐(0) 编辑
摘要:1494之前记得数据结构试卷上有这种题 就是判断某一出栈顺序 是不是满足以1.2。。。n为入栈顺序a1,a2,a3..an;对于任意相邻a[i],a[i+1] 如果a[i]>a[i+1]+1 那么它两之间的数肯定已经在前面出栈过了 不然中间的不出栈 a[i+1]不可能出来这一个条件就可以判断了 用数状数组求下和 就行了 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 #define lowbit(x) x&(-x) 9 int f[ 阅读全文
posted @ 2013-09-25 10:54 _雨 阅读(449) 评论(0) 推荐(0) 编辑
摘要:1220又一神题啊 卡内存可以卡到这种地步 省得不行了开两个【N]数组 一个来记录前驱 一个存数 记录前驱的用unsigned short类型 最大可达65535 不过可以标记一下是否比这个数大 比它大的话就减去 求的时候再加上 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 unsigned short p2[N]; 9 int p1[N];10 int stack[1010];11 int main()12 {13 int n,a,... 阅读全文
posted @ 2013-09-24 19:46 _雨 阅读(203) 评论(0) 推荐(0) 编辑
摘要:1671并查集 对于询问删除边之后的连通块 可以倒着加边 最后再倒序输出 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 int p[N],father[N],a,b,f[N]; 9 int pp[N];10 struct node11 {12 int x,y;13 }ed[N];14 int find(int x)15 {16 if(father[x]!=x)17 father[x] = find(father[x])... 阅读全文
posted @ 2013-09-24 16:56 _雨 阅读(257) 评论(0) 推荐(0) 编辑
摘要:1613高端的东西lower_bounder函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置,且last的位置是越界的然后用map 把数映射成容器 可以简单查询到每个数出现的最前和最后位置 再与给出的L,R相比较 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define N 7001010 map >t;11 v 阅读全文
posted @ 2013-09-24 15:36 _雨 阅读(233) 评论(0) 推荐(0) 编辑
摘要:1306URAL真是没水题 以为简单的排序就好了 ME 内存限制很紧 堆排序 或者 STL用堆排序做的 正好复习一下 都忘了 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 1250010 8 int a[N]; 9 void adjust(int i,int n)10 {11 int j;12 a[0] = a[i];13 j = 2*i;14 while(ja[j])17 j++;18 if(a... 阅读全文
posted @ 2013-09-24 09:23 _雨 阅读(225) 评论(0) 推荐(0) 编辑
摘要:第一眼就想到DP,然后想了N久就想不到可以不重算的DP 最后没办法了 先算出来 再去重。。因为最多只有三个 对于三个来说有三种组合情况 x+y+z, x*y*z, x*y+z 那要么 x,y,z都不同 要么 有两个相同 要么有三个相同 对都不同情况我的DP结果会重复两次 对于有两个相同的会重复一次 统计出都相同的 两个相同的 最后减掉。。有点乱 不过A了先预处理 时间差不多4S多 再O(1)询问 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define LL l... 阅读全文
posted @ 2013-09-23 14:42 _雨 阅读(827) 评论(2) 推荐(1) 编辑
摘要:第一个被板刷的题取余 依次算在周几 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 double ll,ss;10 char we[50];11 char s[10][20] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", &qu 阅读全文
posted @ 2013-09-23 14:36 _雨 阅读(659) 评论(0) 推荐(1) 编辑
摘要:1019离散化都忘记怎么写了 注意两个端点 离散化后用线段树更新区间 混色为-1 黑为2 白为1 因为N不大 最后直接循环标记这一段的颜色查找 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 #define LL long long 9 struct node 10 { 11 int d,id; 12 char c; 13 }li[N>1; 24 build(l,m,w=r) 30 { 31 ... 阅读全文
posted @ 2013-09-23 13:25 _雨 阅读(249) 评论(0) 推荐(1) 编辑
摘要:当时读错题意了 以为是什么博弈什么的 后来知道x,y不是拿走算一下所有数的最大公约数 相差小于最大公约数的数肯定没有 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 110 8 #define LL __int64 9 LL p[N];10 LL gcd(LL a,LL b)11 {12 return b==0?a:gcd(b,a%b);13 }14 int main()15 {16 int i,n;17 LL s=0,maxz=0;18... 阅读全文
posted @ 2013-09-23 11:18 _雨 阅读(236) 评论(0) 推荐(1) 编辑
摘要:1126最简单的单调队列应用吧单调队列是指在一个队列中各个元素单调 递增(或者递减),并且各个元素的下标单调 递增。单调队列的大体操作进队时,将进队的元素为e,从队尾往前扫描,直到找到一个不大于e的元素d,将e放在d之后,舍弃e之后的所有元素;如果没有找到这样一个d,则将e放在队头(此时队列里只有这一个元素)。出队时,将出队的元素为e,从队头向后扫描,直到找到一个元素f比e后进队,舍弃f之前所有的。(实际操作中,由于是按序逐个出队,所以每次只需要出队只需要比较队头)。每个元素最多进队一次,出队一次,摊排分析下来仍然是 O(1)。 1 #include 2 #include 3 #includ. 阅读全文
posted @ 2013-09-21 22:47 _雨 阅读(312) 评论(0) 推荐(0) 编辑
摘要:链接dfs+记忆化 对于当前状态虽然满足和差 但如果搜下去没有满足的情况也是不可以的 所以需要记忆化下 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 char s1[1010],s2[1010]; 8 int dp[1010][1010]; 9 int sum1,sum2;10 int p[2010],n,flag;11 int ss1[1010],ss2[1010];12 int st1[1010],st2[1010];13 int dfs(int x,int y,int v,. 阅读全文
posted @ 2013-09-20 11:58 _雨 阅读(258) 评论(0) 推荐(0) 编辑
摘要:链接找循环节 然后所有子循环节的最小公倍数就是总的循环节 找结果的时候也按一个个置换来进行转换 不然也TLE 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define LL long long10 int p[210];11 char s[210];12 char ss[210],sq[210];13 int vis[210];1... 阅读全文
posted @ 2013-09-20 10:23 _雨 阅读(231) 评论(0) 推荐(0) 编辑
摘要:链接这个东东是新知识 let's 从头学起吧这篇文库讲的不错 至少把各种概念学了一遍然后再看此题 共有两种类型的置换 一种是旋转之后相同算一种 一种是翻转之后相同算一种对于旋转 共有N次置换 转1下到转N下 对于每一次的循环节 各大牛给出了结论 为gcd(n,i) 这个我也不会证 姑且记住吧对于翻转 这个从图中可以看出来 找对称轴 分2种情况if n%2==0也分两种情况 若以两个相对的珠子为对称轴 那循环节为(n-2)/2+2若以 其它不含珠子的线为对称轴 循环节为n/2 个置换n/2次else (n-1)/2+1然后 就可以按ploya定理做了 文库有讲 就不说ploya是什么了 阅读全文
posted @ 2013-09-19 18:25 _雨 阅读(294) 评论(0) 推荐(0) 编辑
摘要:链接对于组合数学是一点也不了解讲解重要一点 要知道一个循环里最少的交换次数是m-1次 、 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 10010 8 #define INF 0xfffffff 9 int a[N],b[N],po[N*10],vis[N*10];10 int main()11 {12 int i,n;13 while(scanf("%d",&n)!=EOF)14 {15 memset(vis,0,si... 阅读全文
posted @ 2013-09-19 09:45 _雨 阅读(201) 评论(0) 推荐(0) 编辑
摘要:地址就贴这一个吧 都在附近当时回来也没做做 一伤心了 二是当时实在太弱了先补两道DPE题的区间DPdp[i][j] 截止到i位置以字母j为结束的上升序列 正序 逆序各来一遍 再循环一遍保存一下小于等于J结束的有多少 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define LL long long 8 #define N 100010 9 #define mod 2012 10 LL dp1[N][30]; 11 LL ... 阅读全文
posted @ 2013-09-17 23:14 _雨 阅读(353) 评论(0) 推荐(0) 编辑
摘要:链接这题意好难懂 看得迷迷糊糊 想的也迷迷糊糊 后来睡了会突然想到了。。不就是类似以前的矩阵操作从右下角记忆化 大的由小的推来dp[i][j] = max(dp[i-1][j]+s1,dp[i][j-1]+s2) s1 = a[i][g]+..a[i][j] s2 = b[g][j]+..b[i][j] 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int dp[550][550]; 8 int n,m; 9 int a[550][550];10 int b[550][550];. 阅读全文
posted @ 2013-09-17 18:39 _雨 阅读(273) 评论(0) 推荐(0) 编辑
摘要:链接状态转移好想 不过有坑 大家都犯的错误 我也会犯 很正常就是锤子可以移到n*n以外 要命的是我只加了5 以为最多不会超过5 WA了N久 才想到 上下两方向都可以到5 所以最多加10以时间和坐标进行DP 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 1010 9 #define M 3210 struct node11 {12 int x[N],y[N];13 }f[M][M];14 int o[12][M][M];15 int... 阅读全文
posted @ 2013-09-17 14:59 _雨 阅读(186) 评论(0) 推荐(0) 编辑
摘要:链接确实是破题 按复杂度估计怎么着也不能按坐标D 啊网上的代码交上去还TLE 无语了 多次TLE之后终于看到一次WA。。好高兴以横坐标进行DP dp[j] = min(dp[j],dp[2*x[i]-j]+1) 这个2*x[i]-j其实是 j+2*(x[i]-j]) 由当前坐标可以由没跳这个个建筑物i之前的坐标推来限制条件为 (j-x[i])*(j-x[i])+(y[i]-y[1])*(y[i]-y[1])>y[i]*y[i]; 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namesp 阅读全文
posted @ 2013-09-16 20:56 _雨 阅读(195) 评论(0) 推荐(0) 编辑
摘要:链接裸线段树 这题时间卡的挺棒 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 #define N 1000010 9 #define INF 0xfffffff10 int s[N>1;26 build(l,m,w=r)33 {34 return lm[w];35 }36 int m = (l+r)>>1,ans = INF;37 if(am)40 ans = min(ans,query1(a,b,m+1,r,... 阅读全文
posted @ 2013-09-16 13:03 _雨 阅读(183) 评论(0) 推荐(0) 编辑
摘要:链接哎。。比赛中一下想到了公共子序 之后思维就被局限了 一直在这附近徘徊 想着怎么优化 怎么预处理。。观看了众多神牛的代码 。。以前觉得自己能写出个记忆化的最长回文长度 还挺高兴的。。。现在觉得好弱因为它是两边一起跑 也就是可以是两段回文子序 所以。。只需要求下1-i i+1-n的最长回文串就可以了 这个是可以在之前求总的时候保留下来的 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int dp[1010][1010]; 8 int a[1010]; 9 int main()10. 阅读全文
posted @ 2013-09-16 11:45 _雨 阅读(645) 评论(0) 推荐(0) 编辑
摘要:链接预处理出只有四个1的情况存入数组中 然后状压下 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 1050000 8 int dp[2][N]; 9 int q[2][N];10 int pt[N];11 bool f[N];12 struct node13 {14 int x,y;15 }pp[25];16 bool cmp(node a,node b)17 {18 if(a.x==b.x)19 return a.y<b.y;20 ... 阅读全文
posted @ 2013-09-15 22:26 _雨 阅读(500) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4734各种不细心啊 居然算的所有和最大值会小于1024.。。第二次做数位DP 不是太熟 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define LL __int64 9 int dp[15][10500],dp2[15][10500];10 int a,b;11 int pp[20];12 void init()13 {14 int i,j,g;15 ... 阅读全文
posted @ 2013-09-14 20:23 _雨 阅读(885) 评论(0) 推荐(0) 编辑
摘要:链接神奇的扫描线啊估计之前刷面积并的时候太急了 没来得及理解 。。有一大段代码是与面积并一模一样的 都是离散化 更新面积并是扫描的x 这次也一样因为周长只算外围的 所以扫描到一条x边时 要减去上一次扫描到的 对于Y方向上 就是与面积并不大一样的地方了看篇带图的讲解吧 网上的题解都大同小异 估计出自一人之手http://blog.sina.com.cn/s/blog_691ce2b7010177dz.html它是扫描的Y 其实方法是一样的 横过来就是对于我的代码 自己感觉不好理解在于求区间数 1 #include 2 #include 3 #include 4 #include 5 ... 阅读全文
posted @ 2013-09-13 19:38 _雨 阅读(291) 评论(0) 推荐(0) 编辑
摘要:链接这树着实不好理解啊讲解http://www.cnblogs.com/pony1993/archive/2012/07/17/2594544.html对于找K值 右区间的确定不是太理解。。先当模板贴着吧 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 100010 8 int tree[20][N],sum[20][N];//每层的数 及每层截止到i会放进左子树的个数 9 int cu[N],xu[N];//原数据 及排序后的数据10 void build(.. 阅读全文
posted @ 2013-09-13 19:13 _雨 阅读(271) 评论(0) 推荐(0) 编辑
摘要:链接树上的一些操作还是不是太好想 直接dfs下去 不是最优的一个节点最多保留两个度 如果它有两个以上的子节点 那么就与父节点断开 与k-2个子节点断开 再重新连 1 #pragma comment(linker, "/STACK:1024000000,1024000000") 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 2000010 9 struct node10 {11 int u,v,next;12 }ed[N=2)37 {38 .. 阅读全文
posted @ 2013-09-12 15:22 _雨 阅读(172) 评论(0) 推荐(0) 编辑
摘要:链接这题规律其实挺明显的 打表找规律估计都可以 正规点就是DP算出第N位所包含的good number的数量 如果给出的数是N+1位 就枚举各位上比原来小的数 加上下一位的dp值一个i写成g了 纠结了半天。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define LL __int64 8 LL dp[20][20],a,b,pp; 9 void init()10 {11 int i,j,g;12 for(i = 0 ; i = 1 ; i--)34 ... 阅读全文
posted @ 2013-09-11 20:58 _雨 阅读(194) 评论(0) 推荐(0) 编辑
摘要:链接dfs倒着搜 返回的路径不能满足相同的数最多 借鉴了下别人的代码。。先dp出来 再倒着标记一下 然后正回来一定可以满足了dp保存的是最小的不相同数 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define INF 0xfffffff 8 int dp[1010][10010]; 9 char s[1010]; 10 int flag,path[1010],k,m,pp[1010],f[1010][10100]; 11 int main() 12 { 13... 阅读全文
posted @ 2013-09-11 09:21 _雨 阅读(172) 评论(0) 推荐(0) 编辑
摘要:链接以前做的题 VJ太水了 数组里面的数可能会小于0 当时没判断 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int dp[100010],w[110],path[110],o,f[110],n,ff[110]; 8 int flag,tw; 9 void dfs(int sw,int v,int u)10 {11 int j,i;12 if(flag) return ;13 path[v] = u;14 if(sw==0)15 {16 ... 阅读全文
posted @ 2013-09-10 11:45 _雨 阅读(209) 评论(0) 推荐(0) 编辑
摘要:链接这题卡了挺久了 昨天试着用类似dfs的方法直接TLE在第二组 看了下题解,,发现s1,s2的范围是个幌子。。100位最大的s1900 s28100 觉得s1s2太大不敢开二维。。这样就简单了 类似背包 dp[s1][s2]表示组成s2s2最少的位数 其实就是装进去多少个数字 正好把s1s2装满把DP部分预处理之后放在外面 不然会超时 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define INF 0xfffffff 8 int s1,s2; 9 int dp[920][. 阅读全文
posted @ 2013-09-10 09:43 _雨 阅读(239) 评论(0) 推荐(0) 编辑
摘要:链接先初始化一下所有的回文串 再O(n*n)DP输出路径dfs 刚开始存所有回文 ME了 后来发现用不着 改了改了OK了 数据还挺强 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 4010 8 #define INF 0xfffffff 9 int dp[N]; 10 char s[4010]; 11 int path[2][4010],o[4010],q[4010][4010],k; 12 int g,flag,pp[2]; 13 void... 阅读全文
posted @ 2013-09-06 21:35 _雨 阅读(259) 评论(0) 推荐(0) 编辑
摘要:这几天扫了一下URAL上面简单的DP 第一题 简单递推1225. Flags 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define LL long long 7 LL dp[50][4]; 8 int main() 9 {10 int i,n;11 scanf("%d",&n);12 dp[1][1] = 1;dp[1][2] = 1;13 for(i =2 ; i 2 #include 3 #include 4 #include 5 #include 6 u... 阅读全文
posted @ 2013-09-06 19:23 _雨 阅读(290) 评论(0) 推荐(0) 编辑
摘要:链接dp[i][j] += dp[i-1][j-g];背包吧数据太大了 还是JAVA好用 1 import java.io.*; 2 import java.math.*; 3 import java.text.*; 4 import java.util.*; 5 public class Big { 6 public static void main(String[] args) 7 { 8 Scanner cin = new Scanner (System.in); 9 BigInteger[][] dp;10 dp = n... 阅读全文
posted @ 2013-09-05 10:59 _雨 阅读(204) 评论(0) 推荐(0) 编辑
摘要:链接路径麻烦啊 很多细节 倒回去搜一遍卡了一节数据库。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define LL long long 8 int u,o,path[50010],flag; 9 LL sum[110][510],dp[110][510],f[110][510]; 10 int m,n; 11 void dfs(int u,int v) 12 { 13 if(flag) 14 return ; 15 int i,... 阅读全文
posted @ 2013-09-04 15:07 _雨 阅读(224) 评论(0) 推荐(0) 编辑
摘要:链接考查大数 正好拿来学习下JAVA JAVA好高端。。 1 import java.io.*; 2 import java.math.*; 3 import java.text.*; 4 import java.util.*; 5 public class Main 6 { 7 8 public static void main(String[] args) 9 {10 Scanner cin = new Scanner (System.in);11 BigInteger[][] dp;12 int n,k,i,j,g;13... 阅读全文
posted @ 2013-09-04 11:43 _雨 阅读(349) 评论(0) 推荐(0) 编辑
摘要:链接简单树形DP 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define INF 0xfffffff 8 int dp[110][110]; 9 int n,q,ch[110][3];10 int p[110][110];11 int dfs(int pre,int u,int s)12 {13 int i;14 if(dp[u][s]!=-1)15 return dp[u][s];16 int o = 0,cc[4];17 for(... 阅读全文
posted @ 2013-09-04 11:08 _雨 阅读(212) 评论(0) 推荐(0) 编辑
摘要:链接简单递推 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define LL long long 8 LL dp[510][510]; 9 int main()10 {11 int i,j,n,g;12 LL ans=0;13 scanf("%d",&n);14 for(i = 1; i <= n ;i++)15 dp[i][i] = 1;16 for(i = 1; i <= n ;i++)17 {18 ... 阅读全文
posted @ 2013-09-03 20:29 _雨 阅读(227) 评论(0) 推荐(0) 编辑
摘要:链接第一道URAL题 简单递推 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define LL long long 8 LL dp[20][20]; 9 int main()10 {11 int i,j,n,k,g;12 LL ans=0;13 scanf("%d%d",&n,&k);14 for(i = 0 ; i < k ; i++)15 dp[1][i] = 1;16 for(i = 1; i <= n ; i++)17 . 阅读全文
posted @ 2013-09-03 20:01 _雨 阅读(201) 评论(0) 推荐(0) 编辑
摘要:链接dfs了 写得有点乱 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define INF 0xfffffff 8 struct node 9 { 10 int lx,ly,rx,ry,d; 11 }co[22]; 12 int kk[22][22],o[22]; 13 int num[22][22],oo[22],ans,fk[22]; 14 int n; 15 void dfs(int u,int de,int vis[]) 16 { 17 ... 阅读全文
posted @ 2013-09-03 18:17 _雨 阅读(211) 评论(0) 推荐(0) 编辑
摘要:链接本来想写spfa 加点什么限制什么的可能就过了 写着写着就成裸BFS了 也没优化就水过了 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define N 110 9 #define M 1001010 #define INF 0xfffffff11 struct node12 {13 int u,v,w,next,len;14 }ed[Mq;38 mode ss,st;39 int i;40 for(i = 2; i a... 阅读全文
posted @ 2013-09-03 13:15 _雨 阅读(205) 评论(0) 推荐(0) 编辑
摘要:链接想偷点懒用矩阵存 一直WA 后来看讨论说有重边改为邻接表 这题边可能走了不止一次 我设的最多两次可过 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define INF 0xfffffff 8 struct node 9 {10 int u,v,w1,w2,d,next;11 }ed[22];12 int head[12];13 int n,m,p[12][12],ans;14 int vis[12],t;15 void init()16 {17 t = 0... 阅读全文
posted @ 2013-09-03 09:35 _雨 阅读(175) 评论(0) 推荐(0) 编辑
摘要:链接这题其实是由bug的 一个串包含其它两个串的数据没有 所以就这么水了它吧 只处理两个串的关系就行了回来补点。。看了huge的博客 发现其实不是有Bug 题意没读清楚 必须首尾相连 像AGCT GC这样就不算。。降低了复杂 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define INF 0x3f3f3f 8 char s[22][22]; 9 int k[22],o[22][22],n;10 int vis[22],ans;11 void init()12 {13 ... 阅读全文
posted @ 2013-09-02 09:45 _雨 阅读(377) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示