CF1045B Space Isaac(乱搞)
翻译
有0~m-1的数被分成了两个集合
每次你可以从两个集合中任取一个数做加法并对m取模
问最后0~m-1中不能被组合出来的数有多少个
会给出你A集合 大小不超过200000
m<=1e9
完了题解都看不太懂……完全不知道讲的是啥……
考虑一个数$a$,如果它不能被表示出来,那么对于每一个$x\in A$,都有$(a-x)\%m\in A$(如果这两个数不在同一集合那么它就可以被组成了)
然后,整个序列很明显可以被分成两段,左边一段小于$a$右边一段大于$a$
如果$x<a$,那么$a-x<a$,所以两个数都在左边那一段
如果$x>a$,那么$(a-x)\%m=m+a-x$,感性理解一下它也是大于$a$的,所以两个数都在右边那一段
那么再考虑一下,以左边一段为例,设区间为$[1,r]$,$a=A[1]+A[r]$,那么必然得有$a=A[2]+A[r-1]$否则$a-A[2]$或$a-A[r-1]$肯定在$B$里面,继续下去也是。那么就是说这段区间必须回文
然后右边那段区间同理
所以我们考虑枚举$r$然后每一次判断是否两段都回文即可
然后这个回文的判定的话……看代码好了……
//minamoto
#include<iostream>
#include<cstdio>
#include<algorithm>
#define ll long long
#define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[<<],*p1=buf,*p2=buf;
using namespace std;
inline int read(){
#define num ch-'0'
char ch;bool flag=;int res;
while(!isdigit(ch=getc()))
(ch=='-')&&(flag=true);
for(res=num;isdigit(ch=getc());res=res*+num);
(flag)&&(res=-res);
#undef num
return res;
}
char sr[<<],z[];int C=-,Z;
inline void Ot(){fwrite(sr,,C+,stdout),C=-;}
inline void print(int x,char ch){
if(C><<)Ot();if(x<)sr[++C]=,x=-x;
while(z[++Z]=x%+,x/=);
while(sr[++C]=z[Z],--Z);sr[++C]=ch;
}
const ll ha=;const int N=;
int a[N],b[N];ll ha1[N],ha2[N],tmp[N];int gg[N],ans,n,m;
void init(){
for(int i=;i<n;++i) ha1[i]=ha1[i-]*ha+b[i];
for(int i=n-;i;--i) ha2[i]=ha2[i+]*ha+b[i];
}
bool ok(int l,int r){
return ha1[r]-ha1[l-]*tmp[r-l+]==ha2[l]-ha2[r+]*tmp[r-l+];
}
int main(){
// freopen("testdata.in","r",stdin);
n=read(),m=read();
for(int i=;i<=n;++i) a[i]=read();
for(int i=;i<n;++i) b[i]=a[i+]-a[i];
tmp[]=;
for(int i=;i<=n;++i) tmp[i]=tmp[i-]*ha;
init();
for(int i=;i<=n;++i){
bool fl=true;
if(i!=) fl&=ok(,i-);
if(i!=n){
fl&=(a[]+a[i]+m==a[i+]+a[n]);
if(i!=n-) fl&=ok(i+,n-);
}
if(fl) gg[++ans]=(a[]+a[i])%m;
}
sort(gg+,gg++ans);
print(ans,'\n');
for(int i=;i<=ans;++i) print(gg[i],' ');
Ot();
return ;
}
CF1045B Space Isaac(乱搞)的更多相关文章
- CF1045B Space Isaac
原题链接 DOWNLOAD AS PDF 题目大意 \(0\sim m-1\)的数被分成两个集合,你可以分别从两个集合中取一个数相加并对\(m\)取模,求一不能构造出的数. 题解 感觉如果\(\col ...
- ZOJ 3829 Known Notation 乱搞
乱搞: 1.数字的个数要比*的个数多一个,假设数字不足须要先把数字补满 2.最优的结构应该是数字都在左边,*都在右边 3.从左往右扫一遍,遇到数字+1,遇到*-1,假设当前值<1则把这个*和最后 ...
- Ural 1780 Gray Code 乱搞暴力
原题链接:http://acm.timus.ru/problem.aspx?space=1&num=1780 1780. Gray Code Time limit: 0.5 secondMem ...
- URAL 1827 Indigenous Wars(排序、乱搞)
题意:给一个长度为n数组{a[i]}.有m个操作Ti,Si,Li表示找以Ti值结束,以Si值开始,长度为Li的连续子串.找到后,将区间的答案值设为1.一开始答案值全部为0.最后输出n个答案值. 好久没 ...
- UVA 11853 [dfs乱搞]
/* 大连热身E题 不要低头,不要放弃,不要气馁,不要慌张 题意: 在1000×1000的格子内有很多个炮弹中心,半径给定. 为某人能否从西部边界出发,从东部边界走出. 不能输出不能,能的话输出最北边 ...
- Codeforces 732e [贪心][stl乱搞]
/* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给n个插座,m个电脑.每个插座都有一个电压,每个电脑都有需求电压. 每个插座可以接若干变压器,每个变压器可以使得电压变为x/2上取整. 有无限个变 ...
- 【BZOJ-4692】Beautiful Spacing 二分答案 + 乱搞(DP?)
4692: Beautiful Spacing Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 46 Solved: 21[Submit][Statu ...
- 【BZOJ-3578】GTY的人类基因组计划2 set + map + Hash 乱搞
3578: GTY的人类基因组计划2 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 367 Solved: 159[Submit][Status][ ...
- 【BZOJ-2937】建造酿酒厂 前缀和 + 展环为链 + 乱搞
2937: [Poi2000]建造酿酒厂 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 70 Solved: 24[Submit][Status][D ...
随机推荐
- 使用 Docker LNMP 部署 PHP 运行环境
简介 Docker LNMP 是基于 Docker 的 PHP 集成开发环境. Github 地址:https://github.com/YanlongMa/docker-lnmp 包含软件 ngin ...
- Linux下Mysql数据库忘记root
系统环境:Red Hat Enterprise Linux Server 6 1.停止mysqld服务 [root@Server huage]# service mysqld stop 2.以跳过授权 ...
- vuex原理笔记
本文总结自: https://tech.meituan.com/vuex-code-analysis.html, 将要点提炼为笔记,以便不时之需,安不忘危. 核心可分为两部分: 1.vue.use(V ...
- java2 -宏观了解
java2 -宏观了解 2016-01-24 16:17 308人阅读 评论(38) 收藏 举报 分类: JAVA(2) 版权声明:本文为博主原创文章,未经博主允许不得转载. Java2平台包括: ...
- PYTHON 爬虫笔记九:利用Ajax+正则表达式+BeautifulSoup爬取今日头条街拍图集(实战项目二)
利用Ajax+正则表达式+BeautifulSoup爬取今日头条街拍图集 目标站点分析 今日头条这类的网站制作,从数据形式,CSS样式都是通过数据接口的样式来决定的,所以它的抓取方法和其他网页的抓取方 ...
- Codeforces 148D Bag of mice:概率dp 记忆化搜索
题目链接:http://codeforces.com/problemset/problem/148/D 题意: 一个袋子中有w只白老鼠,b只黑老鼠. 公主和龙轮流从袋子里随机抓一只老鼠出来,不放回,公 ...
- 通过在classpath自动扫描方式把组件纳入spring容器中管理。
前面的例子我们都是使用xml的bean定义来配置组件,如果组件过多很臃肿.spring2.5引入了组件自动扫描机制,在指定目录下查找标注了@Component.@Service.@Controller ...
- python 之深浅拷贝
浅拷贝: 深拷贝:
- BZOJ4088: [Sdoi2015]立体图
高一联赛之后不久写的.当时看到这题就感觉特别优美.那个时候啥都不会,就只会这种模拟题,还只会最暴力的方法.对于每个方向的灯,枚举每个位置,手动枚举所有遮挡效果,并在枚举位置过程中传递遮挡效果. con ...
- js动态加载activeX控件在IE11与低版本IE中的差异
由于IE11更加遵循W3C规范,所以IE11与低版本IE在加载activeX时有差别. 1.IE11中动态加载activeX的顺序 var objectTag = document.createEle ...