acm Post

2015 省赛、东北赛总结

Part1. 省赛

先来吐槽下工大,热身赛之前大家都在外面站着连个休息的地方都没有,整个人都被冻傻了…正赛那天早上还好(其实我感觉主要是天比较给力,比较暖和,也可能是我机智的穿上了棉袄的原因…2333。)
然后就是题目的部分了,所有题目主要就是题面比较难读吧,绝对是的。我们一致认为着出题人的英语绝对有问题,然后脑洞有点大…(绝对脑洞巨大…)

READ MORE +
Post c++ c++11 template tips

c++11 完美转发+变长参数

完美转发(argument forwarding):

给定一个函数F(a1, a2, ..., an),要写一个函数G,接受和F相同的参数并传递给F。
这里有三点要求:
1. 能用F的地方,G也一定能用。
2. 不能用F的敌方,G也一定不能用。
3. 转发的开销应该是线性增长的。

READ MORE +
Post c++ reading parser

cJSON代码阅读(parse)部分

static const char *skip(const char *in) {
  while (in && *in && (unsigned char)*in<=32) in++;
  return in;
}

跳过空白字符。空白字符即ASCII小于等于32的字符。(我还特意查了ascii的表…)。这里我可能会用isspace(掩面逃…)

READ MORE +
c++ template tips c++11 Post

编译时期计算数组

#include <iostream>
#include <array>
using namespace std;

constexpr int N = 1000000; constexpr int f(int x) { return x*2; }

typedef array<int, N> A;

template<int... i> constexpr A fs() { return A{{ f(i)... }}; }

template<int...> struct S;

template<int... i> struct S<0,i...> { static constexpr A gs() { return fs<0,i...>(); } };

template<int i, int... j> struct S<i,j...> { static constexpr A gs() { return S<i-1,i,j...>::gs(); } };

constexpr auto X = S<N-1>::gs();

int main() { cout << X[3] << endl; }

READ MORE +
Post acm data structure

Link Cut Tree

动态树(Dynamic Tree Problems)是一类要动态维护森林连通性问题的总称。一般要维护森林中某个点到根结点的某些数据,应该支持一棵树切割成两棵树,或者两棵树合并成一棵树的操作。而解决这一类问题的基础数据结构就是LCT。

整体维护的过程有点类似于树链剖分的维护过程,不过树链剖分里维护的重链由于是静态的,可以用线段树去维护。对于动态的,我们可以用splay来维护。

READ MORE +

Previous | 6 / 8 | Next