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. 关于Java中的反射的一个简单使用

    把以前在其他地方的技术文章重新整理一遍, 方便自己回忆, 也方便他人借鉴. 刚工作的时候发过这么一段代码: package cn.com.hanbinit.test; import java.lang ...

  2. Linux Shell 编程 文件转置问题

    给定一个文件 file.txt,转置它的内容. 你可以假设每行列数相同,并且每个字段由 ' ' 分隔. 示例: 假设 file.txt 文件内容如下: name age alice 21 ryan 3 ...

  3. 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件

    “/”应用程序中的服务器错误. 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“c552ea94-6fbb-11d5-a9c1-00104bb6fc1c”. 说明: 执行当前 Web ...

  4. 二十、在Intellij IDEA中使用Debug

    Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化.通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方 ...

  5. 【题解】洛谷P2661 [NOIP2015TG] 信息传递

    题目来源:洛谷P2661 思路 运用并查集查找图中最小环的长度 如果A传递信息给B 就从A加一条边指向B 并更新A的父节点 从A到父节点的路径长度为B到父节点的路径长度+1 如果有两个点的祖先相同而且 ...

  6. 高考结束了,在门头沟有没有想学php建站的。

    教你简单的html 教你文章后台管理 数据库管理及备份 编程工具的使用 如何找到你要学习的内容

  7. waring L16: uncalled segement ----keil

    1.keil中出现waring:uncalled segement 2.waring L16:这个应该是一个waring等级 3.  转载自 wpb3dm 在Keil C中,如果没有显式调用到定义过的 ...

  8. JQuery给一个元素绑定两次点击事件(第二次点击事件)

    由于项目的要求,需要给复选框设置样式,初始样式:,第一次点击的时候显示,第二次点击时候需要改变该样式:. 设计思路: 当点击次数为奇数时显示带有颜色的图片 当点击次数为偶数时显示没有颜色的图片 下边是 ...

  9. H5基本标签

  10. 【译】为什么要写super(props)

    译注: 原文地址 https://overreacted.io/why-do-we-write-super-props/ 正文 我听说Hooks是新的热点.好笑的是,我想通过描述一些关于class组件 ...