UVA11237 Halloween treats (鴿巢原理)
題目連結:http://vjudge.net/vjudge/problem/viewProblem.action?id=34693
鴿巢原理:m(m>=1)個元素分成n組,那麼總有一個組至少含有元素個數為[m/n], "[ ]"向上取整
引例:
設a1,a2,.....am是正整數的序列,試證明至少存在整數k,l 1<=k<l<=m使得和 ak+ak+1+.....al是m的倍數
證明:
構造一個序列S1=a1,S2=a1+a2,...Sm=a1+a2+......+am;
(1) 若有個Sn為m的倍數則一定存在
(2)若沒有一個Sn為m的倍數,設Rh=S%m,h=1,2,3,4,......m,得到R的序列 R1,R2,,,,,,,Rm且都不為0且小於m,根據鴿巢原理,m個餘數在區間[1,m-1]裡取值至少存在一堆Rh,Rk相等,即Sk=Sh(mod m)
設 h>k
Sh-Sk=ak+1+ak+2+........+ah = 0(mod m);
此題程式碼如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 100001;
typedef long long LL;
int nei[maxn];
struct s{
int h,r;
bool operator <(const s &b) const{
if(this->r==b.r)
return this->h < b.h;
return this->r<b.r;
}
}R[maxn];
int main()
{
int c,n;
while(~scanf("%d%d",&c,&n)){
if(n==0&&c==0)
break;
LL sum=0;
int num=-1;
for(int i=0;i<n;i++){
scanf("%d",&nei[i]);
sum+=nei[i];
R[i].r=sum%c;
R[i].h=i+1;
if(num==-1&&R[i].r==0)
num=i;
}
int e;
if(num==-1){
sort(R,R+n);
for(int i=0;i<n-1;i++){
if(num==-1&&R[i].r==R[i+1].r){
num=R[i].h;
e=R[i+1].h;
break;
}
}
if(num==-1){
puts("no sweets");
continue;
}
for(int i=num+1;i<e;i++)
printf("%d ",i);
printf("%d\n",e);
}
else{
for(int i=0;i<num;i++)
printf("%d ",i+1);
printf("%d\n",num+1);
}
}
return 0;
}
相關文章
- POJ 3370-Halloween treats(鴿巢原理)
- CF 1994 D. Funny Game(*1900) 鴿巢原理+並查集GAM並查集
- CF 577 B. Modulo Sum 鴿巢原理/01揹包 (*1800)
- 飛鴿傳書實現原理
- HDU - 6003 Problem Buyer題解(貪心選擇演算法,鴿巢原理,優先佇列維護)演算法佇列
- MySQL Join原理分析(緩衝塊巢狀與索引巢狀迴圈)MySql巢狀索引
- 趣題:鴿籠原理的應用 IMO 2001 Problem #3
- ScrollView巢狀ListView解決辦法以及原理View巢狀
- 從原理上說說ScrollView巢狀ListView的問題View巢狀
- 用信鴿解釋httpsHTTP
- 不可思議的肉鴿遊戲遊戲
- 用信鴿來解釋 HTTPSHTTP
- 通過信鴿來解釋 HTTPSHTTP
- 天鴿互動財報:2017年Q1天鴿互動營收2.44億元 同比增長61.0%營收
- 利用飛鴿協議實現通訊功能協議
- less巢狀巢狀
- Datalist巢狀巢狀
- 【Android】ScrollView巢狀ListView只顯示第一行問題原理分析AndroidView巢狀
- 隨時會鴿的 PHP 教程:環境安裝PHP
- 用信鴿來講解HTTPS的知識HTTP
- Linux中利用NFS實現飛鴿傳書LinuxNFS
- 集合框架-集合的巢狀遍歷(HashMap巢狀HashMap)框架巢狀HashMap
- 集合框架-集合的巢狀遍歷(HashMap巢狀ArrayList)框架巢狀HashMap
- 集合框架-集合的巢狀遍歷(ArrayList巢狀HashMap)框架巢狀HashMap
- 集合框架-集合的巢狀遍歷(多層巢狀)框架巢狀
- vue路由巢狀Vue路由巢狀
- angular 巢狀路由Angular巢狀路由
- 迴圈_巢狀巢狀
- 集合的巢狀巢狀
- 盒子的巢狀巢狀
- oracle巢狀表Oracle巢狀
- Oracle 巢狀表Oracle巢狀
- 列表巢狀操作巢狀
- ROGUE肉鴿三要素:目標&成長&新鮮
- Locust 任務巢狀巢狀
- Oracle 巢狀表(轉)Oracle巢狀
- 巢狀子查詢巢狀
- vue(19)巢狀路由Vue巢狀路由