摘要:
有上下界的费用流 建图:每条边连接两个节点,边的费用为花费时间,下界为1,上界正无穷,源点为1,所有点连向1,下界0,上界正无穷,表示随时可以返回,于是我们想求一个最小费用可行流 具体做法是先建立超级源汇,对于每条有上下界的边(u,v),u->t,流量为u的入度,费用为0,s->v,流量为下界1,费 阅读全文
摘要:
高精度 我以为这题必有高论,怎么想也想不出来,没想到竟是如此粗鄙做法。 我们写一个高精度模拟一下,然后枚举约数看是否能约分,由于我不会高精度除法,就抄了一发 其实这种两项之比和项数有关的数列是不能推通项的,只能暴力模拟 #include<bits/stdc++.h> using namespace 阅读全文
摘要:
扩展欧几里得 我们发现其实就是两个野人在自己的寿命内不会相遇,或者永远不会相遇,那么我们枚举m,然后枚举两个人,看是否符合条件 扩展欧几里得ax+by=c,这里c不能取模,a能取模,具体不想了 #include<bits/stdc++.h> using namespace std; const in 阅读全文
摘要:
离散化+树状数组+排列组合 很久以前就看到过这道题,现在依然不会做。。。看完题解发现思路很简单,就是有点难写 我们先将坐标离散化,x和y最大是w,然后我们就有了一个暴力做法, 枚举每块墓地,统计,因为墓地上下左右没东西的话就不可能有贡献,这些坐标自然就被离散化了,所以墓地最多有w*w块 复杂度O(w 阅读全文
摘要:
exgcd 由于忘记了exgcd,这道题就没做出来。。。 exgcd的用处是求ax+by=gcd(a,b)这样方程的解 大概是这个样子的 void ext_gcd(long long a, long long b, long long &x, long long &y) { if(b == 0) { 阅读全文
摘要:
贪心 这并没有想清楚就看题解了。。。 看上去肯定是贪心,那么怎么贪呢?事实上,我们想一下,假设max(a[i],a[i+1])中a[i]没有合并,那么后面取max肯定是a[i+1],因为如果后面合并之后比a[i+1]大,那么不如先和a[i]合并了,如果后面合并了比a[i+1]小,那么也没用,因为不可 阅读全文
摘要:
AC自动机 复习一下。。。 可惜又写错了 我们发现就是把单词建成ac自动机,然后把串在ac自动机上跑一遍,每到一个单词结束点就删除,删除是利用栈,每次弹出单词长度个字符就可以了 发现两个小问题,strlen很慢,不能写在循环里,danger必须在构造fail时全部传递好,否则在匹配时跑fail会达到 阅读全文
摘要:
模拟+树状数组 先开始以为是先删距离最小的,这样可以减小上下的距离,然后觉得很难写,看码长很短,就看了题解,结果很奥妙 我们只考虑两种元素,就是如果像-a-b-a-b-这样的肯定得交换,如果像-a-b-b-a-或-a-a-b-b-这样的就不用交换,于是我们对于每个元素考虑其他元素,也就是统计两个相同 阅读全文
摘要:
treap+stl 这道题终于A了 排名是按照分数为第一关键字,插入时间为第二关键字,然后就是treap基本操作了 #include<bits/stdc++.h> using namespace std; const int N = 250010; int n, Tim, root, score, 阅读全文