ACM
文章平均质量分 66
未水
这个作者很懒,什么都没留下…
展开
-
一位ACMer的心得
转自http://user.qzone.qq.com/289065406/blog/1311344840#!app=2&via=QZ.HashRefresh&pos=1311344840刻苦的训练我打算最后稍微提一下。主要说后者:什么是有效地训练?我想说下我的理解。很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了。其实,这既不是充分条件、也不会是必要条件。我转载 2012-07-14 20:13:54 · 1019 阅读 · 0 评论 -
BNUOJ 14407 friends or not 水题写得bug很多
期间犯的错误:1.没看清题意,02.char a[]="aa";char b[]="aa"; if(a==b){} 这个循环跳不进去的, 即直接通过比较字符串指针来比较两个字符串是否相等3.pair 与 pair 是不同的4.用map的类型是map,int> 再调用find函数即犯了第二个错误5.之后改了string类型的,struct里面忘记改了,长期使用prin原创 2012-10-13 00:07:19 · 532 阅读 · 0 评论 -
hdu 4300
从(len+1)/2开始枚举,即大于等于中间点处,从len/2开始就会WA不止,这种情况是由于不同的密文字母可能对应同个明文,造成最终明文和密文overlapping together#include #include #include #include #include #include #include using namespace std;char t[2原创 2013-03-13 15:41:47 · 915 阅读 · 0 评论 -
poj 3122
精度的原因,开始一直错,我这数学白痴学习了!#include #include #include #include #include #include using namespace std;#define PI acos(-1.0)#define eps 1e-7double a[20500];int main (){ int t;scanf("%d",&t);原创 2013-03-12 20:50:23 · 794 阅读 · 0 评论 -
POJ 3254
应该算做记忆化搜索的不种也算做一种方案#include#include#include#include#include#include #include #include #include #include using namespace std;#define mod 100000000#define ll long longll dp[(1<<13)+100]原创 2013-04-18 13:47:56 · 558 阅读 · 0 评论 -
SGU487 Courier's Route
条件是:每个点有4个门,每个门都连向其他点的门,但不能连向自己1.对于两个点u,v,假如他们有边u-v,无论如何限制u和v其他门的连向,点u连通的点集(除v之外)与点v连通的点集(除u之外),限制这两个点集不连通,是不可能的---u到v是双连通的,即存在环2.可以推出任意两个点如果他们连通的,一定存在环一直不过:1.天真地写了个深搜,TLE了,但No的话相当于穷举所有路原创 2013-04-27 17:59:25 · 722 阅读 · 0 评论 -
POJ 2960
求sg的时候不能用set,否则超时,终于见证到STL之慢#include #include #include #include #include #include #include #include #include using namespace std;#define N 10505int dp[N],a[N],n;int dfs(int u){ if(原创 2013-06-01 10:20:39 · 737 阅读 · 0 评论 -
POJ 1026
很挫的代码,凑合着刚开始2B地求了最小公倍数,TLE了,其实不用,在每个循环里面各自搞定就好#include #include #include #include #include #include #include #include #include using namespace std;#define N 240#define ll long longint原创 2013-06-02 13:10:25 · 564 阅读 · 0 评论 -
POJ 1015
偷的代码,两份代码都是可以A的,但是很奇怪,没case之间没输出空行能过。更奇怪的是,这组数据一直过不了9 66 216 104 919 817 124 710 22 145 18答案: 1 2 3 4 6 9一开始尝试,把n放在外层,m的枚举放在里层的for也没过#include #include #include #in原创 2013-06-03 00:41:29 · 684 阅读 · 0 评论 -
CF314-C Sereja and Subsequences
#include #include #include #include #include #include #include #include #include #include #include using namespace std;#define ll long long#define N 100500#define mod 1000000007int n;l原创 2013-06-09 21:05:53 · 1161 阅读 · 0 评论 -
ZOJ 3703,3700,3699
经典背包问题,处理好限制条件的优先级排序是为了让相同val,相同问题数量以及选择的时候,从ti更小的问题坐起,总的penalty会最少#include #include #include #include #include #include #include #include #include #include using namespace std;struct原创 2013-04-21 10:12:23 · 1732 阅读 · 2 评论 -
poj3273+poj3258 二分易错点
1.关于二分的两种写法一种是 while(left{if()left=mid+1;else right=mid;}ans=left;这是我比较喜欢的一种还有一种是while(left{if()left=mid+1;else right=mid-1;}ans=mid;注意两种的ans是不同的2. 假如二分要求的答案是原创 2013-03-12 19:43:13 · 1235 阅读 · 0 评论 -
poj线段树专题
poj 2528 水题#include #include #include using namespace std;#define N 40500int n;struct node{ int l,r,flag;}tree[N*4];struct Inter{ int l,r;}inter[N];int vis[N];int max(i原创 2012-10-31 11:47:33 · 4617 阅读 · 0 评论 -
UVA Live 5029 Encoded Barcodes 字典树-水题
轻松1A无压力#include #include #include #include #include using namespace std;const int bk=26;struct node{ int val; node* nxt[bk]; node() { val=0;memset(nxt,0,sizeof(nxt)); }}*root;int n,原创 2012-10-13 16:49:11 · 627 阅读 · 0 评论 -
CF232A-cycles 构造,贪心
k=C(n,3)+C(K1,2)+C(K2,2)+C(K3,2)+C(K4,2)........尽力表达成上式就能花费最小的点构造出尽量多的三元环#include #include #include #include #include using namespace std;#define ll long long#define INF (1000000000)i原创 2012-10-12 07:45:25 · 1006 阅读 · 0 评论 -
poj 1258 最小生成树 prim+优先队列
想手打个堆优化,搞半天一直WA,悲剧……#include #include #include #include #include #include #include using namespace std;#define M 550000#define N 5500#define INF (1<<30)struct Edge{ int v,w; Edge(int原创 2012-10-10 09:23:52 · 1372 阅读 · 0 评论 -
POJ 3422 费用流
刚开始用dp做一直不过,想不通。看了别人报告才知道,dp没有解决后效性,即当前的决策会对下一次travel。出不了数据,但觉得数据大的时候应该会错这类k次操作,每次操作代价都不同,求最大或者最小代价的问题,只能用费用流http://hi.baidu.com/graphis/item/74b8afc6ec27f870f6c95d50从多进程动态规划到费用流的转化,这里讲的很好原创 2013-06-07 16:01:52 · 555 阅读 · 0 评论 -
Codeforce#181 div2 C,E--problem 300E,300C
E:很值得学习的方法,阶乘很大时结果不能存下,用此方法统计质因数的个数来表示又偷了别人的代码#include #include #include #include #include using namespace std;#define ll long long#define MAX 10000005int a[MAX],isp[MAX];ll cnt[MAX];原创 2013-04-26 04:06:32 · 1171 阅读 · 0 评论 -
POJ 3034 简单dp--注意细节
没考虑到锤子可能到达界外一直不过,从界外也能转移进来,并可能得到更优的结果想法是简单的,从前一秒的每个状态转移到下一秒的每个状态,状态数比较小,能过在处理经过时得到几分比较山寨,凑合着吧。。#include #include #include #include #include using namespace std;#define eps 1e-8int n,d原创 2013-04-25 19:16:02 · 685 阅读 · 0 评论 -
POJ 2411 记录状态的dp
和poj3254一样#include#include#include#include#include#include #include #include #include #include using namespace std;#define ll long longll dp[(1<<12)+100][13];int h,w;ll dfs(int i,int原创 2013-04-18 16:59:18 · 578 阅读 · 0 评论 -
POJ 3317 博弈-极大极小过程+记忆化搜索+剪枝
1.current player 不一定是02.TLE想到记忆化搜索,想到怎样记录状态,注意到空位不大于10个,从这里做文章:在搜索过程中,每个空位有三种情况:还是空的(0),被0填充(1),被1填充(2),用个三进制数记录(now)在搜索过程中,需要枚举还没被填充的空位,需要记录对于每个状态哪个空位还没被填充的:被填充(0),被填充(1),用二进制数记录(state)3.alph原创 2013-04-16 12:56:44 · 1667 阅读 · 0 评论 -
POJ 2960 博弈-简单SG
记忆化搜索,数据太水,1STL的东西真不能用,太慢,用STL并且在搜索的函数里开10000的数组就RE了,用数组写的并且在搜索的函数里开10000的数组就A了。。#include#include#include#include#include#include #include #include using namespace std;int s[1000],cnt;in原创 2013-04-15 21:02:27 · 915 阅读 · 0 评论 -
poj 3308 最小割
应用到:最小割等于最大流定理技巧:割边的乘积最小,用log转化!!太好了!!#include #include #include #include #include #include #include using namespace std;int m,n,l,s,t;#define N 120#define M 2000const double INF =1000000原创 2013-03-31 20:54:51 · 666 阅读 · 0 评论 -
hdu4005 缩点+无向图+重边
奉上数据:6 71 2 12 1 12 3 13 4 14 3 11 6 24 5 35 81 2 12 1 12 3 23 2 23 4 34 3 34 5 45 4 41 07 71 2 12 4 23 4 14 3 13 5 23 6 36 7 3原创 2012-10-22 11:12:49 · 1430 阅读 · 0 评论 -
UVA LIVE 5053 World Cup Nominations--有向图强连通
1.强连通里面的点可以到达彼此,即存在a->b 和 b->a,通过某些途径可以打败彼此,果断缩点,如果块里面某一点能赢,那么其他点也能赢,反之也是2.缩点后各块之间,对于某两个块,只可能块a的边全部指向块b,不会有a->b又有b->a,能赢的那些点一定是没有块指向它的,否则它还是不可能打败所有#include #include #include #include #原创 2012-10-05 21:06:04 · 853 阅读 · 0 评论 -
hdu2222 AC自动机入门 指针型模板
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define maxnode 10000*100#define sigma_size 26struct Node原创 2013-07-03 20:22:16 · 600 阅读 · 0 评论 -
POJ 3318 随机化测试
从来不知道可以这么玩的。。学习了#include #include #include #include #include #include #include #include #include using namespace std;#define N 510int a[N][N],b[N][N],c[N][N],s[N];int n;bool check(int原创 2013-06-03 20:33:09 · 659 阅读 · 0 评论 -
poj 3270 置换群
置换群好题一枚2种决策:取循环内最小的数参与循环的置换,循环内有n个元素,进行n-1次;取循环外最小的数进来参与循环的置换,再交换回去#include #include #include #include #include #include #include #include #include using namespace std;#define N 1050原创 2013-06-02 12:36:24 · 779 阅读 · 0 评论 -
SGU 492 经典数位dp
计数时不要某个数字,求数字对应的序号或者求某个序号对应的数字解决方式是记忆化搜索long long 是肯定的,并注意n最大时对应的答案的范围原来1000000000000000000 #include #include #include #include #include using namespace std;#define ll long longll原创 2013-04-28 04:14:16 · 1032 阅读 · 0 评论 -
POJ 2948 经典二维dp
一开始不知道怎么解决后效性,以为自己记录状态的方式错了,实际上是转移方程想错了学习了:如果怎么dp都发觉有后效性,一定是dp的姿势不对dp[i][j] 如果采用向左的决策,要从dp[i-1][j] 转移过来,如果采用向上的决策,要从dp[i][j-1]转移过来,这样前面的方程里怎么决策才不会对后来那个方程有影响#include#include#include#includ原创 2013-04-18 18:23:10 · 668 阅读 · 0 评论 -
POJ 2029 预处理
水题#include#include#include#include#include#include #include #include #include #include using namespace std;#define N 105int down[N][N],ver[N];int mat[N][N];int main (){ int n,w,h,s,原创 2013-04-16 23:05:46 · 776 阅读 · 0 评论 -
POJ 1085 博弈-搜索
与3317区别开,每个选手在面对当前局势最优能得到多少三角形是一样的,即之前放的边是谁放的没关系,不会影响后面结果的统计所以dp【state】表示在state下先手能得到最多多少个三角形#include#include#include#include#include#include #include #include #include #include us原创 2013-04-16 21:24:25 · 784 阅读 · 0 评论 -
poj 1054 搜索
刚没看清题目,跳必须是从外面跳进来,然后跳出去的,一直WA不止谁说是dp的,完全扯淡#include #include #include #include #include #include using namespace std;#define N 5050struct point{ int r,c;}p[N];bool mat[N][N];int r,c,n;原创 2013-03-26 21:38:04 · 652 阅读 · 0 评论 -
poj 1191 dp经典
#include #include #include #include #include #include using namespace std;int dp[20][10][10][10][10];int s[10][10][10][10];int mat[10][10];int n;int cal(int k,int x1,int y1,int x2,int y2)原创 2013-03-26 17:19:20 · 784 阅读 · 0 评论 -
poj 1691 搜索
关键是解决相互制约关系,由数据量很小可知方法一定很水。。。#include #include #include #include #include #include #include #include using namespace std;struct obj{ int ux,uy,dx,dy,c;}p[20];int n;int vis[20];int原创 2013-03-19 09:57:29 · 843 阅读 · 0 评论 -
poj 1113 凸包模板
#include #include #include #include #include #include using namespace std;#define N 1050#define PI acos(-1.0)int n,r;struct point{ int x,y; point(int _x=0,int _y=0) { x=_x; y=_y; }原创 2013-03-11 16:57:29 · 683 阅读 · 0 评论 -
浅显易懂二分图-最大匹配,最小路径覆盖,最小点覆盖
正式的定义,网上一大把,但他们的作用是让人看不懂……二分图:把点分成两个集合X,Y,使得图的边的两个端点总是分别落在X和Y上,不会有X中的点连向X中的点,不会有Y中的点连向Y中的点匹配:实质上是二分图中的一个边集,边集中出现的点不会重合,比如有a-b了,就不会有a-c了,要是有了a就重合了最大匹配:这个边集的数目最大的那个匹配 匈牙利算法——增广路:一条在X和Y之间交错的路原创 2012-11-14 21:25:26 · 4552 阅读 · 0 评论 -
hdu 3753 模拟
题目讲输入时可能有leading spaces and trailing spaces ,'@' in a single line是case separated symbol 然后就被坑了, 有些输入是以‘@’开头的,如果直接判断str[0]=='@'就WA了我就是牺牲者,好像挺明显的东西,只有我这种挫人才跳进坑里这几天遇到的还有给你case的数目,case separate原创 2012-10-20 15:29:54 · 819 阅读 · 0 评论 -
uvalive 5026 树-直径
这个问题挺有趣,所以锲而不舍想要知道怎么做了解之后发现也挺直观和朴素,怎么当时就想不出来呢。。1.求最长路2.要移动的边肯定在最长路上3.枚举最长路上的每条边,对于每条边u->v(权值为w),移动它的策略是把u,v两个端点接在两边子树的最长路的中间位置4.接好后的最长路不一定是 x+w+y,还有可能是两个子树的最长路,要判断下#include #include原创 2012-10-18 19:56:08 · 698 阅读 · 0 评论 -
hdu 1003/poj 1050 连续子序列最大和经典基础dp
之前不太理解,只记得和为负的就记为0,然后不断扫下去,更新ans实际上用了 sum[i]-sum[j] ,令ans最小,即找出最大的sun[j](jhdu1003 还要求出起始点和终点#include #include #include #include #include using namespace std;int dp[100500],n;原创 2012-10-15 13:22:55 · 1389 阅读 · 0 评论