20150331 HDSDFZ2015集训总结

在飞机上写总结ovo 不知不觉中三月就过去了呢.这是三月最后一天的晚上了诶ovo.来的时候感觉十天会很漫长,然后不知不觉就结束了.这次出来感觉收获比较大.难度比较适中,有时候能看到原题体验一下切题的快感.也有很多时候要耗尽脑细胞去想题,然后还常常听了讲之后才aha过来.当然也有听着听着就开始刮大雾了ovo. 考了六场试吧.有时候考得比较好,有时候也会被虐得很惨.说明我还是不够稳定的.遇到写得比较熟的东西还能写一写得一些分,有时候心情好能过两道题.但是多数时候还得靠骗分和暴力.可是已经有很长一段时间我都一直在试图追求正解,结果导致有时候骗分的技巧也比较拙劣,看上去发挥得并不好.省选的时候题是怎样的谁也说不清楚.所以最近不仅要复习和巩固各种算法,也要思考一下骗分暴力之类的东西该怎么写. 考试的时候纪律比较不好.有时候也会受到身旁同学的影响.有时候还会因此而受到提醒,有意无意见想到更好的idea.我觉得这样不是一种好的情况.所以还是要找一个比较安静的环境.自己在考试的时候也要严格遵守纪律.不管是正式还是非正式,有人监考还是放任自流,都要安静,独立思考. 这回讲课的同学讲得实用性也非常强.因为省选比较近,所以很多都是直接讲题,而没有再去纠结某个专题.他们也带来了一些最近比较流行的新的思路.比如cdq分治扔进线段树,再比如dp的有序与无序.还有dyf讲的积分.虽然比较实用向,但是也提醒了我有些东西是需要不停地用才能一起掌握的.一年半没碰过微积分,所以以前的基础等于白废了.不开心. 这些天也认识了一些sdfz和山东以及其它省份的神犇.发现自己如果放到全国,也并不能算一个厉害的角色.大家学习,刷题都很拼,也很有理想有追求.所以说自己也要坚定道路,并为之不懈努力. 不在的将近两个星期里sc省也发生了不少事,学校也发生了不少事.scoi发生了一些改变.不知道这是怎样一种信号.不过我觉得很适合今天在出租车上广播里的一句话,如果你站在浪尖上,那你就要把握好机会冲上巅峰.这是一个改变的时代.要善于把握变革. 然后家里也考了不少题,有些题还是比较有意思的.还有一些题我感觉我还不会做.所以说我还是有路要走的.另外常在bzoj上看到idy在开坑.还有很多我都没做过的题,填坑也填得比较狼狈.所以说身边就有很多人在默默努力.如果你不前进得更快,你就会被超越.而被超越的结果就是淘汰.世界是残酷的,但是是公平的. 怎么又扯远了.Whatever, scoi在即,退役or继续?It depends on nobody but myself. Fighting.

April 1, 2015 · 1 min · laekov

bzoj2986 Non-Squarefree Numbers

比较好想的dfs容斥,然后二分答案。 就只用dfs不超过sqrt(n)的素数的平方和。

March 31, 2015 · 1 min · laekov

bzoj2820 yy的gcd

idy又开坑辣。 mobius反演题么么哒。强行sqrt(n)的询问。 于是推一下式子。 answer = ∑i∑j1 (gcd(i, j) = 1) = ∑<sub>p</sub>∑<sub>g</sub>u(g) * (n/(p*g)) * (m/(p*g)) 然后把p和g合起来设为v。 h(v) = ∑ u(v) (v = x/p) 然后发现h(v)函数是很好推的。 h(px) = (x % p == 0) ? (u(x)) : (u(x) - h(x)) 然后就搞定啦orz.

March 31, 2015 · 1 min · laekov

bzoj2820.cc

#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) const int maxn = 10000009; int tp, pn[maxn], mu[maxn], h[maxn]; dint sh[maxn]; bool pr[maxn]; void pre() { memset(pr, 0, sizeof(pr)); tp = 0; mu[1] = 1; sh[0] = sh[1] = 0; for (int i = 2; i < maxn; ++ i) { if (!pr[i]) { pn[tp ++] = i; mu[i] = -1; h[i] = 1; } for (int j = 0, v; j < tp && i * pn[j] < maxn; ++ j) { pr[v = i * pn[j]] = 1; if (i % pn[j] == 0) { mu[v] = 0; h[v] = mu[i]; break; } else { mu[v] = -mu[i]; h[v] = mu[i] - h[i]; } } sh[i] = sh[i - 1] + h[i]; } }...

