【问题描述】

有n个人坐成一排,这n个人都在某一个小组中,同一个小组的所有人所坐的位置一定是连续的。

有一个记者在现场进行采访,他每次采访都会询问一个人其所在的小组有多少人,被询问的每个人都给出了正确的答案,但是由于时间仓促,记者不一定询问了每个人,我们记录一个长度为n的答案序列,序列的第i个数表示第i个人的回答,如果为0则表示记者没有询问过这个人。

记者发现,对于一些情况,他可以唯一确定这排所有人的分组,而对于另外一些情况则不能,于是记者开始好奇,对于某一个答案序列,他能不能做到这一点,如果能的话输出1,否则输出0。

【输入格式】

第一行一个正整数T,表示数据组数。

接下来T组数据,每组数据第一行一个正整数n,表示人数,接下来一行n个非负整数表示答案序列,数据保证至少有一种分组方式能生成该答案序列。

【输出格式】

对于每一组测试数据输出一行一个数(0或1),表示答案。

【输入样例】
4
5
0 2 3 0 0
3
0 2 0
6
3 0 0 0 0 3
6
0 0 3 3 0 0
【输出样例】
1
0
1
0
【数据规模与约定】

对于20%的数据,有1<=n<=15,

对于50%的数据,有1<=n<=100,

对于100%的数据,有1<=n<=1000,1<=T<=50,输入数据中每个答案序列一定由某一组合法的座位分配方案生成。

题目分析

这道题让我产生了topsort的冲动。然后我成功的证明了我是个傻逼。这一题不难,但是很难想出来。从一个残缺的数列里面确定一个数列。我们注意到了key number就是不是零的数,如果当前的数字不同,我们就得出是两个不同的小组,如果相同,不能得到这个结论。如果我们找到的数字恰好把中间的空余部分填满,我们就从前一个地方更新答案。所以用一个数组来记录到i为止出现的可能排列,暴力枚举转移方程即可,

#include<bits/stdc++.h>
using namespace std;
#define RE register int
#define N 1001
#define IL inline
int T,n,a[N],f[N];
signed main(){
freopen("group.in","r",stdin),freopen("group.out","w",stdout);
cin>>T;
while(T--){
cin>>n;
for (RE i=;i<=n;++i) cin>>a[i];
memset(f,,sizeof f),f[]=;
for (RE i=;i<=n;++i){
for (RE x=,j=i;j;--j){
if (a[j]){
if (x&&a[j]^x) break;
x=a[j];
}if (!x||i-j+==x)
if ((f[i]=min(,f[j-]+f[i]))==) break;
}
}
if (f[n]==) cout<<<<"\n";
else cout<<<<"\n";
}
}

代码说明

f[0]=1,这个不要忘记了啊。有两种ker number或者是不能填坑就不更新,否则我们更新答案,只有0,1,2这些可能。

我经过详细的调查后,得到了结论。我们班的一对小情侣因为太招摇被家长发现了,然后他们改用手机交流,变成了地下党没人知道。才谈了半年就要分了,如果女方会写函数式可持久化区间查找区间修改的线段式高级树形数据结构,他们就知道这个要持久化。

读者:尼玛,说主席树会死啊。

我:下回分解。。。

