小R的棋子
小R的棋子(dp)
数轴上有 n 个位置可以摆放棋子,标号为1,2,3...n。小 R 现在要在一些位置摆放棋子,每个位置最多摆放一个棋子,摆放棋子的总数没有限制。小 R 不希望他摆放的棋子过于拥挤,因此他给出了个限制条件,第个限制条件要求在li和ri之间不能摆放 3 个或 3 个以上的棋子。现在小 R 想知道有多少种摆放棋子的方案满足所有的限制条件。1<=n, m<=300。
这道题是dp。首先写出方程:\(与不在一个约束中f[i][j]=\sum f[j][k]\ \ (k与i不在一个约束中)\)。i表示倒数第一个棋子放在哪,j,k表示倒数第二第三个。40分做法是\(O(n^3m)\),也就是\(O(m)\)判断k是否与m在同一个约束中。满分做法是先用\(O(nm)\)与预处理出第i个位置的棋子,在那个位置开始不冲突。这样算法就变成\(O(nm+n^3)\)了。
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=500, INF=1e9, mod=1000000007;
int n, m, ans, pre[maxn], l1[maxn], l2[maxn];
int f[maxn][maxn];
int main(){
scanf("%d%d", &n, &m);
for (int i=0; i<m; ++i)
scanf("%d%d", &l1[i], &l2[i]);
fill(pre, pre+maxn, INF);
for (int i=1; i<=n; ++i) for (int j=0; j<m; ++j)
if (l1[j]<=i&&l2[j]>=i) pre[i]=min(pre[i], l1[j]);
for (int i=0; i<=n; ++i) f[i][0]=1;
for (int i=0; i<=n; ++i)
for (int j=0; j<i; ++j){
for (int k=0; k<j; ++k)
if (pre[i]>k) f[i][j]=(f[i][j]+f[j][k])%mod;
ans=(ans+f[i][j])%mod;
}
printf("%d", ans+1); //不放没统计过
return 0;
}
小R的棋子的更多相关文章
- 【BZOJ】【3280】小R的烦恼
网络流/费用流 和软件开发那题基本相同,只是多加了一个“雇佣研究生”的限制:不同价格的研究生有不同的数量…… 那么只需加一个附加源点,对每一种研究生连边 S->ss 容量为l[i],费用为p[i ...
- BZOJ3280: 小R的烦恼
题解: 随便建一下图费用流就可以过吧... 代码: #include<cstdio> #include<cstdlib> #include<cmath> #incl ...
- BZOJ 3280: 小R的烦恼 & BZOJ 1221: [HNOI2001] 软件开发
3280: 小R的烦恼 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 399 Solved: 200[Submit][Status][Discuss ...
- 洛谷 U2878 小R的分数比赛(fraction)
题目提供者 2015c07 标签 数论(数学相关) 高精度 难度 尚无评定 通过/提交 0/29 提交该题 记录 题目背景 P5难度系数:★★★☆☆ 小R再次挑战你. 这次的挑战又会是什么呢? 题目描 ...
- 【BZOJ3280】小R的烦恼 最小费用最大流
[BZOJ3280]小R的烦恼 Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要求小R帮助他一起解决一个难题. 问题是这样的 ...
- bzoj3280: 小R的烦恼(最小费用最大流)
Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要 求小R帮助他一起解决一个难题.问题是这样的,程设老师最近要进行一项邪恶的实 ...
- bzoj 3280: 小R的烦恼 费用流
题目: Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要求小R帮助他一起解决一个难题. 问题是这样的,程设老师最近要进行一项 ...
- 【bzoj3280】小R的烦恼 费用流
题目描述 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要求小R帮助他一起解决一个难题. 问题是这样的,程设老师最近要进行一项邪恶的实验来证明P=N ...
- 小R与手机
Description 小R有n部手机,为了便于管理,他对一些手机设置了"呼叫转移"的功能. 具体来说,第 i(1≤i≤n) 部手机有个参数 ai(0≤ai≤n,ai≠i) .若 ...
随机推荐
- node.js+express+jade系列一:session的使用
此出只介绍内存session的配置好使用 1:打开app.js文件,添加下面红色内容,一定要注意位置在router前面 app.use(express.methodOverride()); sessi ...
- python3与Redis连接操作
Python3之redis使用 简介 redis是一个key-value存储系统,和Memcache类似,它支持存储的value类型相对更多,包括string(字符串),list(链表),set( ...
- 一个很有参考意义的unity博客
http://blog.csdn.net/lyh916/article/details/45133101
- 常用的Hql语句(转)
原文地址:http://blog.csdn.net/v123411739/article/details/28644007 尊重原创,请访问原文地址 // HQL: Hibernate Que ...
- JavaUtil_02_二维码的生成与解析
1.引入jar包 zxing-core-1.7.jar : http://viralpatel.net/blogs/download/jar/zxing-core-1.7.jar zxing-j ...
- JdbcUtils针对事务问题作出的第三次修改
DAO中的事务 其实在DAO中处理事务真的是“小菜一碟” try{ con.commit(); }catch(Exception e){ con.rollback(); } 但是dao层中只能是对账户 ...
- struts2--Basic(一)
Struts是流行和成熟的基于MVC设计模式的WEB应用程序框架. 帮助我们减少在运用MVC设计模式来开发Web应用的时间. 1.下载添加jar包 2. 准备配置文件 web.xml <filt ...
- 08 - Django应用第五步
1 自动测试 自动测试与测试的不同在于, 自动测试的测试工作是交给系统完成的 测试也有分类和级别, 有的用于一些细微的细节, 有的是针对整个软件整体 测试会保证一些看起来正常运行的功能在实际的多种情况 ...
- PS 滤镜——水波 water wave
%%%% Water wave %%%% 制作水波效果 clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image Process ...
- 【二叉树的递归】06填充每个节点中的下一个正确的指针【Populating Next Right Pointers in Each Node】
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 给定一个二叉树 struct Tr ...