考虑每一个圆即对应于区间$[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. 9.亿级流量电商系统JVM模型参数预估方案

    1. 需求分析 大促在即,拥有亿级流量的电商平台开发了一个订单系统,我们应该如何来预估其并发量?如何根据并发量来合理配置JVM参数呢? 假设,现在有一个场景,一个电商平台,比如京东,需要承担每天上亿的 ...

  2. 使用mobaXtrem显示CentOS图形

    安装环境 yum install -y xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 \mesa-l ...

  3. selenium 4.0 发布

    我们非常高兴地宣布Selenium 4的发布.这适用于Java..net.Python.Ruby和Javascript.你可以从你最喜欢的包管理器或GitHub下载它! https://github. ...

  4. iOS自动化之WDA(WebDriverAgent)安装

    1.WDA介绍 WebDriverAgent 在 iOS 端实现了一个 WebDriver server ,借助这个 server 我们可以远程控制 iOS 设备.你可以启动.杀死应用,点击.滚动视图 ...

  5. 初探webpack之从零搭建Vue开发环境

    初探webpack之搭建Vue开发环境 平时我们可以用vue-cli很方便地搭建Vue的开发环境,vue-cli确实是个好东西,让我们不需要关心webpack等一些繁杂的配置,然后直接开始写业务代码, ...

  6. Upload-labs通关指南(下) 11-20

    承接上篇,这次我们继续做下半部分. 有些题目有其他做法是针对于windows系统特性的,并不能在linux上奏效,因此不在考虑范围之内. Pass-11 制作图片马直接上传 copy a.jpg /a ...

  7. JDK中的SPI机制

    前言 最近学习类加载的过程中,了解到JDK提供给我们的一个可扩展的接口:java.util.ServiceLoader, 之前自己不了解这个机制,甚是惭愧... 什么是SPI SPI全称为(Servi ...

  8. 谜语人队 Scrum Meeting 博客汇总

    项目 内容 课程主页 2021春季软件工程(罗杰 任健) 作业要求地址 Alpha阶段:团队项目-每日例会报告Beta阶段:团队项目-每日例会报告 团队博客主页 谜语人队 一.Alpha阶段 第一次例 ...

  9. Request failed with status code 500以及自引用循环Self referencing loop detected for property ‘xx‘ with type

    错误Error: Request failed with status code 500 ,调试前端没问题,后端也没问题,还报错"连接超时" 在Network中找到错误Self r ...

  10. Seata整合SpringBoot和Mybatis

    Seata整合SpringBoot和Mybatis 一.背景 二.实现功能 三.每个服务使用到的技术 1.账户服务 2.订单服务 四.服务实现 1.账户服务实现 1.引入jar包 2.项目配置 3.建 ...