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:

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

  1. 1
    题解:把每个状态压成二进制,进行搜索,搜索下一个满足两个条件的作业,注意,dfs最好只进去一遍,初始化b[0]=maxlongint,所有第一次做的作业会被都搜到(1000010000100001);
    ps:对于复杂的条件,为了更好理解,建议写在dfs主程序外,独立成函数
  1. var
  2. n,i,ans:longint;
  3. a,b:array[..]of longint;
  4. function min(x,y:longint):longint;
  5. begin
  6. if x>y then exit(y) else exit(x);
  7. end;
  8. function max(x,y:longint):longint;
  9. begin
  10. if x>y then exit(x) else exit(y);
  11. end;
  12.  
  13. function pd(l,r,t:longint):longint;
  14. var tot:longint;
  15. begin
  16. tot:=;
  17. for i:=l+ to r- do
  18. begin
  19. if t and (<<(i-))= then inc(tot);
  20. end;
  21. exit(tot);
  22. end;
  23. procedure dfs(x,t:longint);
  24. var i:longint;
  25. begin
  26. if t=(<<n)- then
  27. begin
  28. ans:=(ans+)mod ;
  29. exit;
  30. end;
  31. for i:= to n do
  32. begin
  33. if t and(<<(i-))= then
  34. if (a[i]>=a[x])and(pd(min(i,x),max(i,x),t)<=b[x]) then
  35. dfs(i,t+(<<(i-)));
  36. end;
  37. end;
  38. begin
  39. readln(n);
  40. for i:= to n do read(a[i]);
  41. readln;
  42. for i:= to n do read(b[i]);
  43. {for i:=1 to n do
  44. begin
  45.  
  46. dfs(i,1<<(i-1));
  47. end;}
  48. b[]:=maxlongint;
  49. dfs(,);
  50. writeln(ans);
  51. end.
  1.  

状压搜索 洛谷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. 使用with子句优化代码中重复查询

    /*好处: 1. 性能更好,一份复制(类似SYS_TMP...),多份使用.       2. 结构清晰,预先定义.       3. 代码修改不必修改多处.       请注意观察语句1和语句2执行 ...

  2. Jmeter(一)工具的简单介绍(z)

    一.JMeter介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件,J ...

  3. ZT 针对接口编程而不是针对实现编程

    java中继承用extends 实现接口用 implements 针对接口编程而不是针对实现编程 2009-01-08 10:23 zhangrun_gz | 分类:其他编程语言 老听说这句,不知道到 ...

  4. ZT ---- 给孩子的信(孩子写给爸爸妈妈的信在24、25、26楼)

    胡同口 > 情感 > 婚后空间 > 给孩子的信(孩子写给爸爸妈妈的信在24.25.26楼) 给孩子的信(孩子写给爸爸妈妈的信在24.25.26楼)分享: 腾讯微博 新浪微博 QQ空间 ...

  5. python UI自动化实战记录四:测试页面1-pageobject

    该部分记录测试页面1-IndexPage,所有首页上的元素定位.操作.获取属性等方法都写在该类中. 1 首页类继承自BasePage 2 首页类第一部分写的是所有的定位器 3 首页类第二部分类的方法, ...

  6. 代码大全读书笔记 Part 1

    简单的看了前言,印象最深的还是这本书崇尚"绝不注水"的原则.现实生活中,不仅仅有注水牛肉,瘦肉精的猪肉,很多书籍也是东拼西凑来的内容,不注水的厚书,是十分令人期待的. 第一章:欢迎 ...

  7. CTSC2018 && APIO2018 && SDOI2018R2游记

    Day -? 占个坑先.希望CTSC,APIO别打铁,R2别滚粗QAQ CTSC Day 0 早起坐车睡觉颓废报道颓废 反正游记就是咕懒得写了 Day 1 早上四点被xp的闹钟吵醒(???还两次) 幸 ...

  8. 搭建nlp_server服务器

    这是文档 如何启动斯坦福NLP-Service 1.sudo apt-get install gearman-job-server安装gearman-server 2.启动gearman服务: gea ...

  9. 转发forward和重定向redirect的区别

    本质区别:转发只发送一次请求,重定向发送两次请求. 转发: request.getRequestDispatcher("/HiServlet").forward(request,r ...

  10. UglifyJS 压缩选项

    UglifyJS 压缩选项 1.使用逗号运算符连接简单语句 2.使用点符号代替中括号属性     foo [“bar”]→foo.bar 3.删除逻辑上走不到的代码 4.删除调试代码    debug ...