题目链接  Count Arrays

题意  给定$n$和$m$个区间。若一个长度为$n$的$01$序列满足对于每一个给定的区间中至少有一个位置是$0$,

那么这个$01$序列满足条件。求有多少满足条件的$01$序列。

设$f[i]$为考虑到第$i$位的时候,有多少满足条件的$01$序列。

则转移方程为$f[i] = ∑f[j]  (j < i)$,意义为当$f[j]$转移给了$f[i]$时,相当于贡献了$[j+1,i-1]$这段区间都为$1$的方案数。

于是按照题目给定的区间预处理出每个数的转移范围。

显然当$i$递增的时候,在转移范围之内的$j$的最小值是不下降的。

那么就可以通过这个单调性做到$O(n)$了。

#include <bits/stdc++.h>

using namespace std;

#define rep(i, a, b)	for (int i(a); i <= (b); ++i)
#define dec(i, a, b) for (int i(a); i >= (b); --i) const int N = 1e5 + 10;
const int mod = 1e9 + 7; int n, m;
int c[N], f[N];
int now, cnt; int main(){ scanf("%d%d", &n, &m); rep(i, 1, m){
int x, y;
scanf("%d%d", &x, &y);
c[y + 1] = max(c[y + 1], x);
} f[now = 0] = cnt = 1; rep(i, 1, n + 1){
while (now < c[i]) cnt = (cnt - f[now++] + mod) % mod;
f[i] = cnt;
(cnt += f[i]) %= mod;
} printf("%d\n", f[n + 1]);
return 0;
}

CS Academy Round #65 Count Arrays (DP)的更多相关文章

  1. CS Academy Gcd on a Circle(dp + 线段树)

    题意 给你一个长为 \(n\) 的环,你可以把它断成任意 \(k\) 段 \((1 < k \le n)\) ,使得每一段的 \(\gcd\) 都 \(>1\) . 问总共有多少种方案,对 ...

  2. Codeforces Beta Round #13 C. Sequence (DP)

    题目大意 给一个数列,长度不超过 5000,每次可以将其中的一个数加 1 或者减 1,问,最少需要多少次操作,才能使得这个数列单调不降 数列中每个数为 -109-109 中的一个数 做法分析 先这样考 ...

  3. Educational Codeforces Round 51 D. Bicolorings(dp)

    https://codeforces.com/contest/1051/problem/D 题意 一个2*n的矩阵,你可以用黑白格子去填充他,求联通块数目等于k的方案数,答案%998244353. 思 ...

  4. codeforces 1288C. Two Arrays(dp)

    链接:https://codeforces.com/contest/1288/problem/C C. Two Arrays 题意:给定一个数n和一个数m,让构建两个数组a和b满足条件,1.数组中所有 ...

  5. CF1288C-Two Arrays (DP)

    You are given two integers n and m. Calculate the number of pairs of arrays (a,b) such that: the len ...

  6. Codeforces Round #300 Quasi Binary(DP)

    Quasi Binary time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  7. 背水一战 Windows 10 (65) - 控件(WebView): 对 WebView 中的内容截图, 通过 Share Contract 分享 WebView 中的被选中的内容

    [源码下载] 背水一战 Windows 10 (65) - 控件(WebView): 对 WebView 中的内容截图, 通过 Share Contract 分享 WebView 中的被选中的内容 作 ...

  8. 【POJ 3071】 Football(DP)

    [POJ 3071] Football(DP) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4350   Accepted ...

  9. Leetcode 943. Find the Shortest Superstring(DP)

    题目来源:https://leetcode.com/problems/find-the-shortest-superstring/description/ 标记难度:Hard 提交次数:3/4 代码效 ...

随机推荐

  1. DAG上的动态规划——嵌套矩阵问题

    问题描述:有n个矩形,每个矩形可以用两个整数a,b描述,表示它的长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d,或者b<c,a<d(相当于把矩形X旋 ...

  2. North American Invitational Programming Contest (NAIPC) 2016

    (待补) A. Fancy Antiques 爆搜. B. Alternative Bracket Notation C. Greetings! D. Programming Team 0/1分数规划 ...

  3. c++实验5

    设计并实现一个机器宠物类MachinePets #include <iostream> #include <string> using namespace std; class ...

  4. Nodejs-文件流

    1.什么是流? 流是程序输入输出的一个连续的字节序列. 有文件流,网络流,设备(例如鼠标,键盘,磁盘,调制解调器和打印机)的输入输出都是用流来处理的. 任何数据的最根本表现形式都是二进制. 读取文件 ...

  5. Python接口测试之封装requests

    首先安装requests库: pip install requests test_requests.py 首先在TestRequest类中封装get与post方法, import requests i ...

  6. android 内存说明

    MemoryInfo的Field如下 dalvikPrivateDirty: The private dirty pages used by dalvik. dalvikPss :The propor ...

  7. 从零开始到设计Python+Selenium自动化测试框架-如何开始

    如何开始学习web ui自动化测试?如何选择一门脚本语言?选择什么自动化测试工具? 本人已经做测试快5年,很惭愧,感觉积累不够,很多测试都不会,三年多功能测试,最近两年才开始接触和学习自动化测试.打算 ...

  8. 用户注册,登录API 接口

    Controer: <?php /** * @name UserController * @author pangee * @desc 用户控制器 */ class UserController ...

  9. MySql数据库 - 5.用C#连接数据库

    添加 dll 引用,dll 位置:C:\Program Files (x86)\MySQL\Connector NET 8.0\Assemblies\v4.5.2 引入命名空间:MySql.Data. ...

  10. 文件处理.Windows.Fastcopy.3.50.x64.文件复制简体中文破解版(验证版)

    摘要:Fastcopy 3.50 + x64 绿色汉化中文版由知索网汉化发布.Fastcopy 是一款来自日本的最快的文件拷贝工具.磁盘间相互拷贝文件是司空见惯的事情,通常情况都是利用 WINDOWS ...