11.6 校内赛 Set 解题报告【抽屉原理】
来源:互联网 发布:杭州萨满网络 编辑:程序博客网 时间:2024/04/28 20:10
题目描述
你手上有
注意: 请使用高效的输入输出方式避免输入输出耗时过大.
输入格式
第一行一个整数
接下来一行
输出格式
如果无解, 输出
否则, 第一行输出一个整数
接下来一行
样例
set.in
3
4 6 10
set.out
1
2
数据范围
对于20%的数据,
对于50%的数据,
对于100%的数据,
解题报告
我们将
不难看出,这样的前缀和一共有n个,而一个数同
根据抽屉原理,上述前缀和中至少有两个值是相同的,我们假设这两个数是
具体在实现上,我们可以按照输入的顺序计算出前缀和,并使其有序,找到一对相等的前缀和就好了。
代码如下:
#include<cstdio>#include<cstring>#include<algorithm>#define NAME "set"using namespace std;const int N=1000000;struct node{ int pos,val;}a[N+5];bool cmp(node r,node s){return r.val==s.val?r.pos<s.pos:r.val<s.val;}int n;int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=(x*10%n+(ch-'0')%n)%n,ch=getchar(); return f*x;}int main(){ freopen(NAME".in","r",stdin); freopen(NAME".out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++)a[i].val=(a[i-1].val+read())%n,a[i].pos=i; sort(a+1,a+1+n,cmp); for(int i=2;i<=n;i++) if(a[i].val==a[i-1].val) { printf("%d\n",a[i].pos-a[i-1].pos); for(int j=a[i-1].pos+1;j<=a[i].pos;j++)printf("%d ",j); return 0; } return 0;}
阅读全文
0 0
- 11.6 校内赛 Set 解题报告【抽屉原理】
- 北大ACM校内赛解题报告
- 校内赛 不正常序列 堆 解题报告
- 2014 第六届蓝桥杯校内赛解题报告 答案
- 校内赛 【同余方程】【组合数】 解题报告
- 17.7.24 校内赛 解题报告【二分答案】【记忆化搜索】【数据结构】
- 17.8.27 校内赛 解题报告【卢卡斯定理】【dfs+hash】【线段树】
- 校内赛 codeforces 827D【最小生成树】【树链剖分】 解题报告
- 校内赛 Codeforces 815C. Karen and Supermarket 树形DP 解题报告
- 2017.8.17 校内赛 解题报告 数论 【离散对数】【莫比乌斯反演】【莫比乌斯反演】
- HDU2072 单词数 解题报告--set
- ZOJ Problem Set - 1711 解题报告
- ZOJ Problem Set - 2412解题报告
- ZOJ Problem Set - 1457 解题报告
- 【LeetCode】Set Matrix Zeroes 解题报告
- [leetcode] 73. Set Matrix Zeroes 解题报告
- [LeetCode] Set Matrix Zeroes 解题报告
- Leetcode解题报告:73. Set Matrix Zeroes
- Deep Learning笔记(四) caffe源码解析
- 冒泡排序
- java.lang.ArrayIndexOutOfBoundsException at sun.font.CompositeFont.getSlotFont
- JavaScript中构造函数及原型介绍
- 《java与模式》-11 适配器模式
- 11.6 校内赛 Set 解题报告【抽屉原理】
- enum of Kotlin
- String
- webbrowser屏蔽网页弹出框
- Intel与Motorola的编码格式
- bzoj1491
- call apply bind
- TestNG dataProvider
- vue项目开发总结