摘要:
#include //区间dp的思想#include //将一个区间分成两段,将每一段当成是一个矩阵#include //求min(dpp(start,i)+dpp(i+1,end)+a[start-1]*a[end]*a[i])using namespace std;int min(int x,int y){ return x<y?x:y;}int dp[105][105];int a[105];int dpp(int start,int end){ if(dp[start][end]!=0) return dp[start]... 阅读全文
摘要:
#include //和prim类似#include //prim所考虑的是节点与当前所建成的树的距离最小using namespace std; //单源最短路径考虑的是节点与出发点距离最小int vis[1005][1005];bool boo[1005];const int maxa=1000000;struct que{int x,y,len;}q[1005];int main(){ int leng[1005]; int t,s,d,a,b,time; while(~scanf("%d%d%d",&t,&s,&d)){ ... 阅读全文
摘要:
primint tree() 构造树,a[k]记录第k个节点可以加到当前构造的树的最小路径,每一步加一个最小的a[k]到树里{ for(int i=0;i<n;i++) { a[i]=maxa; } a[0]=0; for(int i=0;i<n;i++) { int MIN=maxa; int sum=0; for(int k=0;i<n;k++) { if(vis[k]==0&&a[k]<MIN) { MIN=a... 阅读全文
摘要:
hrbust 1335#include //多进制储存数,第i位进制维back[i]+1,可以避免重复#includeusing namespace std;int vl[100000];int w[105];int back[105];int v[105][10];int c[105];i... 阅读全文
摘要:
#include //由于拆除并查集的方法太难或者没有#include //可以先将所有没有拆的桥连接 再逆向操作 断开变成连接 反向输出#include using namespace std;const int Hash = 10000;const int N = 10005;const int M = 20005;mapmp; //mp用来标记该桥是否会被拆,如果会被拆就先不要连接int f[N];int rank[N];int ans[50005]; // ±£´æ... 阅读全文
摘要:
#include#includeusing namespace std;const int maxa=200005;int val[maxa];struct tree{int max, left, right;}tree[maxa*3]; int create(int root,int left,int right) //root的*2和*2+1分别存root的前后部分{ tree[root].left=left; tree[root].right=right; if(left==right) return tree[root].max=val[lef... 阅读全文