摘要: step1:在输入每个点的坐标后,首先根据计算的通信范围建立每对计算机的连通关系。step2:当输入的操作是维修时,就将本台计算机标记为完好,并将其所有与其可以通信的且完好的计算机进行并操作,那么可通信的计算机就在一棵树中了,具有相同的根节点。step3:当输入的操作为查询时,若两计算机具有相同的根节点,则可以通信,否则不可以通信。http://poj.org/problem?id=2236 1 #include 2 #include 3 #include 4 #include 5 int map[1005][1005]; 6 int mul(int x) 7 { 8 return x... 阅读全文
posted @ 2014-02-27 13:12 清风旋叶 阅读(166) 评论(0) 推荐(0) 编辑
摘要: step1:首先将每个节点视为根节点,初始化每个节点的父节点是自己。step2:如果要使不同宗教最多,那就是每个人的都不同,那么最大的宗教数就是人数了。step3:设输入一对宗教相同的,且这两人当前不属于同一集合,则最大的宗教数减1。step4:当所有的输入结束后,结果就出来了。http://poj.org/problem?id=2524 1 #include 2 int f[50005],sum; 3 int find(int x) 4 { 5 if(f[x]!=x) 6 f[x]=find(f[x]); 7 return f[x]; 8 } 9 void m... 阅读全文
posted @ 2014-02-26 22:08 清风旋叶 阅读(132) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2082#include#includeint main(){ //freopen("in.txt","r",stdin); int t; scanf("%d",&t); while(t--) { int num; int a[60],b[60]; int i,j,k; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); a[0]=1; for(... 阅读全文
posted @ 2013-11-25 17:03 清风旋叶 阅读(162) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/status.php?user=l1285556798&pid=1085&status=5#include#include#define maxn 10000int a[maxn],b[maxn];int main(){ int arr[5],brr[5]; int x,y,z; while(scanf("%d%d%d",&x,&y,&z)&&x+y+z) { if(x==0) { printf("1\n"); continue; } brr[1... 阅读全文
posted @ 2013-11-25 17:02 清风旋叶 阅读(121) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1559#include#include#includeusing namespace std;int dp[1005][1005];int main(){ int t; scanf("%d",&t); while(t--) { int m,n,x,y; int i,j; scanf("%d%d%d%d",&m,&n,&x,&y); memset(dp,0,sizeof(dp)); int maxn=-1; ... 阅读全文
posted @ 2013-11-25 16:59 清风旋叶 阅读(85) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3347C++ Map秒杀附上代码#include#include#include#include#include#includeusing namespace std;mapmp;map::iterator it;int main(){ //freopen("in.txt","r",stdin); int t; scanf("%d",&t); while(t--) { mp.clear(); int sum=0; int n; ... 阅读全文
posted @ 2013-11-15 20:54 清风旋叶 阅读(150) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3603#include#include#include#define N 300001int n;int vis[N];int pre[N];int dp[N][19];void swap(int *a,int *b){ *a+=*b; *b=*a-*b; *a-=*b;}int b_search(int x,int y){ int m; int k=0; int v=x; while(x>1; if(pre[m]b) return 0; k=(i... 阅读全文
posted @ 2013-11-14 15:50 清风旋叶 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 1、求组合数C(n,r)的函数 int myc(int n,int r){ int sum=1; for(int i=1;i#include#define maxn 1024int a[maxn+10];int cmp(const void *e1,const void *e2){ return *((int *)e1)-*((int *)e2);}int main(){ int t,n,k; int i,j; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&k); for(... 阅读全文
posted @ 2013-11-13 09:59 清风旋叶 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 定义: 1、从S中有序选取的r个元素称作S的一个r排列。S的不同r排列总数记作P(n,r),r=n时,称为S的全排列。 2、从S中无序选取的r个元素称作S的一个r组合。S的不同r组合总数记作C(n,r)。推论 1、元素一次排成一个圆圈的排列称为环排列。S的环排列数等于 P(n,r)/r,其实就是线性排列数的1/r。推论 2、C(n,r)= C(n-1,r-1)+C(n-1,r)。该公式就是杨辉三角形,也称作Pascal公式。定义:设S={n1*a1,n2*a2,n3*a3,....,nk*ak}为多重集,n=n1+n2+...+nk表示S中的元素总数。 (1)从S中有序选取的r个元素称为S的一 阅读全文
posted @ 2013-11-10 12:49 清风旋叶 阅读(2012) 评论(0) 推荐(0) 编辑
摘要: 设m>0,方程 ax ≡ c(mod m)称作一次同余方程,使上述方程成立的整数称作方程的解.其中方程不一定有解。方程有解的充分必要条件是d=gcd(a,m),当d |c时,有d个解。设x0是上述式子的解,不难验证所有与x0模m同余的数都是该式子的解,从而可以写成x ≡ x0(mod m)。于是,只对模m的每个等价类娶一个代表,验证是否使方程成立,就能找到所有的解。定义:如果ab ≡ 1(mod m),则称b是a的模m的逆,记作a-1(mod m)。a 的模的逆的方程是 ax ≡ 1(mod m) 该方程的解存在的充分必要条件是 a 与 m互素. 阅读全文
posted @ 2013-11-03 15:53 清风旋叶 阅读(580) 评论(0) 推荐(0) 编辑