TYM 有 nn 本作业,编号为 1,\dots,n1,…,n。

由于 \mathrm{TYM}TYM 很喜欢偷懒,而且不喜欢消耗脑细胞,所以他选择跳着完成这 nn 本作业。
此外,如果将做作业的顺序转换为 1,\dots,n1,…,n 的一个排列,并以序列 ss 表示,有以下规定:

  1. 最终 \forall i \in [1,n-1],a_{s_i} \leq a_{s_{i+1}}∀i∈[1,n−1],asi​​≤asi+1​​。

  2. 每次做作业时,对于最后一本做完的作业 ii 和下一本准备做的作业 jj,编号为 i,ji,j 之间的作业中,没有做的作业数量 \le b_i≤bi​。

求满足以上条件的情况下,\mathrm{TYM}TYM 做完所有作业的方案数对 49210574921057 取模的结果。

输入输出格式

输入格式:

第一行,一个整数 nn。
第二行,nn 个整数 a_iai​。
第三行,nn 个整数 b_ibi​。

输出格式:

一行,方案数对 49210574921057 取模的结果。

输入输出样例

输入样例#1:

5
2 4 5 10 6
1 1 2 1 1
输出样例#1:

1
题解:把每个状态压成二进制,进行搜索,搜索下一个满足两个条件的作业,注意,dfs最好只进去一遍,初始化b[0]=maxlongint,所有第一次做的作业会被都搜到(1000,0100,0010,0001);
ps:对于复杂的条件,为了更好理解,建议写在dfs主程序外,独立成函数
 var
n,i,ans:longint;
a,b:array[..]of longint;
function min(x,y:longint):longint;
begin
if x>y then exit(y) else exit(x);
end;
function max(x,y:longint):longint;
begin
if x>y then exit(x) else exit(y);
end; function pd(l,r,t:longint):longint;
var tot:longint;
begin
tot:=;
for i:=l+ to r- do
begin
if t and (<<(i-))= then inc(tot);
end;
exit(tot);
end;
procedure dfs(x,t:longint);
var i:longint;
begin
if t=(<<n)- then
begin
ans:=(ans+)mod ;
exit;
end;
for i:= to n do
begin
if t and(<<(i-))= then
if (a[i]>=a[x])and(pd(min(i,x),max(i,x),t)<=b[x]) then
dfs(i,t+(<<(i-)));
end;
end;
begin
readln(n);
for i:= to n do read(a[i]);
readln;
for i:= to n do read(b[i]);
{for i:=1 to n do
begin dfs(i,1<<(i-1));
end;}
b[]:=maxlongint;
dfs(,);
writeln(ans);
end.

状压搜索 洛谷T47092 作业的更多相关文章

  1. 洛谷T47092 作业_简单状压动归

    只要注意一下细节就毫无难点了,简简单单状态压缩即可. Code: #include<cstdio> #include<algorithm> using namespace st ...

  2. HDU 5025 (BFS+记忆化状压搜索)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5025 题目大意: 迷宫中孙悟空救唐僧,可以走回头路.必须收集完钥匙,且必须按顺序收集.迷宫中还有蛇, ...

  3. CF1042B 【Vitamins】(去重,状压搜索)

    由题意,我们其实会发现 对于每一种果汁,其对应的状态只有可能有7种 VA​ VB​ VC​ VA+VB​ VA+VC​ VB+VC​ VA+VB+VC 这道题就大大简化了 我们把所有果汁都读进来 每种 ...

  4. 洛谷 P3959 NOIP2017 宝藏 —— 状压搜索

    题目:https://www.luogu.org/problemnew/show/P3959 搜索: 不是记忆化,而是剪枝: 邻接矩阵存边即可,因为显然没有那么多边. 代码如下: #include&l ...

  5. 洛谷P4337 [ZJOI2018]线图(状压+搜索+乱搞)

    题面 传送门 题解 妈呀调了我整整一天-- 题解太长了不写了可以去看\(shadowice\)巨巨的 //minamoto #include<bits/stdc++.h> #define ...

  6. HDU 1429 (BFS+记忆化状压搜索)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1429 题目大意:最短时间内出迷宫,可以走回头路,迷宫内有不同的门,对应不同的钥匙. 解题思路: 要是 ...

  7. 树状数组【洛谷P3586】 [POI2015]LOG

    P3586 [POI2015]LOG 维护一个长度为n的序列,一开始都是0,支持以下两种操作:1.U k a 将序列中第k个数修改为a.2.Z c s 在这个序列上,每次选出c个正数,并将它们都减去1 ...

  8. 模板:二维树状数组 【洛谷P4054】 [JSOI2009]计数问题

    P4054 [JSOI2009]计数问题 题目描述 一个n*m的方格,初始时每个格子有一个整数权值.接下来每次有2种操作: 改变一个格子的权值: 求一个子矩阵中某种特定权值出现的个数. 输入输出格式 ...

  9. poj1753 bfs+奇偶性减枝//状压搜索

    http://poj.org/problem?id=1753 题意:有个4*4的棋盘,上面摆着黑棋和白旗,b代表黑棋,w代表白棋,现在有一种操作,如果你想要改变某一个棋子的颜色,那么它周围(前后左右) ...

随机推荐

  1. 对std::map进行排序

    1.对Key排序. std::map的第三个参数即为对key进行排序的比较函数.默认为less,表示升序.如果要降序,可以改为greater. 2.对Value排序 不支持,因为map不是一个序列的容 ...

  2. Springmvc 进行数据类型转换

    SpringMVC进行一些常用的数据类型转换,这里以Date 数据类型的转换为例. SpringMVC表单中输入日期,一般都是以字符串的形式输入,如何将字符形式的日期转换为Date 类型的呢?这里只需 ...

  3. AWESOME SWIFT-swift.libhunt.com-swift类库网站

    https://swift.libhunt.com/categories/688-events 29 Events libraries and projects ORDERED BY POPULARI ...

  4. 2018 Multi-University Training Contest 3 Problem F. Grab The Tree 【YY+BFS】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6324 Problem F. Grab The Tree Time Limit: 2000/1000 MS ...

  5. Integer类小细节随笔记录

    先看一段简单的代码: Integer v1 = Integer.valueOf(12); Integer v2 = Integer.valueOf(12); Integer v3 = Integer. ...

  6. eclipse 设置字体大小

    步骤: 1.打开eclipse,在工具栏里找到 Window -> Perferences,打开如下图: 2.展开General -> Appearance -> Colors an ...

  7. 手工检测SQL注入(安全性测试)

    手动你的ASP站可否注入: http://127.0.0.1/xx?id=11 and 1=1 (正常页面) http://127.0.0.1/xx?id=11 and 1=2 (出错页面) 检测表段 ...

  8. Many-to-many relationships in EF Core 2.0 – Part 2: Hiding as IEnumerable

    In the previous post we looked at how many-to-many relationships can be mapped using a join entity. ...

  9. Oracle创建聚簇表

    创建聚簇表过程: 创建簇(cluster)----创建簇表(基本类似创建一般表但有区别)----创建簇索引(index)----数据管理 创建簇: create cluster stu_ach(sid ...

  10. jQuery入门简单实现反选与全选

    //html代码<input type="checkbox" id= 'all' value="全选"> 选择全部 一键上路 <input t ...