链接:http://211.140.156.254:2333/contest/67

  转眼间上次加回来的Rating又掉完了。

  这次不知为何特别水,T1想了一段时间没想出来弃了,导致后面心态炸了。

  T2也没有注意到有随机数据,少得了10分。

  T3也没想过,直接输了些样例再手算了一组数据就没管了。

  然而考完发现T1一直卡在一个坑里跳不出来,但很多人都A了T1而我只有30分。

  所以一夜回到解放前。

  

  T1 实际上是一道分治大水题。

  我们先令a[i]=i;然后这当然是不满足要求的。

  所以我们每次取出队列中的一半数字(下标为奇数),再取出另一半数字(下标为偶数)分别组成新的队列。

  然后单独分治即可,这里给一个图理解一下:

  

  所以对于n=6时,序列就是153264

  由于是分而治之,因此复杂度为O(n log n)

  

  T2 01串hash+线段树。

  考虑O(n^2)的暴力,每次找出两个数i,j,然后把它们作为等差数列的前两项,然后查找第三项的位置是否合法。

  然后只要加上一大堆类似clock之类的玄学操作竟然可以A了

  然后考虑正解。对于读入的数x,如果x-k和x+k在之前都出现过(或都没出现过),那么是合法的。反之,若其中只有一个数出现过,那么必然会出现x-k,x,x+k或x+k,x,x-k这样的情况,就不是反等差数列。

  因此我们再细化一点,用01串表示在x之前所有数的出现情况(出现就为1)

  然后对它的性质进行分析可以发现当且仅当这个串在边界范围内以x为中心左右对称才合法。

  例如(令当前的数为x):

  当串为:1101x1011或1101x101110是都是合法的(后者前面4个数就到边界了,众所周知数的范围在1至n,没有负数之类的东西)

  当串为:1011x1011或11011x11010时都是不合法的

  然后对于所有的01串进行hash再判重即可。

  但是单纯的hash会T,所以用线段树来维护hash

  具体实现看代码,这里线段树要有3个信息:

  len:子树大小,主要是为了hash

  lh:从左向右的hash顺序时当前节点的值

  rh:从右向左的hash顺序时当前节点的值

  对于hash可以开unsighed long long自然溢出,这样比较方便。同时记得把次数预处理出来。

  CODE

