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 ...
随机推荐
- python 全栈开发,Day39(进程同步控制(锁,信号量,事件),进程间通信(队列,生产者消费者模型))
昨日内容回顾 python中启动子进程并发编程并发 :多段程序看起来是同时运行的ftp 网盘不支持并发socketserver 多进程 并发异步 两个进程 分别做不同的事情 创建新进程join :阻塞 ...
- xshell替代工具finalShell
主要特性:1.多平台支持Windows,Mac OS X,Linux2.多标签,批量服务器管理.3.支持登录Ssh和Windows远程桌面.4.漂亮的平滑字体显示,内置100多个配色方案.5.终端,s ...
- Linux下安装jdk+maven +git
Linux系统下的操作,一直不是很熟悉.作为一名java开发工程师,感到很惭愧.因此把自己的阿里云服务器安装环境相关的东西给记录下来,方便后续查阅. 本文所采用的Lin ...
- Linux tar 解压 压缩(转)
注:tar是打包,不是压缩!) 解包: tar xvf FileName.tar 打包:tar cvf FileName.tar DirName .tar.gz 解压:tar zxvf FileN ...
- C# SignalR 即时通信
MSDN教程:https://docs.microsoft.com/en-us/aspnet/signalr/ 个人博客:http://www.cnblogs.com/zhili/p/SignalRQ ...
- Session帮助类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...
- Android自动化测试之Monkeyrunner使用方法及实例
目前Android SDK里自带的现成的测试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但其实是完完全全不同的两个工具,应用在不同的测试领域.总的来说,monkey ...
- ES7 之 Async/await 的使用
在 js 异步请求数据时,通常,我们多采用回调函数的方式解决,但是,如果有多个回调函数嵌套时,代码显得很不优雅,维护成本也相应较高. ES6 提供的 Promise 方法和 ES7 提供的 Async ...
- Flutter - 自动生成Android & iOS图标
对于要发布的app来说,做图标是一个麻烦的事,你需要知道N个图标的分辨率,然后用PhotoShop一个个修改导出. PS好图标之后,按照各自的位置放进去. ********************** ...
- KVM虚拟机管理——虚拟机克隆
1. 概述2. 部署基本操作系统虚拟机3. 配置虚拟机3.1 修改/etc/sysconfig/network3.2 删除/etc/sysconfig/network-scripts/ifcfg-et ...