上一页 1 ··· 6 7 8 9 10
摘要: 题目大意:城市里有两个帮派,D a b 代表ab不是一个帮派的,A a b是问你这两个人事不是同一帮派的;考察并查集有两种算法;第一种算法:D a b 的时候将a 和b+n 放到一个并查集,a+n和b放到一个并查集里;我们就会得到如下的一个图;1 1+n2 2+n3 3... 阅读全文
posted @ 2014-07-20 18:41 icodefive 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 题目大意,求这个字符串到i为止有多少个循环串;int k = i-next[i]; if((i+1)%k == 0 && (i+1)!= k) printf("%d %d\n", i+1, (i+1)/k);这是代码的主要部分,求next数组的部分... 阅读全文
posted @ 2014-07-20 14:17 icodefive 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题目大意:买珍珠,每买一种珍珠需要额外付出十个这种珍珠的钱,但你可以买比这种珍珠高品质的珍珠来替换它(那么就只需要那高品质付出那额外的十个珍珠的钱了,但是每个珍珠的价钱也变化了)这是一个dp。令dp[i]为只买前i种珍珠的最少花费钱数,状态转移方程为dp[i] = min(dp[i],dp[j]+s... 阅读全文
posted @ 2014-07-18 19:14 icodefive 阅读(351) 评论(0) 推荐(0) 编辑
摘要: #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]... 阅读全文
posted @ 2014-03-13 20:39 icodefive 阅读(181) 评论(0) 推荐(0) 编辑
摘要: #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)){ ... 阅读全文
posted @ 2014-03-13 20:30 icodefive 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 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... 阅读全文
posted @ 2014-03-13 20:25 icodefive 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 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... 阅读全文
posted @ 2014-03-13 20:23 icodefive 阅读(286) 评论(0) 推荐(0) 编辑
摘要: #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]; // ±£´æ... 阅读全文
posted @ 2014-03-13 19:09 icodefive 阅读(360) 评论(0) 推荐(0) 编辑
摘要: #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... 阅读全文
posted @ 2014-03-13 19:02 icodefive 阅读(195) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10