雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年2月25日

摘要: View Code #include<stdio.h>#define N 2009int e[N];int f[N];int find(int pos){ if(f[pos]==-1)return pos; return f[pos]=find(f[pos]);}int un(int a,int b){ int fa=find(a),fb=find(b); if(fa==fb)return 0; f[fa]=fb;return 1;}int main(){ int t,n,m,rt,a,b,ca=0,i,T; scanf("%d",&T); t=T; w 阅读全文

posted @ 2011-02-25 16:08 huhuuu 阅读(237) 评论(0) 推荐(0) 编辑

2011年2月24日

摘要: 这道题目oj比较奇怪,用g++提交可以,c++就不行了……思路:e[]保存敌人输入时:d,x,y时fx=find(x),fy=find(y)如果e[fx]==-1;e[fx]=fy否则 合并(e[fx],fy);对fy再做如上操作View Code #include<stdio.h>#include<iostream>using namespace std;#define N 100009int f[N];int e[N];int find(int pos){ if(f[pos]==-1)return pos; else f[pos]=find(f[pos]);}int 阅读全文

posted @ 2011-02-24 21:40 huhuuu 阅读(305) 评论(0) 推荐(0) 编辑

摘要: View Code #include<stdio.h>int f[30009];int find(int pos){ if(f[pos]==-1)return pos; return f[pos]=find(f[pos]);}int un(int a,int b){ int fa=find(a),fb=find(b); if(fa==fb)return 0; f[fa]=fb; return 1;}int main(){ int n,m,i,j,add,one,temp; while(scanf("%d%d",&n,&m),n||m) { for 阅读全文

posted @ 2011-02-24 14:39 huhuuu 阅读(262) 评论(0) 推荐(0) 编辑

2011年2月22日

摘要: 空树也是树,森林不是树……还有注意ca++,大囧……View Code #include<stdio.h>int f[109];int jin[109];int find(int pos){ if(f[pos]==-1)return pos; return f[pos]=find(f[pos]);}int un(int a,int b){ int fa=find(a),fb=find(b); if(fa==fb)return 0; f[fa]=fb;return 1;}int main(){ int i,j,ca=0; while(1) { ca++; for(i=1;i<= 阅读全文

posted @ 2011-02-22 22:21 huhuuu 阅读(181) 评论(0) 推荐(0) 编辑

2011年2月21日

摘要: 略有难度的最小生成树问题:先排序算出某一长度的边有几条,放到tong[],再用krus求某一长度的边需要几条,xu[],再用枚举的方法举例出某一长度的符合条件为几条(再枚举下一种边时。把边覆盖上),分别为f1,f2,f3……再把f1,f2,f3相乘……(当然乘的过程不要忘了mod31011)ps:比较郁闷的是数组开小了,一直wa,稍微开大点TLE,再开大,AC……我就奇怪为什么别人的程序数组开小没问题,囧……其实还有一种矩阵的解法,速度更快……自己看看论文 阅读全文

posted @ 2011-02-21 21:04 huhuuu 阅读(867) 评论(0) 推荐(0) 编辑

2011年2月20日

摘要: 贪心的方法:每次将顶点度数排序,依次将度较大的点的度数减一;再排序再减……直到某点的度小于0时说明无解输出,或者所有点的度数都为零输出View Code 阅读全文

posted @ 2011-02-20 14:32 huhuuu 阅读(192) 评论(0) 推荐(0) 编辑

摘要: 一开始还mlt,纳闷,看了discuss才知道数据不是有规律的,他们之间可能有多个空格……所以用cin输入View Code 阅读全文

posted @ 2011-02-20 10:11 huhuuu 阅读(292) 评论(0) 推荐(0) 编辑

摘要: 我的思路是多次执行krusk,通过枚举比较产生最小minps:一般用g++提交要加上#include<stdio.h>(貌似废话了^ ^)View Code 阅读全文

posted @ 2011-02-20 09:29 huhuuu 阅读(390) 评论(0) 推荐(1) 编辑

2011年2月19日

摘要: View Code 阅读全文

posted @ 2011-02-19 21:09 huhuuu 阅读(291) 评论(0) 推荐(0) 编辑

摘要: 从点的角度考虑,因为要使男女的点都要经过,所以男的点要是加上女生的人数的人数,遍历只要生成最大生成树,树的路径和就是可以节约的钱了……kruskal+并查集,效率较高ps:要是不加#include<iostream>的话,用c++提交会有错,g++就没事,所以用c++提交不要忘了加上#include<iostream>View Code 阅读全文

posted @ 2011-02-19 10:01 huhuuu 阅读(588) 评论(0) 推荐(0) 编辑