【FZSZ2017暑假提高组Day1】确定小组的更多相关文章

  1. 【FZSZ2017暑假提高组Day1】华容道游戏

    [问题描述] 华容道是一种有趣的滑块游戏,大概是下面这个样子的. 游戏局面由一个2*2的曹操滑块,五个2*1的蜀将滑块(横竖是不定的).四个1*1的小兵滑块以及两个空的位置构成,玩家需要利用空的位子移 ...

  2. 【FZSZ2017暑假提高组Day1】最大矩形

    [问题描述] 现在有n个宽度为1的矩形按如下图(左边的)所示的方式排在了一起: 用肉眼容易看出,在左图内部面积最大的矩形如右图绿色部分所标注. 现在我们考虑将其中一些宽度为1的矩形取出,按照原顺序再次 ...

  3. 【FZSZ2017暑假提高组Day2】圆盘时钟

    [问题描述] 作为出题人的小Z相信大家对上图这样的圆盘时钟都不会陌生——在理想圆盘时钟上,秒针每一分钟转一圈,分针每一小时转一圈,时针每12小时转一圈,它们均是匀速转动的,在0点时三条针均指向表盘上的 ...

  4. luogu1003铺地毯[noip2011 提高组 Day1 T1]

    题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...

  5. 18/9/9牛客网提高组Day1

    牛客网提高组Day1 T1 中位数 这好像是主席树??听说过,不会啊... 最后只打了个暴力,可能是n2logn? 只过了前30%  qwq #include<algorithm> #in ...

  6. Noip2011 提高组 Day1 T1 铺地毯 + Day2 T1 计算系数

    Day1 T1 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小 ...

  7. Noip2011 提高组 Day1 T3 Mayan游戏

    题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是指在规定 ...

  8. GZOJ 1361. 国王游戏【NOIP2012提高组DAY1】

    国王游戏[NOIP2012提高组DAY1] Time Limit:1000MS Memory Limit:128000K Description 国王游戏(game.cpp/c/pas) [问题描述] ...

  9. 暑假提高组集训Day1 T1

    说实话,今天的题真的有点难! ~备受打击~ 我们先来看一看第一题吧 看起来好像不太简单,其实并不难 下面来提供两种方法吧 1.做法一 //签到题 /* 那么这一题就是告诉你n个点的坐标,把它们分别放到 ...

随机推荐

  1. python自学第12天 模块定义,导入,内置模块

    1.定义模块:用来从逻辑上组织python代码(实现一个功能),本质是.py结尾的python 包:本质就是一个目录(必须带有一个_init_.py文件)2.导入方法import module_nam ...

  2. 神州数码静态路由及直连网段引入到RIP协议配置(路由重定向)

    实验要求:掌握静态路由及直连网段引入协议当中的配置 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface g0/6 进入端口 i ...

  3. shell命令记录

    1. 过滤注释和空行 cat /etc/rsyslog.conf|grep -v "#"  |  grep -v "^$" 2. flume日志采集: for ...

  4. Linux跨服务器发送文件

    在要发送的文件所在的目录下,输入下列命令 第一种: scp -r test.jar root@127.0.0.1:$(pwd)/test.jar 其中root为服务器账户名,127.0.0.1为要发送 ...

  5. jq实时监测输入框内容改变

    $(document) .on('input propertychange','#telInput',function (e) { if (e.type === "input" | ...

  6. java-Set集合、HashSet集合、LinkedHashSet集合和TreeSet集合

    1.Set集合,无索引,不可以重复,无序(存取不一致) public class Demo { public static void main(String[] args) { //demo1(); ...

  7. uniq的坑坑

    很久没有做过文本统计之类的操作了,今天有点任务弄一下,幸亏机智的我列出了全部看了一遍,发现uniq的时候还是有重复的,然后总结了一下 假如我有1.txt这个文本: 10.0.0.1 10.0.0.1 ...

  8. Hanlp1.7版本的新增功能一览

    Hanlp1.7版本在去年下半年的时候就随大快的DKH1.6版本同时发布了,截至目前1.7大版本也更新到了1.7.1了.本篇分别就1.7.0和1.7.1中新增的功能做一个简单的汇总介绍. HanLP ...

  9. 【转】使用VisualStudio完成自动化C++代码生成和编译工作(GacUI)

    使用VisualStudio完成自动化C++代码生成和编译工作(GacUI)     GacUI终于进入制作dll的阶段了.昨天上传了一个新的工程,在Vczh Library++3.0(E:\Code ...

  10. linux--切换ipython解释器到python3

    Ipython修改为python3解释器: which ipython --得到路径 cat 路径--查看执行的解释器版本 sudo gedit 路径--修改解释器版本为python3 保存即可,保存 ...