20150531 thusc day1
depressing i know nobody cares what i am really feeling. nobody. so why am i writing? there’s really nothing to say. killed by lazy cancer at May 31st, 2015 goodbye, the cute wrold. i will smash everything someday.
depressing i know nobody cares what i am really feeling. nobody. so why am i writing? there’s really nothing to say. killed by lazy cancer at May 31st, 2015 goodbye, the cute wrold. i will smash everything someday.
#include #include #include using namespace std; typedef long long dint; #ifdef WIN32 #define lld “%I64d” #else #define lld “%lld” #endif #define _l (long long int) #define checkNeg(x) { if (x < 0) x = -x; } dint gcd(dint a, dint b) { checkNeg(a); checkNeg(b); while (a) { register dint c(b % a); b = a; a = c; } return b; } #define md ((p->l+p->r)»1) #define mdp(p) ((p->l+p->r)»1) #define zp(x,y) ((x)*m+(y))...
其实是一道没多大意思思的码农题TT然而这是我的第800题所以要mark一下. gcd序列可以用插分序列+第一个数来支持区间加.二维那就二维差分喽. 然后发现第一个数似乎没有办法维护啊.不能做了?! 询问的方式比较奇怪,有一个中心.那就建4个方向吧.这样似乎可做了yeah. 所以我还是太naive了啊. 是时候屯一波题了.
#include #include #include using namespace std; typedef long long dint; #define _l (long long int) typedef pair <dint, int> dpr; struct node { int v, t, sz; node* ch[2]; }; struct edge { int t, v; edge *next; }; const int maxn = 100009; const int maxh = 200009; const int maxnd = maxn * 43; const int mod = (1 « 23) * 7 * 17 + 1; edge ebuf_arr[maxn], *ebuf(ebuf_arr), *head[maxn]; node nbuf_arr[maxnd], *nbuf(nbuf_arr), *nrt[maxn], *srt[maxn]; int n, k, ts, th; dint sans[maxn]; dpr hp[maxh];...
#include #include #include using namespace std; const int mod = 1e9 + 7; const int maxs = 17; const int maxst = (1 « 15) + 3; const char deoxynucleotide[5] = “AGCT”; #define mInc(a,b) { a += b; if (a >= mod) a -= mod; } int n, m, f[2][maxst], ans[maxs]; int trv[maxst][4]; char s[maxs]; int getTrans(int i, int j) { static int fc[maxs], fd[maxs]; fc[0] = fd[0] = 0; for (int k = 0; k < n; ++ k) fc[k + 1] = fc[k] + ((i » k) & 1); for (int k = 1; k <= n; ++ k) { if (s[k] == deoxynucleotide[j]) fd[k] = fc[k - 1] + 1; else if (fc[k] > fd[k - 1]) fd[k] = fc[k]; else fd[k] = fd[k - 1]; } int sn(0); for (int k = 0; k < n; ++ k) sn |= (fd[k + 1] - fd[k]) « k; return sn; }...
立杰的dp套dp.之前在hwadee培训的时候讲过的题啊. 考虑求lcs时候的f数组的一列,发现相邻两个数要么差1要么不差.于是15就是拿来状压这个东西的. 然后很愉快地写了一个然后很愉快地tle了.妈妈,剧本里没这一节啊. 仔细思考了一下发现每次在计数dp转移的时候去找lcs dp非常慢.而且只要给定状态和转移,目标是确定的.跑1000次浪费了.于是改成预处理转移.就好了.
比较无语的一天.两道交互题ovoovo 第一题看上去只会奇数情况.然后在mhy的强烈要求下去oeis看了一下.囧. 第二题似乎std特别丑.然后pbds跑得没有普通的stl快啊ovoovo 第三题比较神,只多会20分的暴力分. 下午颓. 晚上去学了一下mysql,感觉整个人都精神了.好开心啊.然后过了许久终于更新了一下这个网站ovoovo
#include #include #include using namespace std; #define _l (long long int) struct node { int le, sz; node *tr[27], *pt; node() { memset(tr, 0, sizeof(tr)); pt = 0; sz = 0; } }; const int maxn = 1200009; const int maxl = 4000000; char g[maxl]; int n, mask; node nbuf_arr[maxn], *nbuf(nbuf_arr), *srt, *scur; void decodeStr(char* a, int mask) { int l(strlen(a)); for (int i = 0; i < l; ++ i) { mask = (_l mask * 131 + i) % l; swap(a[i], a[mask]); } }...
#include #include #include #include using namespace std; typedef long long dint; #ifdef WIN32 #define lld “%I64d” #else #define lld “%lld” #endif #define _l (long long int) struct seg { int m, a, c; seg *ch[2]; seg() { ch[0] = ch[1] = 0, m = a = c = 0; } }; #define sgtRoot 1, n + 1 #define mp ((pl+pr)»1) #define lson pl, mp #define rson mp, pr #define checkNeg(x) { if (x < 0) x += mod; } #define mInc(x,y) { x += y; if (x >= mod) x -= mod; }...
业界毒瘤ioi开的坑.然后被强行看了一下于教授的代码.然后觉得也不太难嘛. 看了一下条件.只和同行或者同列有关?那就拿map套动态建树的线段树好了辣. 然后距离是欧式距离?那就把完全平方式展开,发现只需要在线段树里记录一下个数,和,平方和,搞定了辣! 然后alloc的时候–写成了++,查错良久,囧.