首页 > 其他分享 >鸽巢原理

鸽巢原理

时间:2023-07-11 19:57:12浏览次数:31  
标签:q1 int sum 鸽巢 原理 include

 鸽巢原理的生活原型:k*n+1只鸽子住在n个巢里,至少有一个巢里有k+1只或更多

鸽巢原理的加强形式:令q1,q2,......,qn为正整数,如果将q1+q2+q3+......+qn-n+1个水果放入n个盒子,或者第一个盒子至少有q1个水果......

鸽巢原理的拓展——Ramsey定理:在6人中,或者有3人,每两人的互相认识;或者有3人,每两人都不认识

例题:poj2356

先求前缀和,再求前缀和取余,使用vis数组统计,遍历到2个时输出即可

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#define ll long long
using namespace std;
const int N = 1e4+39+7;
int n,a[N],sum[N],vis[N];
int main(){
	while(cin>>n){
		for(int i=1;i<=n;i++){
			cin>>a[i];
			sum[i]=sum[i-1]+a[i];		
		}
		for(int i=1;i<=n;i++){
			if(sum[i]%n==0){
				cout<<i<<'\n';
				for(int j=1;j<=i;j++)cout<<a[j]<<'\n';
				break;
			}
			if(vis[sum[i]%n]){
				cout<<i-vis[sum[i]%n]<<'\n';
				for(int j=vis[sum[i]%n]+1;j<=i;j++)cout<<a[j]<<'\n';
				break;
			}
			vis[sum[i]%n]=i;
		}
	}
		
	return 0;
}

  

标签:q1,int,sum,鸽巢,原理,include
From: https://www.cnblogs.com/zhanghx-blogs/p/17545763.html

相关文章

  • JUC包常用类原理
    概要放眼望去,java.util.concurrent包下类大致包括:atomic原子类、锁、并发集合、线程池、工具类。我们挑重要的了解一下。Atomic原子类Java针对并发编程已经有了各种锁,为什么还需要原子类?原子类一定有些特别的应用场景?在很多时候,我们需要的仅仅是一个简单的、高效的、线程安......
  • 计算机cpu的多级缓存简单原理
    缓存级别L1高速缓存(最快内存),一般分为两种方式:指令缓存和数据缓存;一般大小在256KB~1MB之间。L2叫L1缓存慢,比L1会更大些,一般大小在256KB~8MB之间。L3最大的高速缓存存储单元,也是最慢的一个。它的范围从4MB到50MB以上。数据会从RAM依次流到L3高速缓存,然后是L2,最后是L1查找时,会......
  • InnoDB自增原理都搞不清楚,还怎么CRUD?
    虽然我们习惯于给主键ID指定AUTO_INCREMENT属性,但是AUTO_INCREMENT也是可以指定到非主键字段的,唯一的约束就是这个字段上面得加索引,有了索引,就可以通过类似SELECTMAX(*ai_col*)的语句快速读到这列数据的最大值。本文要探讨的话题是MySql的InnoDB引擎处理自增数据列的原理MySql5.1......
  • 77.C++中的指针参数传递和引用参数传递有什么区别?底层原理你知道吗?
    77.C++中的指针参数传递和引用参数传递有什么区别?底层原理你知道吗?1.指针参数传递本质上是值传递,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,会在栈中开辟内存空间以存放由主调函数传递进来的实参值,从而形成了实参的一个副本(替身)。值传......
  • 基于生长的棋盘格角点检测方法--(1)原理介绍
    前言棋盘格中角点检测方法是相机标定中必不可少的步骤之一。Opencv中的函数boolfindChessboardCorners(InputArrayimage,SizepatternSize,OutputArraycorners,intflags=CALIB_CB_ADAPTIVE_THRESH+CALIB_CB_NORMALIZE_IMAGE)就可以轻松实现棋盘格角点检测结果。如下图所示......
  • 浅析synchronized锁升级的原理与实现
    背景在多线程编程中,线程同步是一个关键的概念,它确保了多个线程对共享资源的安全访问。Java中的synchronized关键字是一种常用的线程同步机制,它不仅提供了互斥访问的功能,还具备锁升级的特性。本文将深入探讨synchronized的锁升级原理和实现方式。在jdk1.5(包含)版本之前,因为加锁和......
  • ICT应用解决方案12-WLAN工作原理
    ICT应用解决方案12-WLAN工作原理1WLAN工作流程1.1AP上线AP获取IP地址并发现AC,与AC建立连接,为确保AP能够上线,AC需预先配置如下内容:配置网络互通:配置DHCP服务器,为AP和STA分配IP地址,也可将AC设备配置为DHCP服务器配置AP到DHCP服务器间的网络互通;配置AP到AC之间的网络......
  • 一文读懂苹果的差分隐私技术原理
    在2016年6月份的苹果WWDC大会上提到了一项差分隐私技术(DifferentialPrivacy),其作用是对用户的数据进行扰动,然后上传到苹果服务器。苹果能通过这些扰动过的数据计算出用户群体的行为模式,但是对每个用户个体的数据却无法解析。苹果通过采用差分隐私技术,实现了在不得到用户......
  • 支持向量机学习笔记--原理篇(一)
    支持向量机学习笔记–原理篇(一)前言初步学习机器学习给我最大的感受是它背后需要强大的数学知识,理论推导往往能帮助我们理解其本质。而在我看来,单纯的求解数学问题还不够,我们需要有把这部分理论知识运用到实际应用中去的能力。支持向量机(supportvector)是机器学习中用来解决监督分......
  • [笔记]组成原理_指令系统_指令的寻址方式(题)
    指令系统中采用不同寻址方式的目的是()A.提供扩展操作码的可能,并降低指令译码难度。B.可缩短指令字长扩大寻址空间,提高编程的灵活性.C.实现程序控制.D.三者都正确.采用不同寻址方式提高了指令译码的复杂度,所以A错。实现程序控制是通过转移指令而非寻址方式进行的,与寻址方式无......