POJ 2356 && POJ 3370 鸽巢原理
POJ 2356:
题目大意:
给定n个数,希望在这n个数中找到一些数的和是n的倍数,输出任意一种数的序列,找不到则输出0
这里首先要确定这道题的解是必然存在的
利用一个 sum[i]保存前 i 个数的和对n的取模
sum[0] = 0;
那么sum[0] ~ sum[n]有n+1个数据,这些数据的范围都是 0~n , 要是存在 sum[i] = 0,那么输出前 i 个数据即可
要是不存在那根据鸽巢原理可以说明必然能找到一个 sum[i] = sum[j] ,那么说明 (sum[i+1] + sum[i+2] ...+sum[j])%n = 0的,把这j-i个数输出即可
那么说明我们总是能找到一段连续的数据使其和是n的倍数
- #include <cstdio>
- #include <cstring>
- using namespace std;
- const int N = ;
- bool vis[N];
- int sum[N] , a[N] , pos[N];
- int main()
- {
- // freopen("a.in" , "r" , stdin);
- int n;
- while(scanf("%d" , &n) != EOF)
- {
- for(int i= ; i<=n ; i++){
- scanf("%d" , a+i);
- }
- memset(vis , , sizeof(vis));
- vis[] = , pos[] = ;
- for(int i= ; i<=n ; i++){
- sum[i] = (sum[i-]+a[i])%n;
- if(vis[sum[i]]){
- int l = pos[sum[i]];
- printf("%d\n" , i-l);
- for(int j = l+ ; j<=i ; j++){
- printf("%d\n" , a[j]);
- }
- break;
- }
- pos[sum[i]] = i;
- vis[sum[i]] = ;
- }
- }
- return ;
- }
POJ3370:
- #include <cstdio>
- #include <cstring>
- using namespace std;
- #define N 100005
- bool vis[N];
- int sum[N] , a[N] , pos[N];
- int main()
- {
- // freopen("a.in" , "r" , stdin);
- int c , n;
- while(scanf("%d%d" , &c , &n) , c||n)
- {
- for(int i= ; i<=n ; i++)
- scanf("%d" , a+i);
- memset(vis , ,sizeof(vis));
- sum[] = , vis[] = , pos[] = ;
- for(int i= ; i<=n ; i++){
- sum[i] = (sum[i-] + a[i])%c;
- if(vis[sum[i]]){
- int l = pos[sum[i]];
- for(int j=l+ ; j<=i ; j++){
- if(j == l+) printf("%d" , j);
- else printf(" %d" , j);
- }
- printf("\n");
- break;
- }
- vis[sum[i]] = ;
- pos[sum[i]] = i;
- }
- }
- return ;
- }
POJ 2356 && POJ 3370 鸽巢原理的更多相关文章
- Find a multiple POJ - 2356 容斥原理(鸠巢原理)
1 /* 2 这道题用到了鸠巢原理又名容斥原理,我的参考链接:https://blog.csdn.net/guoyangfan_/article/details/102559097 3 4 题意: 5 ...
- POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理
Halloween treats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7644 Accepted: 2798 ...
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
Find a multiple Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7192 Accepted: 3138 ...
- POJ 3370 Halloween treats( 鸽巢原理简单题 )
链接:传送门 题意:万圣节到了,有 c 个小朋友向 n 个住户要糖果,根据以往的经验,第i个住户会给他们a[ i ]颗糖果,但是为了和谐起见,小朋友们决定要来的糖果要能平分,所以他们只会选择一部分住户 ...
- poj 2356 Find a multiple(鸽巢原理)
Description The input contains N natural (i.e. positive integer) numbers ( N <= ). Each of that n ...
- POJ 3370 Halloween treats 鸽巢原理 解题
Halloween treats 和POJ2356差点儿相同. 事实上这种数列能够有非常多,也能够有不连续的,只是利用鸽巢原理就是方便找到了连续的数列.并且有这种数列也必然能够找到. #include ...
- poj Find a multiple【鸽巢原理】
参考:https://www.cnblogs.com/ACShiryu/archive/2011/08/09/poj2356.html 鸽巢原理??? 其实不用map但是习惯了就打的map 以下C-c ...
- POJ3370&HDU1808 Halloween treats【鸽巢原理】
题目链接: id=3370">http://poj.org/problem?id=3370 http://acm.hdu.edu.cn/showproblem.php?pid=1808 ...
- cf319.B. Modulo Sum(dp && 鸽巢原理 && 同余模)
B. Modulo Sum time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
随机推荐
- poj 1180:Batch Scheduling【斜率优化dp】
我会斜率优化了!这篇讲的超级棒https://blog.csdn.net/shiyongyang/article/details/78299894?readlog 首先列个n方递推,设sf是f的前缀和 ...
- AutoCAD C# 利用反射导出所注册的命令
主函数导出某一程序集AutoCAD 注册命令 /// <summary> ///提取所有的命令 /// </summary> /// <param name=" ...
- 基于.Net Core的API框架的搭建(3)
5.加入缓存支持 我们希望为项目增加缓存支持,我们选择Redis做为缓存数据库. 首先,我们在Services目录增加一个缓存接口类ICacheService: using System; using ...
- Linux环境下修改MySQL数据库存储引擎
今天在执行Oracle数据库迁移至MySQL数据库时报出了一个错误信息: Specified key was too bytes 百度发现,原来需要更改MySQL数据库的存储引擎为InnoDB,查询目 ...
- Python Turtle绘图
1. 画布(canvas) 画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置 1.1 设置画布大小 turtle.screensize(canvwidth=None, ca ...
- Kali Linux的介绍
Kali Linux是什么? Kali Linux是一个渗透测试平台兼安全审计平台,它集成了多款漏洞检测.目标识别和漏洞利用工具. Kali Linux是专门用于渗透测试的Linux操作系统:基于De ...
- LN : leetcode 406 Queue Reconstruction by Height
lc 406 Queue Reconstruction by Height 406 Queue Reconstruction by Height Suppose you have a random l ...
- Objective-C设计模式——单例Singleton(对象创建)
单例 和其它语言的单例产不多,可以说是最简单的一种设计模式了.但是有几个点需要注意下,单例就是一个类只有一个实例. 所以我们要想办法阻止该类产生别的实例,一般语言中都会将构造函数写为private.但 ...
- Debug技巧(1)
首先声明,以下有些是自己遇到的问题自己解决了,其它里面包括了网上看到的Debug经验和书里看到的经验,时间问题就不一一说明,如有侵权,私信我进行删除,我会道歉.我写这个的本意是记录我学习中遇到的问题, ...
- IPython、Notebook、qtconsole使用教程
IPython.Notebook.qtconsole使用教程 上一篇为Python,IPython,qtconsole,Notebook,Jupyter快速安装教程 1. 使用IPython 自动补全 ...