摘要:
很容易想到以结束时间加上R从小到大排序 之后怎样呢? 我们按层考虑,f[i]表示前i个时间段嫩得到的最大价值 每次枚举其之前的状态,如果其ed<当前i的st,那么取max即可 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 阅读全文
摘要:
这道题普通的bfs spfa或者ballen ford会T 所以我们使用dfs spfa 原因在于,bfs sfpa中每个节点的入队次数不定,退出操作不及时,而dfs则不会 既然,我们需要找负环,那么我们不妨将dis数组初始化为0,以每个点为起点进行dfs spfa 这样第一次扩展到的只有边权为负的 阅读全文
摘要:
单调栈版子 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N=80010; 5 int n,a,top=0,zh[N]; 6 int read(){ 7 int sum=0; 8 char ch=g 阅读全文
摘要:
本来还想了一会dp…… 然而一看数据范围明显是数论…… 那么推一推。。 我们发现可以用总方案数减去不会越狱的方案数 那么我们考虑在长度为n的数列中填数 首先第一个位置有m种选择,后面的位置: 总方案:m种;不会越狱:m-1种 快速幂。 1 #include<cstdio> 2 #include<cs 阅读全文
摘要:
前缀和、滚动数组优化dp f[i][j]表示前i个数,逆序对数为j的方案数 我们知道,在第k个位置放第i个数,单步得到的逆序对数为i-k 则在前i个数,最多能产生的逆序对数为i个,最少0个,均可转移到j 所以我们得到:f[i][j]=sum(f[i-1][j...j-i]) 所以我们可以通过前缀和优 阅读全文