GDOI 2017总结(附蜜汁二维线段树+IO优化)
2017-05-02 17:01
225 查看
GDOI2017总结
今年的省选在东莞市东华高级中学举行,共计三百余人参加。宾馆还可以,学校环境很不错,尤其是比GF好到不知道哪里去的伙食。
机房布局和学校一样,系统是win7,体验比XP好多了。
Day 1.
T1,一道字符串匹配模板题;
T2,求一棵有根树上任一点子树外的点权mex;
T3,动态查询若干trie的最长公共字串;
T4,求k∼n边形的所有三角剖分中k边形出现的次数的异或和。
我一读完题,凭着直觉就去想T4,很快就发现三角剖分方案数是Catalan数。这时我以为我离正解已经不远,就一心想A掉这题。想了好久没思路,就去打了一下T1暴力。十二点整的时候,我终于想通了,赶紧打程序,结果发现连样例都没过…。最后只拿了一题70的暴力分。
Day 2.
T1,一道广搜水题;
T2,对于每一个64位整数求出之前所有数中与其的汉明距离为3的数的个数;
T3,求出起始串至少要经过多少次”将一个字符从后往前拖“的操作才能变为目标串并输出方案数;
T4,给出一颗距离树和每个其节点上的守卫者之间的关系树,每个守卫者都有一个波动守卫半径[l,r],支持动态插入新节点,动态查询关系树上u→v的守卫者守卫住节点z的期望人数。
今天吸取了昨天的教训,先好好切了T1,T2交了棵trie,T3yy了一个nlog2n的贪心,最后拿了145的“标准分”(误)。
Day 3.然而并没有进
总而言之.
问题还是出在第一天,不仅心态没调整好,做题也没有策略,该拿的分没有拿。明明T1交一发KMP就过了,我却图快用find();明明T2正解不过是LCA,无论是代码复杂度还是思维复杂度都远小于用母函数+NTT的T4,我却因为题意不清淅就选择了放弃。说了这么多,不过是在证明,明明努力一把就能稳进Day 3,我却发挥得如此失常,连个一等的头衔都捞不到。
无论如何,这次省选之后,我必须得回归到文化课之中,准备 我并没有必要准备的 中考。只希望这次的错误我能铭记在心,在来年发挥出属于自己的水平。
P.S.
在比赛的闲暇时间,我对一些代码的 黑 优化进行了钻研,稍微利用了一下struct的优点,搞出了下面的东西
#include<cstdio> #define r_ return #define in_ inline #define add_ add<int> #define d_add_ add<add_> #define op_ operator const int mx=4000; int x, n, t, a, b, c, d; char s[2]; template<class data> struct add { int u, l, r, x, y; data a; in_ int cov() {r_ l>=x&&y>=r;} in_ int mis() {r_ l>y||x>r;} in_ add ls() {r_ (add) {u<<1, l, l+r>>1, x, y, a};} in_ add rs() {r_ (add) {u<<1|1, l+r+2>>1, r, x, y, a};} }; in_ d_add_ mat(int a, int b, int c, int d, int x) {r_ d_add_{1, 1, n, a, b, add_{1, 1, n, c, d, x}};} in_ d_add_ poi(int a, int b, int x) {r_ mat(a, a, b, b, x);} template<class data, class del> struct node { data a[mx]; in_ int op_=(int x) { static int i; for(i=1; i<mx; ++i) a[i]=0; } int op_+=(del b) { if(b.mis()) r_ 0; this->a[b.u]+=b.a; if(b.cov()) r_ 0; *this+=b.ls(), *this+=b.rs(); } int op_|(del b) { if(b.mis()) r_ 0; if(b.cov()) r_ this->a[b.u]|b.a; r_ (*this|b.ls())+(*this|b.rs()); } }; node<node<int, add_ >, d_add_ > st;
struct bios { inline int operator ++(int) //我其实建议重载位运算或逻辑运算 { static int r, c; for(r=0; (c=getchar())<48||57<c;); for(;c>47&&58>c; r=10*r+c-48, c=getchar()); return r; } template<class fig> inline bios& operator +(fig &a) { return a=(*this)++, *this; } template<class fig> inline bios& operator -(fig a) { static int s[20], n; for(;;) if(s[n++]=a%10, !(a/=10)) break; for(;n;) putchar(s[--n]+48); return *this; } inline bios& operator -(const char *s) { static unsigned int i; for(i=0; s[i]; ++i) putchar(s[i]); return *this; } } f;
相关文章推荐
- GDOI2017的总结!?…
- GDOI2017模拟4.11总结
- GDOI2017 总结
- GDOI2015 总结&反思
- Thinkphp将二维数组变为标签适用的一维数组方法总结
- GDOI2015总结 Day1
- GDOI 3.21 模拟总结
- 2013~2014年度 NOIP~GDOI总结
- 背包问题总结第六讲——二维费用的背包问题
- 【GDOI】8.5~7三日总结
- 【GDOI】模拟8.3总结
- Direct3D制作二维界面总结
- 【GDOI】8.8/8.10/8.12总结
- GDOI模拟8.21总结
- GDOI模拟8.10(COCI2012/2013)总结
- GDOI2015总结 Day2
- gdoi2012 赛后总结
- 二维数组与二维指针总结
- 二维符号库的制作总结
- gdoi 8.20模拟总结