我在有0环的图里跑了最短路计数 ~~我可能已经是个废物啦~~ 很早之前就想写这道题啦,但是太菜了发现自己不会,今天终于写啦 首先我们建图的时候建出一个正图还有一个反图,我们对着这两个图分别跑两次最短路,求出$1$到所有点的最短路,以及所有点到$n$的最短路 如果不考虑无解的情况,我们现在就可以大力记 ...
分类:
其他好文 时间:
2019-01-01 22:49:34
阅读次数:
243
感觉自己的复杂度感人 大概是$O(p \pi(m)+p^3logn)$ 还是能过去的 我们看到这么大的数据范围还是应该先想一想暴力怎么写 显然我们可以直接暴力$dp$ 设$dp[i][j]$表示已经选择了$i$数,其中所有数的和$mod\ p$为$j$的方案数 显然方程是 $$f[i][j]=\su ...
分类:
其他好文 时间:
2019-01-01 21:17:35
阅读次数:
228
$SA+SAM$ 第一问显然是一个$SAM$的经典问题,我们排完序之后直接使用一直往下找$n+1 sa[i] het[i]$就好了,找到$K$减不动了输出就好了 第二问是$SAM$的经典问题,我们在$SAM$上求出子树和跑一遍$dfs$就好了,每层都贪心的减$K$,减不动就停下来好了 代码 ...
分类:
其他好文 时间:
2019-01-01 19:56:53
阅读次数:
189
inline __int128 read() { int X=0,w=0; char ch=0; while(!isdigit(ch)) {w|=ch=='-';ch=getchar();} while(isdigit(ch)) X=(X9) print(x/10); putchar(x%10+'0... ...
分类:
其他好文 时间:
2018-12-31 15:43:36
阅读次数:
517
维护序列的动态中位数 第一次用链表做题。。感觉指针指来指去也挺麻烦的。。 本题链表解法就是用数组模拟出一个链表,然后离线输入所有数,排序,按照输入顺序在链表里删除元素,一次性删掉两个,然后中位数指针对应移动即可 网上另外一种解法是对顶堆,所谓对顶堆,就是建立一个小根堆q1,大根堆q2,每次读入的数如 ...
分类:
其他好文 时间:
2018-12-28 22:10:42
阅读次数:
236
AC这道题已经是第二遍了,第一次是用别人一个叫DP的代码水过的,尽管我都不知道什么事DP;今天突然有了灵感,自己又写了一遍,用双向SPFA,第一次就过了,和大家分享一下; 下面是第一次的代码,大佬可以参考一下...... ...
分类:
其他好文 时间:
2018-12-25 20:26:49
阅读次数:
142
"题目传送门" 解题思路 这题我们可以按右端点从小到大排序,我们选择第一条线段作为初始线段,然后判断下一条线段的左端点是否大于等于当前选中线段的右端点即可。 证明:排序后显然当你选了一个线段后,再要从后面选一个线段,其左端点必须 =你的右端点。右端点当然越小越好。 因为这题数据量过大,我们可以使用读 ...
分类:
其他好文 时间:
2018-12-25 11:33:52
阅读次数:
156
A:签到。 B:仅当只有一种字符时无法构成非回文串。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace ...
分类:
其他好文 时间:
2018-12-16 11:14:05
阅读次数:
205
"嘟嘟嘟" 只要会决策单调性,这题就是练手的 首先按矩形长排序,这样只用考虑宽了。 然后很容易搞出dp方程 $$dp[i] = min _ {j = 0} ^ {i 1} (dp[j] + x[i] max_{k = j + 1} ^ {i} y[k])$$ 找max可以用st表达到$O(1)$。 ...
分类:
其他好文 时间:
2018-12-15 13:50:57
阅读次数:
148
euler路问题也称一笔画问题。 1.一张无向图,若存在一条从节点s到节点t的路径,恰好不重不漏地经过每条边一次(可以重复经过图中节点,最终回到节点s。 这条路径称该路径为s到t的euler回路。其实通过图中所有边的简单路就叫euler路。 2.特别的,如果存在一条从s出发的路径,恰好不重不漏地经过 ...
分类:
其他好文 时间:
2018-12-10 22:02:30
阅读次数:
235