March 31, 2015 · 2 min · laekov

20150330

终于过审核了.好感动啊. 今天考试比较开心吧.一直很膜拜出题人. 第一题想了一会想出了O(n*log2n)的正解,似乎比std还要优一些.然后不开心的是这题居然把朴素放过去了. 第二题被mhy点了一下于是就直接写了插头dp.然后再套个高精度的模板.因为比较有经验所以就调度得比较快. 第三题觉得懒得算了于是乱写了个东西弃疗.然后旁边的mhy因为看了我在写这题所以去写了simpson,结果成了全场唯一有分的还有80分.晕. 下午讲积分.感觉我一年半前学的东西就没有再用过啊.晕.看来以前的东西还是要再去复习一下的. 晚上去了橘子洲.走了好久.感觉蛮好的.然后还坐了地铁,公交.吃了过桥米线.很想找个安静的地方坐坐,消消火,不过感觉总向被什么东西压着,总是要向前去. 于是我还是太年轻喽.明天就可以回家喽.开心ovo

March 30, 2015 · 1 min · laekov

bzoj3597.cc

#define PROC “coconut” #include #include #include using namespace std; struct edge { int t, v; edge *next; }; const int maxn = 509; const int maxe = 6009; const double bseps = 1e-4; const double finf = 1e20; int n, m, fp[maxn], st, vis[maxn], tvis; edge ebuf_arr[maxe], *ebuf(ebuf_arr), *head[maxn]; double d[maxn]; inline void addEdge(int u, int v, int w) { ebuf-> t = v; ebuf-> v = w; ebuf-> next = head[u]; head[u] = ebuf ++; // printf(“AE %d -> %d of %d\n”, u, v, w); }...

March 29, 2015 · 2 min · laekov

bzoj3597 [Scoi2014]方伯伯运椰子

去年的省选题.之前知道了是找负环.不过一直感觉好迷是个坑.最近又想了想发现也不是很麻烦. 当年省选的时候完全对比例题无感啊.经过一年之后终于觉悟了一点东西. 考虑一个网络流,每条边的流量上限是inf,只有从源出来的边不是.然后如果进行一次正向增广会使代价增加b+d,如果进行一次逆向增广的话代价会增加a-d,前提是有流量.于是只要二分一个答案,看下存不存在一个负环来增广就好了. 然后一个spfa就迷之拿了bzoj的rank1.好开心.

March 29, 2015 · 1 min · laekov

bzoj3922.cc

#include #include #include #include using namespace std; struct seg { int v, l, r; seg *ls, *rs; }; const int maxn = 70009; const int maxb = 23; const int maxseg = maxn * maxb * 3; int n, m, bv, a[maxn]; seg *br[maxb][maxb], sbuf_arr[maxseg], *sbuf(sbuf_arr); #define midp(p) ((p->l+p->r)»1) inline seg* sgtBuild(int l, int r) { seg* p(sbuf ++); p-> l = l; p-> r = r; p-> v = 0; if (l + 1 < r) { p-> ls = sgtBuild(l, midp(p)); p-> rs = sgtBuild(midp(p), r); } return p; } inline void sgtChg(seg* p, int po, int vo) { if (p-> l + 1 == p-> r) p-> v += vo; else { if (po < midp(p)) sgtChg(p-> ls, po, vo); else sgtChg(p-> rs, po, vo); p-> v = max(p-> ls-> v, p-> rs-> v); } }...

March 29, 2015 · 2 min · laekov

bzoj3922 Karin的弹幕

迷之数据结构.我的想法比较简单,确定一个值b,对所有小于b的k建线段树维护,对大于b的k直接朴素找. 于是时间复杂度算起来比较迷. 试了一下发现b取20的时候能过.虽然还是跑得最慢的一个.无语喽.大概我不是正解.

March 29, 2015 · 1 min · laekov

bzoj2289.cc

#include #include #include #include using namespace std; #define dir_l 2 #define dir_r 3 struct circle { double x, y, r; void read() { scanf("%lf%lf%lf", &x, &y, &r); } }; typedef pair <double, int> dpr; inline double sqr(double x) { return x * x; } const int maxn = 100009; const double finf = 1e23; const double eps = 1e-8; int n, t; dpr y[maxn * 2]; circle c[maxn]; int checkDir(double x) { int wl(0), wr(0); t = 0; for (int i = 1; i <= n; ++ i) if (c[i]....

March 28, 2015 · 2 min · laekov