考虑每一个圆即对应于区间$[x_{i}-r_{i},x_{i}+r_{i}]$,可以看作对于每一个区间,要求所有右端点严格比其小的区间不严格包含左端点

用$f_{i}$表示仅考虑右端点不超过$i$的区间的方案数,分为两类:

1.第$i$个节点不作为右端点,即$f_{i-1}$;

2.第$i$个节点作为右端点,也就是说可以产生$[i-2r,i]$这些区间($1\le r\le 5$),且这些区间是可以同时产生的,只需要记录是否存在一个区间严格包含$i-2r$即可(包含即不合法)

(特别的,对于$i>n$时,需要保证$i-r\le n$)

状压即可,时间复杂度为$o(2^{9}n)$(关于以$i$为右端点的区间可以$o(5)$去计算,只关心于最大的区间以及比他小且可以任意确定的区间)

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 1005
4 #define mod 1000000007
5 int n,m,x,r,ans,v[N][11],f[N][N];
6 int main(){
7 scanf("%d%d",&n,&m);
8 for(int i=1;i<=m;i++){
9 scanf("%d%d",&x,&r);
10 v[x+r][r]=1;
11 }
12 f[0][0]=1;
13 for(int i=1;i<=n;i++)
14 for(int j=0;j<(1<<9);j++){
15 bool flag=0;
16 for(int k=1;k<=5;k++)
17 if ((v[i][k])&&(j&(1<<2*k-2))){
18 flag=1;
19 break;
20 }
21 if (flag)continue;
22 int mx=0,tot=0;
23 for(int k=1;k<=5;k++)
24 if (v[i][k])mx=k;
25 for(int k=1;k<=mx;k++)
26 if ((!v[i][k])&&((j&(1<<2*k-2))==0))tot++;
27 int jj=((j<<1)&((1<<9)-1));
28 if (!mx){
29 f[i][jj]=(f[i][jj]+f[i-1][j])%mod;
30 mx=1;
31 }
32 for(int k=mx;k<=min(i/2,5);k++)
33 if ((j&(1<<2*k-2))==0){
34 f[i][jj|((1<<2*k-1)-1)]=(f[i][jj|((1<<2*k-1)-1)]+(1LL<<tot)*f[i-1][j])%mod;
35 if (!v[i][k])tot++;
36 }
37 }
38 for(int i=0;i<(1<<9);i++)ans=(ans+f[n][i])%mod;
39 printf("%d",ans);
40 }

[gym102832J]Abstract Painting的更多相关文章

  1. 【英语魔法俱乐部——读书笔记】 1 初级句型-简单句(Simple Sentences)

    第一部分 1 初级句型-简单句(Simple Sentences):(1.1)基本句型&补语.(1.2)名词短语&冠词.(1.3)动词时态.(1.4)不定式短语.(1.5)动名词.(1 ...

  2. abstract与interface之房祖名张默版

    最近把java基础知识拿出来看看,看到abstract与interface的时候,觉得有点模糊,好像面试官也喜欢问这个问题.我在百度了查了好长时间,觉得讲算比较清楚的是那篇讲 Door,然后想要带个报 ...

  3. [Erlang 0111] Erlang Abstract Format , Part 2

       上回书,我们说到飞天玉虎蒋伯芳来到蜈蚣岭,不是,重来,上回咱们说到可以在Erlang Shell里面手工构造,加载并调用一个模块.在那个demo里面,我把多个Form单独生成出来,最后放在一起做 ...

  4. [Erlang 0110] Erlang Abstract Format , Part 1

    Erlang Abstract Format并不难懂,只是枯燥一点罢了,如果把Abstract Format的文档翻译出来,其实就是Erlang教科书中语法入门的部分. Erlang Abstract ...

  5. C#中Abstract和Virtual的区别

    c# 中 Abstract和Virtual比较容易混淆,都与继承有关,并且涉及override的使用.下面讨论一下二者的区别: 一.Virtual方法(虚方法) virtual 关键字用于在基类中修饰 ...

  6. Java Abstract Class & Interface

    一. 抽象类 1. 抽象类:包含了一个抽象方法的类就是抽象类 2. 抽象方法:声明而未被实现的方法,用关键字abstract声明 3. 抽象类被子类继承,子类(如果不是抽象类)必须重写(overrid ...

  7. java关键字extends(继承)、Supe(父类引用空间)、 This(方法调用者对象)、Instanceof(实例类型-判断对象是否属于某个类)、final(最终)、abstract(抽象) 、interface(接口)0

    java 继承使用关键字extends   继承的作用:减少代码量,优化代码 继承的使用注意点: 1子类不能继承父类的私有变量 2.子类不能继承父类的构造方法 3.子类在调用自己的构造方法时 会默认调 ...

  8. abstract与interface的区别

    abstract的用法: //通过abstract 关键字修饰的类叫抽象类. abstract class Animal { String name; String color; abstract p ...

  9. Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息

    Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息 http://www.cnblogs.com/zhwx/archive/2012/08/28/266055 ...

随机推荐

  1. DL4J实战之四:经典卷积实例(GPU版本)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. 题解 CF833D Red-Black Cobweb

    题目传送门 题目大意 给出一个 \(n\) 个点的树,每条边有边权和颜色 \(0,1\) ,定义一条链合法当且仅当 \(0,1\) 颜色的边数之比小于等于 \(2\) ,求所有合法的链的边权之积的积. ...

  3. 枚举类型(enum)

    关于枚举 枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性.安全 ...

  4. Apache Common-collection 反序列化利用链解析--TransformedMap链

    Apache Common-collection 反序列化利用链解析 TransformedMap链 参考Java反序列化漏洞分析 - ssooking - 博客园 (cnblogs.com) poc ...

  5. python 类方法 静态方法

    属性: 公有属性  (属于类,每个类一份) 普通属性  (属于对象,每个对象一份) 私有属性    (属于对象,跟普通属性相似,只是不能通过对象直接访问) 方法:(按作用) 构造方法 析构函数 方法: ...

  6. 【机器学习基础】逻辑回归——LogisticRegression

    LR算法作为一种比较经典的分类算法,在实际应用和面试中经常受到青睐,虽然在理论方面不是特别复杂,但LR所牵涉的知识点还是比较多的,同时与概率生成模型.神经网络都有着一定的联系,本节就针对这一算法及其所 ...

  7. 《JavaScript DOM编程艺术》:innerHTML

    来源:第七章 动态创建标记 innerHTML: 1.HTML页面建立空白div: <div id="testdiv"> </div> <script ...

  8. 什么是关系图 (ERD)?

    首先,什么是实体关系图? 实体关系图,也称为ERD,ER图或ER模型,是一种用于数据库设计的结构图.一个ERD包含不同的符号和连接器,它们可视化两个重要信息:系统范围内的主要实体,以及这些实体之间的相 ...

  9. 类图示例-订单系统 / Class Diagram - Order System

    类图示例-订单系统 / Class Diagram - Order System 什么是类图? 类图通过显示它的类和它们之间的关系来概述系统.类图是静态的 - 它们显示交互的内容,但不显示交互时会发生 ...

  10. 穿点最多的直线 牛客网 程序员面试金典 C++

    穿点最多的直线 牛客网 程序员面试金典 C++ 题目描述 在二维平面上,有一些点,请找出经过点数最多的那条线. 给定一个点集vectorp和点集的大小n,没有两个点的横坐标相等的情况,请返回一个vec ...