鸽巢原理 ..POJ 2356 & 3370
2013-08-07 15:41
337 查看
原理简单..N+1个物品放入N个盒子中..必定有一个盒子里物品大于一个...
但要知道什么时候用...1、may print any of them ..Special judge...就像这两题..如果要输出数最少的..估计DP了.
2、有类似取模的运算...
Program ( POJ 2356 )
Program ( POJ 3370 )
但要知道什么时候用...1、may print any of them ..Special judge...就像这两题..如果要输出数最少的..估计DP了.
2、有类似取模的运算...
Program ( POJ 2356 )
#include<iostream> #include<stdio.h> #include<string.h> #include<cmath> #include<queue> #include<stack> #include<set> #include<map> #include<algorithm> #define ll long long #define eps 1e-5 #define oo 10007 #define pi acos(-1.0) #define MAXN 10005 using namespace std; int sum[MAXN],a[MAXN],times[MAXN]; int main() { int i,j,x,n; sum[0]=0; memset(times,0,sizeof(times)); scanf("%d",&n); for (i=1;i<=n;i++) { scanf("%d",&a[i]); sum[i]=(sum[i-1]+a[i])%n; times[sum[i]]++; } if (times[0]) { for (i=1;i<=n;i++) if (sum[i]==0) break; printf("%d\n",i); for (x=1;x<=i;x++) printf("%d\n",a[x]); }else { for (x=1;x<n;x++) if (times[x]>=2) break; for (i=1;i<=n;i++) if (sum[i]==x) break; for (j=i+1;j<=n;j++) if (sum[j]==x) break; printf("%d\n",j-i); for (x=i+1;x<=j;x++) printf("%d\n",a[x]); } return 0; }
Program ( POJ 3370 )
#include<iostream> #include<stdio.h> #include<string.h> #include<cmath> #include<queue> #include<stack> #include<set> #include<map> #include<algorithm> #define ll long long #define eps 1e-5 #define oo 10007 #define pi acos(-1.0) #define MAXN 100005 using namespace std; int sum[MAXN],a[MAXN],times[MAXN]; int main() { int i,j,x,c,n; while (~scanf("%d%d",&c,&n) && n && c) { sum[0]=0; memset(times,0,sizeof(times)); for (i=1;i<=n;i++) { scanf("%d",&a[i]); sum[i]=(sum[i-1]+a[i])%c; times[sum[i]]++; } if (times[0]) { for (i=1;i<=n;i++) if (sum[i]==0) break; for (x=1;x<i;x++) printf("%d ",x); printf("%d",i); }else { for (x=1;x<c;x++) if (times[x]>=2) break; for (i=1;i<=n;i++) if (sum[i]==x) break; for (j=i+1;j<=n;j++) if (sum[j]==x) break; for (x=i+1;x<j;x++) printf("%d ",x); printf("%d",j); } printf("\n"); } return 0; }
相关文章推荐
- POJ 2356 && POJ 3370 鸽巢原理
- POJ 3370 && HDU 1808 Halloween treats(鸽巢原理)
- poj 3370/2356 鸽巢原理
- 鸽巢原理:hdu 1205 吃糖果+poj 2356 Find a multiple+poj 3370 Halloween treats
- poj 3370 Halloween treats&&poj 2356 Find a multiple
- poj 2356 鸽巢原理
- poj 3370 Halloween treats (组合数学:鸽巢原理)
- poj 2356 Find a multiple(组合数学:鸽巢原理)
- poj 2356 Find a multiple(鸽巢原理+标记)
- poj2356 Find a multiple(鸽巢原理)
- poj 3370 (抽屉原理 ) && 蓝桥杯 k倍区间
- POJ 3370 鸽巢原理
- POJ 3370:Halloween treats(鸽巢原理)
- POJ 3370 Halloween treats【鸽巢原理】
- poj 2356 Find a multiple[鸽巢原理]
- POJ 2356 Find a multiple 鸽巢原理
- POJ 2356 Find a multiple (鸽巢原理)
- POJ 2356 Find a multiple(鸽巢原理(抽屉原理))
- POJ2356 Find a multiple【鸽巢原理】
- POJ 2356 Find a multiple (鸽巢原理)