题意:

给定n个数,从中选取m个数,使得\(\sum | n\)。本题使用Special Judge.

题解:

既然使用special judge,我们可以直接构造答案。

首先构造在mod N剩余系下的前缀和。

\[sum_i = (a_i + sum_{i-1}) mod n
\]

剩余系N的完系中显然共有N-1个元素,我们有N个前缀和。

根据鸽巢原理,一定有\(sum_j = sum_i\)

所以这样构造是可行的。

TRICK

具体实现的时候用了一个技巧:

从前往后扫描sum数组,记录一个pos数组,这样就可以把时间复杂度降到了\(\Theta (n)\)

代码

#include <cstdio>
#include <cstring>
const int maxn = 10005;
int N, a[maxn], sum[maxn], pos[maxn];
int main() {
scanf("%d", &N);
memset(pos, -1, sizeof(pos));
for(int i = 1; i <= N; i++) {
scanf("%d", &a[i]);
sum[i] = (a[i] + sum[i-1]) % N;
}
pos[0] = 0;
for(int i = 1; i <= N; i++) {
if(pos[sum[i]] == -1) {
pos[sum[i]] = i;
}
else {
printf("%d\n", i-pos[sum[i]]);
for(int j = pos[sum[i]]+1; j <= i; j++) {
printf("%d\n", a[j]);
}
return 0;
}
}
return 0;
}

最新文章

  1. html+css上传文件控件美化
  2. Gyp语法规则参考 &amp; 工具的使用
  3. DP专题训练之HDU 1231 最大连续子序列
  4. JQuery判断radio是否选中,获取选中值
  5. WDCP安装并配置php5.4和mongodb
  6. iOS--隐藏和显示TabBar的方法
  7. MVC 3个重要的描述对象之ControllerDescriptor
  8. 并行计算之OpenMP入门简介
  9. UITableView的常用属性和cell的内存优化
  10. Caffe训练好的网络对图像分类
  11. htmlt中的块状元素与内联元素
  12. QT5-控件-QProgressBar-进度条-用来做下载进度,文件读取进度还不错
  13. tribonacci
  14. java输出空心菱形
  15. 长连接 Socket.IO
  16. java 5年规划---
  17. 多线程编程学习笔记——异步调用WCF服务
  18. 第三十六篇-FloatingActionButton的使用
  19. python-获取当前工作路径
  20. Gis数据处理

热门文章

  1. 开放定址法——线性探测(Linear Probing)
  2. [BZOJ1045] [HAOI2008] 糖果传递 (中位数)
  3. 笔记-爬虫-js代码解析
  4. 代码review的流程
  5. 3,MongoDB之数据类型
  6. 图的深度优先遍历&amp;广度优先遍历
  7. 使用Eclipse把java文件打包成jar
  8. WIN8、WIN7访问Windows Server 2003服务器的数据库速度很慢、远程速度很慢的解决方法
  9. QBASIC教程
  10. csdn回到顶端