#include<cstdio>
using namespace std;
typedef unsigned long long uni;
const int N=;
struct segtree
{
int len;
uni lh,rh;
}tree[N<<];
int n,x,last;
uni h1,h2,seed[N];
inline char tc(void)
{
static char fl[],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,,,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{
x=; char ch=tc();
while (ch<''||ch>'') ch=tc();
while (ch>=''&&ch<='') x=x*+ch-'',ch=tc();
}
inline int min(int a,int b)
{
return a<b?a:b;
}
inline void build(int root,int l,int r)
{
if (l==r)
{
tree[root].len=;
return;
}
int mid=l+r>>;
build(root<<,l,mid);
build(root<<|,mid+,r);
tree[root].len=tree[root<<].len+tree[root<<|].len;
}
inline void updata(int root)
{
tree[root].lh=tree[root<<].lh*seed[tree[root<<|].len]+tree[root<<|].lh;
tree[root].rh=tree[root<<|].rh*seed[tree[root<<].len]+tree[root<<].rh;
}
inline void modify(int root,int l,int r,int id)
{
if (l==r)
{
tree[root].lh=tree[root].rh=;
return;
}
int mid=l+r>>;
if (id<=mid) modify(root<<,l,mid,id);
if (id>mid) modify(root<<|,mid+,r,id);
updata(root);
}
inline void l_query(int root,int l,int r,int beg,int end)
{
if (beg<=l&&end>=r)
{
h1+=tree[root].lh*seed[last];
last+=tree[root].len;
return;
}
int mid=l+r>>;
if (end>mid) l_query(root<<|,mid+,r,beg,end);
if (beg<=mid) l_query(root<<,l,mid,beg,end);
}
inline void r_query(int root,int l,int r,int beg,int end)
{
if (beg<=l&&end>=r)
{
h2+=tree[root].rh*seed[last];
last+=tree[root].len;
return;
}
int mid=l+r>>;
if (beg<=mid) r_query(root<<,l,mid,beg,end);
if (end>mid) r_query(root<<|,mid+,r,beg,end);
}
int main()
{
//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
register int i;
read(n);
build(,,n);
for (seed[]=,i=;i<=n;++i)
seed[i]=seed[i-]*;
for (i=;i<=n;++i)
{
read(x);
modify(,,n,x);
int len=min(x-,n-x);
if (!len) continue;
last=; h1=; l_query(,,n,x-len,x-);
last=; h2=; r_query(,,n,x+,x+len);
if (h1!=h2) { puts("NO"); return ; }
}
puts("YES");
return ;
}

  T3 搜索+打表。

  然而当我看到这道题时觉得很不可做,输了样例等弄了7分。

  实际上要发现一个性质:当一个串的左右括号的数量相等时必然是一个合法的括号序列的循环移位。

  所以爆搜一些小的点,然后用组合数学推一下其中一个等于2时的情况就可以拿不少分。

  这里对于标算的判重和思路不是很懂,所以还是只会30分左右的搜索。

  CODE

#include<cstdio>
using namespace std;
const int N=,mod=;
int h[N][],l[N][],a,b,ans;
inline void check(void)
{
for (register int i=;i<=a;++i)
if (h[i][]!=h[i][]) return;
for (register int j=;j<=b;++j)
if (l[j][]!=l[j][]) return;
if (++ans>=mod) ans-=mod;
}
inline void DFS(int x,int y)
{
if (x>a) { check(); return; }
if (h[x][]>b/||h[x][]>b/) return;
if (l[y][]>a/||l[y][]>a/) return;
int xx=x,yy=y;
if (++yy>b) ++xx,yy=;
++h[x][]; ++l[y][]; DFS(xx,yy); --h[x][]; --l[y][]; ++h[x][]; ++l[y][]; DFS(xx,yy); --h[x][]; --l[y][];
}
int main()
{
scanf("%d%d",&a,&b);
DFS(,);
printf("%d",ans);
return ;
}

EZ 2018 03 30 NOIP2018 模拟赛(六)的更多相关文章

  1. EZ 2018 03 23 NOIP2018 模拟赛(五)

    链接:http://211.140.156.254:2333/contest/65 这次Rating重回Rank18,我是20的守门员(滑稽) 这次题目和数据普遍偏水,我T2打错了一个变量名竟然过了所 ...

  2. EZ 2018 03 16 NOIP2018 模拟赛(四)

    链接:http://211.140.156.254:2333/contest/64 我去掉了一百多分! 这次的题目怎么说呢,特别水,但是就是出现了一些很逗的错误导致炸裂. 最好笑的是SB的不只我一个: ...

  3. EZ 2018 03 09 NOIP2018 模拟赛(三)

    最近挺久没写比赛类的blog了 链接:http://211.140.156.254:2333/contest/59 这次的题目主要考验的是爆搜+打表的能力 其实如果你上来就把所有题目都看过一次就可以知 ...

  4. EZ 2018 06 17 NOIP2018 模拟赛(十九)

    这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...

  5. EZ 2018 06 10 NOIP2018 模拟赛(十八)

    好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...

  6. EZ 2018 05 26 NOIP2018 模拟赛(十六)

    这次难道就是传说中的标准分大赛?而且这次比赛的链接不翼而飞了 一堆人153pts然后就有Rank4?看来这个Rank4不值钱了,才涨了50+的Rating. 不过还好最后5min的时候想出了T1正解, ...

  7. EZ 2018 06 24 NOIP2018 模拟赛(二十)

    很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了. 这一场尽管T2写炸了,但也莫名Rank4涨了Rating.不过还是自己太菜. A. 环游世界 首先我们先排个序,想一下如果不用走回来 ...

  8. EZ 2018 06 02 NOIP2018 模拟赛(十七)

    这次的比赛是真心比较狗,我TM的写了30min的树剖ZZ地直接memset超时了 话说我既然想到差分就应该去写差分的啊! 好了不过这次Rank还挺高的,终于要打进前10了当然是假的了. 好了下面开始讲 ...

  9. EZ 2018 05 20 NOIP2018 模拟赛(十五)

    这次的比赛充满着玄学的气息,玄学链接 首先讲一下为什么没有第十四场 其实今天早上9点时看到题目就叫了:原题! 没错,整套试卷都做过,我还写了题解 然后老叶就说换一套,但如果仅仅是这样就没什么 但等13 ...

随机推荐

  1. JSTL核心标签库——重定向标签、URL处理标签、网页导入标签

    <c:redirect>重定向标签 相当于HttpServletResponse的sendRedirect()方法. <%@page contentType="text/h ...

  2. 用于创建和管理 Azure 虚拟机的常用 PowerShell 命令

    本文介绍一些可用于在 Azure 订阅中创建和管理虚拟机的 Azure PowerShell 命令. 若要获取特定命令行开关和选项的详细帮助,可以使用 Get-Help 命令. 有关安装最新版 Azu ...

  3. Oracle EBS AP 取消发票

    --取消发票 created by jenrry 20170425 declare l_result BOOLEAN; l_message_name VARCHAR2(240); l_invoice_ ...

  4. Oracle数据库 插入数据格式,简单查询

    操作练习代码,知识点往下翻 TRUNCATE TABLE hehe1111; select * from hehe1111; desc hehe1111; ,'); ,'); ,'); ,'); ,' ...

  5. ssh中文手册

    ssh-keygen 中文手册 sshd_config 中文手册 sshd 中文手册

  6. 通用视图-分开处理GET、POST请求

    1.编辑urls.py: url(r'^vmmgmt-vms/$', views.vmmgmt,{'model':models.hvvms,'GET': views.vmmgmt_get_view,' ...

  7. 一起学习Boost标准库--Boost.texical_cast&format库

    今天接续介绍有关字符串表示相关的两个boost库: lexical_cast 将数值转换成字符串 format 字符串输出格式化 首先,介绍下lexical_cast ,闻其名,知其意.类似C中的at ...

  8. MySQL主从复制日常管理维护篇

    日常工作中,我们需要经常进行一些监控和管理维护工作,以便能及时发现一些复制中的问题,并尽快解决,以此来保证复制能够正常工作 1.查看从库状态 MySQL [(none)]> show slave ...

  9. CSS布局(三) 布局模型

    布局模型 在网页中,元素有三种布局模型:1.流动模型(Flow) 默认的2.浮动模型 (Float)3.层模型(Layer) 1.流动模型(Flow) 流动(Flow)模型是默认的网页布局模式.也就是 ...

  10. C# MVC 使用 CKEditor图片上传 提示“不正确的服务器响应”

    重点:看一下你使用的CKEditor版本 过程: 后台需要一款富文本编辑器.经过挑选后,最后选择了FCKEditor 的升级版 CKEditor .在官网下载了4.10.1版本. 经过一番配置后,富文 ...