ACM
ACM,algorithm
TC-srm454
1昨天凌晨一点终于等到了期待已久的TC..前段时间和区域赛冲突一直没做,上次又遇到TC服务器蹦掉,搞出个454.5.悲剧之极
这次题目其实很水
250暴力模拟.敲的不够快,才240分
做500的时候完全脑残了.没看见返回值是longlong,直接爆搜,结果写了半天发现样例都跑不出来,只能作罢.后来想到DP瞬间敲出代码…不过时间已经在搜索上浪费了很多,只剩200多分..
1000分和以往一样,看了后没啥思路.这次有思路也没时间敲了.
剩下的时间打算出点数据cha人,发现250有个trick,正着做和反着其实结果不一样,但是一般人喜欢正着遍历,很不幸,我也是这样的,于是在最后一分钟的时候修改代码,只剩75分….
赛后和ACM-DIY群里的人说了一下这个trick,果然有N多大牛和我犯了同样的错误..和大家分享了8这个数据后大家纷纷在自己房间里推倒一片人,然后抱怨为什么不能把自己的代码cha了,哈哈
最后系统判完之后排180+…好挫,不过还是加分了,加到了最高分1789.连一分都没有突破T T
PS.庄立不小心250做挂掉,还乱cha人变成了负分,掉了200多分创历史新低,打回原形,同情一下
杭航连续两次分到room1,并且这次把petr都虐了,创历史新高,仰慕一下,祝早日变成target
Popularity: 3% [?]
有向图的强连通
6强连通缩点
其法有三:Kosaraju,Trajan,Gabow
Kosaraju时间稍慢,需要建反边+两次dfs,但是第二次dfs的时候就可以顺便把新图建出来
Gabow算法两个栈比较恶心,效率最高,比Trajan少了一些更新low数组的过程
三者代码量相差无几,60上下
个人感觉还是Trajan最实用,而且low的计算和割边割点还有联系
我觉得HDU2767这题可以来试强连通分量模板
题目大意是给你一个有向图,问你至少加几条边让整个图变成强连通
解法:缩点后统计没有出度的和没有入度的点个个数,两者取最大值
同时推荐byvoid的网站
BYV大牛的tarjan算法介绍,写的非常详细
Popularity: 7% [?]
第k元素log(n)算法–划分树
49前几天学线段树,这个经典的K-th number一直没有做,关键是听别人说复杂度是log(n)^3,我对这个需要两次二分+一次查找的算法非常的不爽,于是一直拖着没搞
今天正准备着手这题的时候,发现PKU的Disscuss有人提到log(n)的算法,而且编程复杂度比log(n)^3的还小,于是对这种算法充满了憧憬,那个log(n)^3的写到一半也放弃了(其实log(n)^3的归并树算法化简了之后就是求n个有序数列的第k大数)
YY了很久之后,得到下边这个代码..关键部分已经很明白的加了的注释
完全看明白之后会发现一个非常有趣的现象,划分树逆着做就变成了归并树
(其实我也不知道这是不是hyerty大神所说的划分树,乱YY的)
画了一颗划分树对数列[1 5 2 3 6 4 7 3 0 0]进行划分,下图有助于理解(红色表示该数被分到左儿子)

划分树
(更多…)
Popularity: 33% [?]
test
2测试一下贴代码
顺便把我的模版贴上来,我每段代码基本上都会用到这50行预定义..所以大家看到一道水题我要写几千B的时候不要误会了XD
所以以后我贴出来的代码会少很多头文件很多代码大家看不懂,和这段合起来看就OK啦~~
这也是从TopCoder上的大牛们那学来的,即可加快了代码速度,也可减少了编码的低级错误..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | //by NotOnlySuccess #include "cstdlib" #include "cctype" #include "cstring" #include "cstdio" #include "cmath" #include "algorithm" #include "vector" #include "string" #include "iostream" #include "sstream" #include "set" #include "queue" #include "stack" #include "fstream" #include "iomanip" #include "bitset" #include "list" #include "strstream" #include "ctime" using namespace std; typedef long long LL; typedef unsigned long long ULL; #define CC(m,what) memset(m,what,sizeof(m)) #define FOR(i,a,b) for( int i = (a) ; i < (b) ; i ++ ) #define FF(i,a) for( int i = 0 ; i < (a) ; i ++ ) #define FFD(i,a) for( int i = (a)-1 ; i >= 0 ; i --) #define SS(a) scanf("%d",&a) #define LL(a) ((a)<<1) #define RR(a) (((a)<<1)+1) #define SZ(a) ((int)a.size()) #define PP(n,m,a) puts("---");FF(i,n){FF(j,m)cout << a[i][j] << ' ';puts("");} const double eps = 1e-11; const double Pi = acos(-1.0); #define read freopen("in.txt","r",stdin) #define write freopen("out.txt","w",stdout) #define two(x) ((LL)1<<(x)) #define include(a,b) (((a)&(b))==(b)) template<class T> inline T countbit(T n) {return n?1+countbit(n&(n-1)):0;} template<class T> inline T sqr(T a) {return a*a;} template<class T> inline void checkmin(T &a,T b) {if(a == -1 || a > b)a = b;} template<class T> inline void checkmax(T &a,T b) {if(a < b) a = b;} int dx[] = {-1,0,1,0};//up Right down Left int dy[] = {0,1,0,-1}; |
Popularity: 4% [?]
一个月时间
4线段树
网络流
AC自动机
模版题:后缀树,最小树形图,最近公共祖先(最后这三个比较水)
大概很多人都不相信上边这些基础应该掌握算法和每个人都有的模板我都不会..但事实是对以上算法我所知确实为0..
一个月时间,从0到掌握.实在是一个挑战
只是最近很是懒散,本该开始的任务到现在才下定决心去干,好吧…带上耳机,隔绝杂念,恢复去年今日的战意~
Popularity: 3% [?]
近期评论