感觉这个题很不错,至少开始真的没想道可以用抽屉原理推出一个结论,然后把这题秒掉。。。。

已知有n个元素,sum[i]表示从1到i所有数的和。。。sum[i]%n可以得到一个剩余系,如果出现0,那么结果就找到了。

如果不出现0,就可以用抽屉原理了。因为剩余系里只有[1,n-1]这些数,但是sum[i]%n会得到n个结果。

n-1个抽屉放n个物品,必定有一个抽屉放的物品数大于等于2。

也就是必定存在sum[j]%n == sum[i]%n。我们假设sum[i] > sum[j],所以有(sum[i] - sum[j])%n = 0; 从而得到结果。

构造大概有O(n)的复杂度吧,开始想写O(n^2)。感觉不靠谱,也没敢写。

//#pragma comment(linker,"/STACK:327680000,327680000")
#include <iostream>
#include <cstdio>
#include <cmath>
#include <vector>
#include <cstring>
#include <algorithm>
#include <string>
#include <set>
#include <functional>
#include <numeric>
#include <sstream>
#include <stack>
#include <map>
#include <queue>#define CL(arr, val)    memset(arr, val, sizeof(arr))
#define REP(i, n)       for((i) = 0; (i) < (n); ++(i))
#define FOR(i, l, h)    for((i) = (l); (i) <= (h); ++(i))
#define FORD(i, h, l)   for((i) = (h); (i) >= (l); --(i))
#define L(x)    (x) << 1
#define R(x)    (x) << 1 | 1
#define MID(l, r)   (l + r) >> 1
#define Min(x, y)   (x) < (y) ? (x) : (y)
#define Max(x, y)   (x) < (y) ? (y) : (x)
#define E(x)        (1 << (x))
#define iabs(x)     (x) < 0 ? -(x) : (x)
#define OUT(x)  printf("%I64d\n", x)
#define Read()  freopen("data.in", "r", stdin)
#define Write() freopen("data.out", "w", stdout);typedef long long LL;
const double eps = 1e-8;
const double pi = acos(-1.0);
const double inf = ~0u>>2;using namespace std;const int N = 10010;int sum[N];
int a[N];
vector<int> v[N];int main() {//Read();int n, i, j;scanf("%d", &n);for(i = 1; i <= n; ++i) {scanf("%d", a + i);v[i].clear();}sum[0] = 0;for(i = 1; i <= n; ++i) {sum[i] = a[i] + sum[i-1];v[sum[i]%n].push_back(i);if(sum[i]%n == 0) {printf("%d\n", i);for(j = 1; j <= i; ++j) {printf("%d\n", a[j]);}return 0;}}for(i = 1; i <= n; ++i) {if(v[i].size() >= 2) {int l = v[i][0], r = v[i][1];printf("%d\n", r - l);for(j = l + 1; j <= r; ++j) {printf("%d\n", a[j]);}return 0;}}return 0;
}

POJ 2356 Find a multiple (抽屉原理)相关推荐

  1. POJ 2356 Find a multiple 神题 传说中的经典.

    题目 Description The input contains N natural (i.e. positive integer) numbers ( N <= 10000 ). Each ...

  2. poj - 2356 Find a multiple

    http://poj.org/problem?id=2356 题意:给你n个数,找出几个数,使他们的和是n的倍数:有多少数组成 ,输出哪几个数 题解:鸽巢原理.(1)当前n项和对n取模为0 输出前n个 ...

  3. POJ 2356 (抽屉原理)

    题目中说:随便输出一组.抽屉原理可以求出取出的数连续的情况. #include <iostream> #include<cstdio> using namespace std; ...

  4. poj2356(抽屉原理)

    题意:从输入的N个元素中找出是N的倍数的元素并且输出: 因为这个要求的是连续的数之和,先用sum数组求和:sum[1],sum[1]+sum[2],--,sum[1]+sum[2]+--+sum[n] ...

  5. 牛客算法周周练2 B Music Problem(DP,抽屉原理,二进制拆分)

    链接:https://ac.nowcoder.com/acm/contest/5203/B 来源:牛客网 题目描述 Listening to the music is relax, but for o ...

  6. 鸽巢原理(抽屉原理)的详解

    抽屉原理 百科名片 桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放两个苹果.这一现象就是我们所说的"抽屉原理". 抽屉原理的一般含义为: ...

  7. Algorithm:C++语言实现之SimHash和倒排索引算法相关(抽屉原理、倒排索、建立查找树、处理Hash冲突、Hash查找)

    Algorithm:C++语言实现之SimHash和倒排索引算法相关(抽屉原理.倒排索.建立查找树.处理Hash冲突.Hash查找) 目录 一.SimHash算法 1.SimHash算法五个步骤 2. ...

  8. 14. 不修改数组找出重复的数字【难度: 一般 / 知识点: 抽屉原理 二分】

    第一种方法: 开了map计数,多用了空间,map: logn,时间复杂度O(nlogn) class Solution {public:int duplicateInArray(vector<i ...

  9. hdu 3303(线段树+抽屉原理)

    解题思路:这题利用了抽屉原理,即1-M之间的所有数与M+1的模都不相同.那么可以利用它将要查找所有区间分成[1,Y-1],[Y,2*Y-1],[2*Y,3*Y-1].........一直下去,直到所有 ...

最新文章

  1. CentOS 7部署OpenStack(9)—部署dashboard
  2. cadence原理图封装pin名称重复_硬件工程师必备技巧--如何快速制作PCB封装
  3. 向量与向量的叉积和向量与矩阵的叉积数学表达式与python 实现
  4. python中哪些词是敏感字词_python实现敏感词过滤的几种方法
  5. 在没有适当上下文的情况下引发异常是一种不良习惯
  6. c++描述将一个2进制数转化成10进制数(用到初始化栈,进栈,入栈)
  7. 电影天堂电影链接爬取
  8. 更改主机文件引发思考 防火墙URL过滤无奈(转)
  9. 顺序查找(Linear Search)
  10. JAVA NIO 实现群聊
  11. java-php-python-ssm在线教学质量评价系统计算机毕业设计
  12. arm9开发板重新生成文件系统,并烧写
  13. webworker应用场景_聊聊webWorker
  14. 微信小程序之猜拳游戏
  15. 分享一款windows效率神器,自定义键盘改键(PowerToys)
  16. request:fail -202:net::ERR_CERT_AUTHORI
  17. Linux中存储设备的命名规则
  18. 代达罗斯之殇-大数据领域小文件问题解决攻略
  19. Tableau已经安装且重装时提示试用期结束了怎么办?(该方法已经过期!请到官网下载免费版,谢谢!)
  20. 【HTML5学习小结(1)】

热门文章

  1. 德黑兰大学推可踢球机器人,中国队快买!
  2. Android开源项目发布jCenter
  3. 4.Windows下安装ZooKeeper
  4. java web Junit
  5. 10.2.2移动产品离线功能等具体解释----暨4月8日移动《在离线一体化》公开课Qamp;A...
  6. DOS系统里,分屏显示目录的命令是什么??
  7. 不信iphone5 只要GALAXY S II珠峰仍有信号
  8. Linux 第60,61天 ansible的playbook
  9. centos 7--LNMP环境部署
  10. jdk历史各个版本下载