codeforces1045B
自己瞎鸡巴yy了一下,可知若一个数X不能被表示出来,那么X所有的表示方法都在A集合中,如a1,a2,a3······an-1,an-2中若a1+ai不能被表示出来,那么如果a1到ai是回文(这里回文是指a2-a1=an-an-1,a3-a2=an-1-an-1大概懂了就可以),这样用一个数组存一下两两之间的差哈希一下就可以了
#include <cstdio>
#include <algorithm>
using namespace std;
#define int long long
const int N=,md=,ha=;
int n,m,a[N],b[N],de[N],has1[N],has2[N],re[N],cnt=;
inline bool jud(int l,int r)
{
return ((has1[r]-has1[l-]*de[r-l+]%md+md)%md==(has2[l]-has2[r+]*de[r-l+]%md+md)%md)?:;
}
signed main()
{
int i,bo; scanf("%lld%lld",&n,&m); for(i=;i<=n;i++)scanf("%lld",&a[i]); sort(a+,a+n+);
for(i=;i<n;i++)b[i]=a[i+]-a[i]; de[]=1LL; for(i=;i<=n;i++)de[i]=de[i-]*ha%md;
for(i=;i<n;i++)has1[i]=(has1[i-]*ha%md+b[i])%md; for(i=n-;i>=;i--)has2[i]=(has2[i+]*ha%md+b[i])%md;
for(i=;i<=n;i++)
{
bo=;
if(i!=)bo&=jud(,i-);
if(i!=n)
{
bo&=(a[]+a[i]+m==a[i+]+a[n]); if(i!=n-)bo&=jud(i+,n-);
}if(bo)re[++cnt]=(a[]+a[i])%m;
}printf("%lld\n",cnt); sort(re+,re+cnt+); for(i=;i<=cnt;i++)printf("%lld ",re[i]);
}
codeforces1045B的更多相关文章
- codeforces1045B Space Isaac 【manacher】【差分】
题目大意: 题目是将$[0,m)$的数划成了两个集合,其中一个集合的元素个数不超过$n$.问在第一个集合中选出的数加上第二个集合中选出的数的和中没有出现的数有哪些. 题目分析: 很有意思的一道题.方便 ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
随机推荐
- 模拟斗地主和学生管理系统 IO 版
1.模拟斗地主 public class PlayCards { public static void main(String[] args) { String[] color = {"黑桃 ...
- Html5 标签二(超链接)
1.五种超链接形式 2.超链接属性 一 五种超链接 <!DOCTYPE html> <html lang="en"> <head> <me ...
- FreeRTOS任务函数
FreeRTOS的任务函数原型如下:void ATaskFunction(void *pvParameters); void ATaskFunction(*pvParameters){;; //函数可 ...
- 洛谷 P2835 刻录光盘
题目链接 https://www.luogu.org/problemnew/show/P2835 题目描述 在JSOI2005夏令营快要结束的时候,很多营员提出来要把整个夏令营期间的资料刻录成一张光盘 ...
- 5-(基础入门篇)学会刷Wi-Fi模块固件(刷LUA版本固件)
http://www.cnblogs.com/yangfengwu/p/9065559.html 基础教程源码链接请在淘宝介绍中下载,由于链接很容易失效,如果失效请联系卖家,谢谢 https://it ...
- 『转』统计一个日志文件里,单词出现频率的shell脚本
原文地址:http://blog.csdn.net/taiyang1987912/article/details/39995175 #查找文本中n个出现频率最高的单词 #!/bin/bash coun ...
- git 提交新增文件到网站
git add -A 是将所有的修改都提交.你可以用git status查看当前的变化,然后通过git add xxx有选择的提交.git commit 是将变化先提交到本地.git commit - ...
- NOIp2014提高组初赛错题简析
总体分析 \(89pts\),粗略来看选择题错的比较多,\(-6pts\).同时又是尿性的填空杀扣了\(5pts\). 不过后面的两大题全对了还是可喜可贺 错题精析 单项选择T8 编译器的主要功能是( ...
- 并行管理工具——pdsh
1. pdsh安装2. pdsh常规使用2.1 pdsh2.2 pdcp 并行管理的方式有很多种: 命令行 一般是for循环 脚本 一般是expect+ssh等自编辑脚本 工具 pssh,pdsh,m ...
- Object-Oriented(二)原型对象
自用备忘笔记 1. 理解原型对象 只要创建函数,函数上就会创建一个 prototype 属性指向函数的原型对象. function Person() {} Person.prototype //指向该 ...