摘要:
权值为1~3 好了 此题是水题…… i表示到了第i个数,j表示结尾的数是j f[i][j]=min(f[i][j],f[i-1][k]+(a[i]!=j)) 1#include #include using namespace std;int n,a[33333],f[333... 阅读全文
摘要:
自从某次考试写线段树写挂了以后 这是第一次写线段树,,,,,,这是一个伤心的故事…… 题意: 思路: 标记 维护从左到右的最大值 从右到左的最大值 区间内的最大值……然后就一搞 就出来了//By SiriusRen#include using namespac... 阅读全文
摘要:
从1节点最短路,,然后再乘一下权值就OK了//By SiriusRen#include #include #include #include using namespace std;#define N 132000long long d[N];int n,m,first[N],ne... 阅读全文
摘要:
这道题我拖了半年,,,终于写出来了 思路: 先反向建边 从终点做一次最短路 —>这是估价函数h(x) 再正常建边,从起点搜一遍 (priority_queue(h(x)+g(x))) g(x)是已经走过的。。思路比较简单,,, 但是我总是MLE原因:写挫了……刷了三页… ... 阅读全文
摘要:
按照题意模拟就OK了//By SiriusRen#include #include #include using namespace std;int n,t,a[1005];int main(){ scanf("%d%d",&n,&t); for(int i=1;ima... 阅读全文
摘要:
黑书原题 区间DP,递归输出 不看Discuss毁一生 (woc还真有空串的情况啊)//By SiriusRen#include #include #include using namespace std;int n,f[111][111];char s[111];voi... 阅读全文
摘要:
方法一: 二分我们可以知道 最长上升子序列的 最后一个数的值是随序列的长度而递增的 (呃呃呃 意会意会) 然后我们就可以二分找值了(并更新)//By SiriusRen#include #include #include using namespace std;int n,... 阅读全文
摘要:
匈牙利算法 裸题//By SiriusRen#include #include #include using namespace std;int n,p[8085],first[8888],next[8888],v[8888],tot,vis[8888],m,xx,yy,ans;v... 阅读全文
摘要:
题意: 思路: i表示到了i,j表示疲劳度为j f[i][j]表示能跑的最大距离 f[i][j]=f[i-1][j-1]+a[i] if(i-j>=0)f[i][0]=max(f[i][0],f[i-j][j]); f[i][0]=max(f[i][0],f[i-1][0]);/... 阅读全文
摘要:
题意: 思路: 二分+Disjktra二分一个值 如果某条边的边权比它小,则连上边权为0的边,否则连上边权为1的边最后的d[n]就是最小要免费连接多少电话线。//By SiriusRen#include #include #include #include using nam... 阅读全文