上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 57 下一页

2011年7月22日

poj 3159 Candies

摘要: /* 题意: 在满足b1-a1<=c1,b2-a1<=c2...的情况下,flymouse( N )希望自己分得的糖果数尽量多于snoopy( 1 )b-a<=c 不等式正好可以构成最短路的三角不等式:dv <= du + w(u,v)比如顶点A,B,C有如下关系:db-da<=2,dc-da<=5,dc-db<=2,构成一三角形ABC,AB(A指向B),AC(A指向C),BC(B指向C),由dc-db<=2,db-da<=2,知dc<=db+2,db<=da+2,所以dc<=da+4而原条件 dc-da<=5,即d 阅读全文

posted @ 2011-07-22 20:40 sysu_mjc 阅读(148) 评论(0) 推荐(0) 编辑

poj 3095 Linear Pachinko

摘要: #include<iostream> //水题#include<string>using namespace std;int main(){ string str; int i,j; while(cin>>str&&str!="#") { int s=0; for(i=0;i<str.size();++i) { if(str[i]=='.') s+=100; else if(str[i]=='|') { for(j=i-1;j>=0&&str[j]=='_ 阅读全文

posted @ 2011-07-22 20:39 sysu_mjc 阅读(150) 评论(0) 推荐(0) 编辑

poj 3090 Visible Lattice Points

摘要: #include<iostream> //先打表,不然TLE using namespace std;int gcd(int n,int m) { int r; if(n<m)swap(n,m); while(m!=0) { r=n%m; n=m; m=r; } return n;}int g[1002][1002],res[1002];int main(){ for(int i=1;i<=1000;++i) for(int j=1;j<=1000;++j) if(gcd(i,j)==1) g[i][j]=1; for(int k=1;k<=1000;++k 阅读全文

posted @ 2011-07-22 20:38 sysu_mjc 阅读(154) 评论(0) 推荐(0) 编辑

poj 2480 Longge's problem

摘要: /*设F(N)=∑gcd(i, N) ,1<=i<=N性质:F[P^k]=k×(P^k-P^(k-1))+P^k ,P为质数 (详细的证明放在后面)且F(N)是积性函数,即当GCD(M,N)=1时,有 F[M×N]=F[M]×F[N],又因为一个正整数总可以表示成素数(它的质因子)的乘积: N = p1^k1 * p2^k2 * ... * pn^kn (这里p1,p2,..pn是素数,当然相互之间是互质的)所以F(N)=F[p1^k1] * F[p2^k2] * ... * F[pn^kn] = (k1×(p1^k1-p1^(k1-1))+ 阅读全文

posted @ 2011-07-22 20:33 sysu_mjc 阅读(138) 评论(0) 推荐(0) 编辑

poj 2485 Highways

摘要: // 题意:找出最小生成树的最大边#include<iostream> //最小生成树Prim算法using namespace std;struct MST //最小生成树的边{ int st,ed,w;}mst[1000];int n,edge[1000][1000];int ans; //ans保存最小生成树的最长边void Prim(){ int i,j,k; for(i=0;i<n-1;i++) //默认选择节点0加入生成树 { mst[i].st=0;mst[i].ed=i+1; mst[i... 阅读全文

posted @ 2011-07-22 20:33 sysu_mjc 阅读(116) 评论(0) 推荐(0) 编辑

poj 2436 Disease Management

摘要: //有 D(<=15) 种疾病在 N 头牛中,告知每头牛所患的病,问至多能选择多少头牛,使得它们所患的病总数不超过 K//方法:枚举所有疾病种类(不大于 k),检查每头牛患的病是否落在该范围内,比较找出最大的数目#include<iostream> //位运算using namespace std;int cow[1002]; //cow[]表示牛携带的疾病的值,若患有 i 种疾病,则第(i-1)位上的值是1 .假如患有第 1 和 5 种疾病,则表示为 10001=17int main(){ int n,d,k; scanf("%d%d%d",&n 阅读全文

posted @ 2011-07-22 20:32 sysu_mjc 阅读(166) 评论(0) 推荐(0) 编辑

poj 2478 Farey Sequence

摘要: #include <iostream> //欧拉函数, 给定n,求φ(1)到φ(n)的和using namespace std;const int max_n=1000000;long long phi[max_n+2],sum[max_n+2]; //这里数组空间起码要稍微大于max_nvoid phi_table() //欧拉函数表{ for(int i=2;i<=max_n;++i) phi[i]=0; phi[1]=1; for(int i=2;i<=max_n;++i) if(!phi[i]) ... 阅读全文

posted @ 2011-07-22 20:32 sysu_mjc 阅读(218) 评论(2) 推荐(0) 编辑

poj 2387 Til the Cows Come Home

摘要: #include <iostream> //单源顶点最短路径:迪杰斯特拉(Dijkstra)算法using namespace std; const int MaxWeight=1000002; //最大值应该是1000*100+1 int Vertex,edge[1002][1002],distD[1002],i,j;void init(){ for(i=1;i<=Vertex;i++) //结点坐标都是从1开始的 for(j=1;j<=Vertex;j++) { if(i==j) edge[i][j]=0; else edge[i][j]=MaxWeight; }} 阅读全文

posted @ 2011-07-22 20:31 sysu_mjc 阅读(160) 评论(0) 推荐(0) 编辑

poj 2421 Constructing Roads

摘要: #include<iostream> //最小生成树primusing namespace std;const int max_ve=105,MaxWeight=2000;int n,edge[max_ve][max_ve],sum; //n,m分别记录顶点数和边数struct MinTree //最小生成树的边{ int begin,end,weight;}mintree[max_ve];void Prim(){ int min,v,com,i,j,k; for(i=0;i<n-1;i++) //对mintree进行初始化,顶点下标从0开始 { mintree[i].beg 阅读全文

posted @ 2011-07-22 20:31 sysu_mjc 阅读(209) 评论(0) 推荐(0) 编辑

poj 2240 Arbitrage

摘要: // 题意: 套汇问题,给出n种货币,和m种兑换利率,问是否存在一种盈利的兑换方式// 即找到一个圈,使沿着这个圈兑换钱币后钱数增加// 思路: 路径为汇率,由于自环汇率是1,因此,我们要找一个圈作用的结果大于1。// floyd算法的变形,注意路径松弛的时候要改成相乘,另外,用map进行字符串与节点编号的映射#include <iostream> // floyd算法#include<string>#include<map>using namespace std;double distF[32][32];int n,m,i,j;void floyd(){ 阅读全文

posted @ 2011-07-22 20:30 sysu_mjc 阅读(165) 评论(0) 推荐(0) 编辑

上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 57 下一页

导航