摘要: 第一道数位dp的题目,没什么头绪,递归的算法参考了cxlove大神的写法,链接:http://blog.csdn.net/ACM_cxlove?viewmode=contents 不得不说数位dp是个神奇的算法,这个学会以后多校的很多题目应该就可以做了吧,记得有好多类似的题目>#include#define MOD 1000000007int va[26];long long Numcnt[20][7][7][2],Numsum[20][7][7][2],Numsum2[20][7][7][2];long long numcnt,numsum,numsum2;//数字个数,数字和,数字平 阅读全文
posted @ 2013-04-07 21:49 破晓べ 阅读(677) 评论(0) 推荐(1) 编辑
摘要: 题目链接:http://122.207.68.93/OnlineJudge/problem.php?id=1205最后没时间写了...也没去测试,O(n^4)次方的方法应该过不去吧,优化为O(n^3)的方法:枚举上下边界,然后再枚举左边界,注意,右边界不需要枚举,左边界前进的时候,只需用上一次的位置继续往右试探,这样复杂度就是0(n^3)了。CSU 1205#include<stdio.h>#include<string.h>int sum[110];int map[110][110];int main(){ int T,n,m,s,i,j,k; scanf(" 阅读全文
posted @ 2013-04-05 22:28 破晓べ 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://122.207.68.93/OnlineJudge/problem.php?id=1208比赛的时候只是觉得是矩阵,但是一直没想到怎么推...(a+b)^k应该联想到二项式的啊ToT,而且他说k<=20,明摆着就是告诉你可以矩阵的...正确的构造方法是: C(k,0) c(k-1,0) C(k-2,0)...C(0,0) C(k,0) C(k,1) c(k-1,1) C(k-2,1)... 0C(k,1)[fib(n-1)k,fib(n-1)k-1fib(2)1 .....fib(n-2)k,sum[n-... 阅读全文
posted @ 2013-04-04 23:13 破晓べ 阅读(329) 评论(0) 推荐(0) 编辑
摘要: A.A Simple Tree Problem 刚开始没想好怎么转化,其实,用vector记录下来每个父节点的直接孩子,来个深度优先遍历进行编号,就可以把树形的结构转化成一维的线性结构,然后就是一般的线段树了!ZOJ 3686//http://www.cnblogs.com/SolarWings/archive/2013/04/01/2994548.html#include<iostream>#include<cstdio>#include<cstring>#include<vector>using namespace std;#define l 阅读全文
posted @ 2013-04-01 23:28 破晓べ 阅读(662) 评论(4) 推荐(1) 编辑
摘要: 这道题纠结了俩小时,总觉得网上的解法存在点问题(也可能是我自己理解的问题),不存在环的情况自然不用说,就是求最长路,对于存在环时候的情况,有一种说法是只要存在正环,直接判断1到n是否连通即可,还有一种说法是找到正环以后,从发现正环的点出发dfs看是否和n连通,如果是就可以到达,不是就直接不可以到达,我感觉不太对,比较支持某位前辈的说法,找到所有的正环,然后判断能否到达n,但是最近比较懒...鉴于这种方法实现比较复杂,最后还是用了个偷懒的方法>< 先做一次n-1次循环的Bellman-Ford,因为前面做了n-1次操作,所以后面松弛操作成功的点有两种情况。1.该点本身在正环中,2.该 阅读全文
posted @ 2013-03-16 22:41 破晓べ 阅读(582) 评论(0) 推荐(0) 编辑
摘要: 昨天晚上太纠结了...因为C题数组少开了一位,还风骚地锁住,想要去黑别人...然后刚点完就觉得不对,数组貌似开小了,然后...然后就后悔也来不及了,最后判题的时候以为暴零了,其实是在pending...最后就最水的A题过了,唉,这rating掉到解放前了ToTC - Points on Line就是个枚举+二分....唉,昨天脑子僵掉了View Code #include<iostream>#include<algorithm>using namespace std;int va[110000];int main(){ int n,k,i; __int64 ans; w 阅读全文
posted @ 2012-12-07 01:53 破晓べ 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 感觉这次的题目几乎没有算法,都是实现有点烦的题目,代码能力还有待提高.D. Building Bridge题意: 一个平面上有4个点A,B,C,D,A点坐标确定为(0,0),B点坐标为(a,y1),C点坐标为(B,y2),C到D点的距离确定为L,求选取哪个y1和y2的组合可以使总距离最小.赛时想法: 当时的情况是C题写的有点慢了,D题剩下40分钟不到,不管是不是心急吧,反正图画出来以后没有什么明确的想法...看着10W的M和N,大脑处于基本空白的状态...坚持到还有20分钟的时候就暂时放弃了...想着就算有了思路也不一定有时间实现了,然后去看别人前面的代码,想要hack赚点分...不过ha.. 阅读全文
posted @ 2012-11-28 20:52 破晓べ 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 今天应该算第一次开始做CF,把当时没搞出来的题目总结一下吧C. Beauty Pageant题意: 给N个互不相同的数字,要组成M(M<=N*(N+1)/2)种不同的SUM,要求输出每种组成的方法.错误思路: 比赛的时候没有注意M的数据范围...结果居然写了个深搜...OMG,这明显要超时的节奏啊,没想到交上去以后样例居然过了,看来比赛中的样例M是不够大啊...不过中途还是被某个牛人hack掉了- -。正确思路: 注意到M的范围很重要,因为一共有N个数字,假设现在要一个L个人的组合,那么可以固定L-1个人(直接取最后L-1个人就好了,很方便),剩下的N-L+1个人依次可以和这L-1个人组 阅读全文
posted @ 2012-11-22 10:50 破晓べ 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 组合数学总结(转发请注明出处)1.基础知识(1)小数据范围直接预处理求组合数例1.hdu 1799 循环多少次?题意: 中文题目..不解释.思路: 由于每一层从上一层+1开始,所以对于每一种瞬时的状态,对应C(n,m)中的一种情况,所以答案就是C(n,m),由于数据量比较小,直接预处理即可代码:View Code 1 #include<stdio.h> 2 int c[2010][2010]; 3 4 void init() 5 { 6 int i,j; 7 c[0][0]=c[1][0]=c[1][1]=1; 8 for(i=2;i<=2000;i++) 9 ... 阅读全文
posted @ 2012-09-05 13:39 破晓べ 阅读(669) 评论(0) 推荐(0) 编辑