摘要:
今天下午BZ在维护,我就用同学拿到的数据(权限号好爽)跑过了,等会晚上再交吧。这道题一看就是矩阵快速幂,最开始没有想到拆点的做法只想到了拆边,复杂度直接爆掉了。所以我们把每个点拆成3个,分别表示长度为1,2,3的边该连到这个点的哪个分身(不想画图了以后自己忘了自己YY吧)。然后开始矩阵快速幂,里面可... 阅读全文
摘要:
点餐(dinner.cpp/c/pas)【时间】1s【问题描述】清儿今天请好朋友们吃饭,一共N个人坐在坐在圆桌旁。吃饭的第一步当然是点餐了。服务员拿来了M份菜单。第i个人阅读菜单并点出自己喜欢的菜需要花费时间T[i]。当一个人点完菜之后,就会把菜单传到他右手边的第一个人。M份菜单是同时发出的,每个菜... 阅读全文
摘要:
游乐场(amusement.cpp/c/pas)【时间限制】1s【问题描述】清儿进入了一个游乐场,这个游乐园有N个项目和N条不同双向道路,任意两个项目皆可以互相到达。清儿从一个随机的项目开始玩起。每当她玩完一个项目后,她会等可能地找附近一个项目继续玩耍。所以,她也不知道自己最后会停留在哪个项目上。还... 阅读全文
摘要:
小兵的故事(bin.cpp/c/pas)Timelimited=1500ms小兵休息时喜欢打打炉石和刀塔,然而这在伟大的计算机房是不怎么允许的。已知伟大的计算机房有两个房门:前门和后门。这两个门都有着高超的科技,可以设定一个参数t。z如果一个人会在T1时刻进来,那么就会在T1-t时刻把门打开,但是如... 阅读全文
摘要:
1 #include 2 3 int n,ans; 4 5 int main(){ 6 scanf("%d",&n); 7 for (int i=1;i<=n;i++) ans+=n/i; 8 printf("%d\n",ans); 9 return ... 阅读全文
摘要:
巧妙的性质:一个点最多只会与他横纵坐标最近的那4个点连边。所以我们sort sort连边建图。跑dijkstra 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using n... 阅读全文
摘要:
值域线段树套上一颗区间线段树。查询的时候二分找。最后树套树的空间一定要好好算算。。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int N = 50000; 7 int n... 阅读全文
摘要:
树套树呀树套树。题意为可以交换两个位置的数,询问每次交换后的逆序对数。直接区间线段树上面套一个值域线段树,然后稍微讨论一下。首先建好树查询一次得到一个ans。(话说我们得到了一个nlog^2的求逆序对的算法)设两个位置为i,j,如果i==j或者是a[i] == b[j]的话就不管。i>j则交换。如果... 阅读全文
摘要:
fail树上建可持久化树。根据原题中给定的输入跑就可以跑出一颗trie树,然后对这个trie数建fail树。我最开始的思路错了:A串在B串中出现的次数就是看B中有多少节点可以直接或者说间接的指向A的子树。举个反例:A = aaa,设A的子树是一个点为b,B = aaab,那么B将会有两个指针指向A的... 阅读全文
摘要:
我写的是LCT,开始的时候修改操作挂了,正确的修改姿势有两种,一种是记录每个点实际的fa是谁,然后修改u的时候access(fa[u])然后splay(u),然后把u的pre直接指向该指向的点,fa[u]->ch[1]==NULL就可以了;另外一种是access(u),然后断掉它的左儿子,然后直... 阅读全文