雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 50 下一页

2011年7月20日

摘要: 裸题。。。View Code #include<stdio.h>#include<string.h>bool map[109][109];int mark[109];bool flag[109];int m;bool dfs(int x){ int i; for(i=1;i<=m;i++) { if(map[x][i]==0||flag[i]) continue; flag[i]=1; if(mark[i]==0||dfs(mark[i])) { mark[i]=x; return 1; } } return 0;}int main(){ int i,g,k,j; 阅读全文

posted @ 2011-07-20 13:52 huhuuu 阅读(145) 评论(0) 推荐(0) 编辑

摘要: 主要难点在与拆点举个例子:3. . .X . X. X .在行上拆成1 1 10 2 03 0 4列上拆成1 3 40 3 02 0 5就行了。。。后面一样View Code #include<stdio.h>#include<string.h>bool map[20][20];int hash[5][5];int row[5][5];int lie[5][5];int mark[20];bool flag[20];int m;bool dfs(int x){ int i; for(i=1;i<=m;i++) { if(map[x][i]==0||flag[i]) 阅读全文

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

摘要: 把行列转化为二分图根据König定理:二分图最小点覆盖数 = 最大匹配数View Code #include<stdio.h>#include<string.h>bool map[505][505];int mark[505];bool flag[505];int m;bool dfs(int x){ int i; for(i=1;i<=m;i++) { if(map[x][i]==0||flag[i]) continue; flag[i]=1; if(mark[i]==0||dfs(mark[i])) { mark[i]=x; return 1; } 阅读全文

posted @ 2011-07-20 08:31 huhuuu 阅读(216) 评论(0) 推荐(0) 编辑

2011年7月19日

摘要: View Code #include<stdio.h>#include<string.h>bool map[505][505];int men[505];bool hash[505];int m;bool dfs(int x){ int i; for(i=1;i<=m;i++) { if(map[x][i]==0||hash[i]) continue; hash[i]=1; if(men[i]==0||dfs(men[i])) { men[i]=x; return 1; } } return 0;}int main(){ int i,g,k; int count; 阅读全文

posted @ 2011-07-19 15:02 huhuuu 阅读(222) 评论(0) 推荐(0) 编辑

摘要: 比较好的数论d(6543) = d(6 + 5 + 4 + 3) = d(18) = 9、其实d(n)=n%9all+=a[i]*a[j]*a[(i*j)%9];//是统计(i*j))%9==((k)%9)的次数 __int64 add=0; for(i=1;i<=n;i++) { for(j=i;j<=n;j+=i) { add++; } }//统计((i*j)%9==((k)%9))&&(i*j)==k的次数先减一下就是((i*j)%9==((k)%9))&&(i*j)!=k的次数View Code #include<stdio.h> 阅读全文

posted @ 2011-07-19 10:10 huhuuu 阅读(290) 评论(0) 推荐(0) 编辑

2011年7月18日

摘要: 给你电影院长宽K然后给你N给问题请你分配位子要求权值最小在权值相同时按I取最小还是相同就按J最小暴力搜索下就行不难,但是用等差公式算时没考虑周到。。。View Code #include<stdio.h>#include<math.h>#include<string.h>int ll[1009];bool map[109][109];int main(){ int n,len; memset(map,0,sizeof(map)); scanf("%d%d",&n,&len); int i2=(len+1)/2; int j 阅读全文

posted @ 2011-07-18 20:11 huhuuu 阅读(381) 评论(0) 推荐(0) 编辑

2011年7月16日

摘要: 先按s从小到大排序若相同再按E从大到小在点相同时要特殊处理View Code #include<cstdio>#include<iostream>#include<algorithm>using namespace std;int n;int tree[200009];int all[200009];int temp[200009];struct data{ int l,r; int no;}node[200009];int lowbit(int x){ return x&(-x);}void updata(int x,int c){ int i; 阅读全文

posted @ 2011-07-16 15:53 huhuuu 阅读(185) 评论(0) 推荐(0) 编辑

2011年7月15日

摘要: 题意:统计左下方的星星数容易出现TLE的情况因为0<=X,Y<=32000x=0时,因为0&(-0)=0,所以会在树状数组里出现死循环解决办法是每个x++;由于y是升序的,故不用考虑,就统计X即可View Code #include<cstdio>#include<iostream>using namespace std;int n;int tree[50009];int add[50009];int a[50009];int lowbit(int x){ return x&(-x);}void updata(int x,int c){ in 阅读全文

posted @ 2011-07-15 17:01 huhuuu 阅读(170) 评论(0) 推荐(0) 编辑

摘要: 由于点范围比较大所以用离散化一下点如2 1 3n=3然后,在树状数组里放依次放入updata(2,1),统计sum(n)-sum(1),updata(1,1),统计sum(n)-sum(3)View Code 阅读全文

posted @ 2011-07-15 15:40 huhuuu 阅读(128) 评论(0) 推荐(0) 编辑

摘要: 输入n然后n个数字输出需要换几次View Code #include<cstdio>#include<iostream>#include<algorithm>using namespace std;struct data{ int val; int no; int N;}a[500009];int hash[500009];int cmp(data a,data b){ return a.val<b.val;}int cmp1(data a,data b){ return a.no<b.no;}int main(){ int n; while(s 阅读全文

posted @ 2011-07-15 13:59 huhuuu 阅读(239) 评论(0) 推荐(0) 编辑

上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 50 下一页