Gym - 101128E Wooden Signs DP
题目大意:
一共n块木板,前两个数给出最底下木块的两个端点,后面n-1个数给出第i层的一个固定端点,问你木块的所有放置情况。
分析:
状态:
d[i][j]表示第i个木块,第i-1块木板的未固定端点为j的所有方案数
状态转移:
如果a[i]<=min(j,a[i-1),也就是说固定的那一点在i-1块木板的两个端点的左侧,那么只能有一种情况。d[i][r]=(d[i][r]+d[i-1][j])%mod;
同理,如果a[i]>= max(j,a[i-1)。d[i][l]=(d[i][l]+d[i-1][j])%mod;
如果在中间,那么以上两种情况都要算上
#include <bits/stdc++.h>
using namespace std; typedef long long ll;
const ll mod=2147483647;
const int maxn=2000+5;
int n,a[maxn];
ll d[maxn][maxn]; int main()
{
while(~scanf("%d",&n))
{
for(int i=0; i<=n; i++)
scanf("%d",&a[i]);
memset(d,0,sizeof(d));
d[1][a[0]]=1;
for(int i=2; i<=n; i++)
{
for(int j=1; j<=n+1; j++)
{
int l=min(j,a[i-1]);
int r=max(j,a[i-1]);
if(a[i]<=l)
d[i][r]=(d[i][r]+d[i-1][j])%mod;
else if(a[i]>=r)
d[i][l]=(d[i][l]+d[i-1][j])%mod;
else
{
d[i][r]=(d[i][r]+d[i-1][j])%mod;
d[i][l]=(d[i][l]+d[i-1][j])%mod;
}
}
}
ll ans=0;
for(int j=1; j<=n+1; j++)
ans=(ans+d[n][j])%mod;
printf("%I64d\n",ans);
}
return 0;
}
Gym - 101128E Wooden Signs DP的更多相关文章
- Wooden Signs Gym - 101128E (DP)
Problem E: Wooden Signs \[ Time Limit: 1 s \quad Memory Limit: 256 MiB \] 题意 给出一个\(n\),接下来\(n+1\)个数, ...
- UVALive 7276 Wooden Signs (DP)
Wooden Signs 题目链接: http://acm.hust.edu.cn/vjudge/contest/127406#problem/E Description http://7xjob4. ...
- dp+分类讨论 Gym 101128E
题目链接:http://codeforces.com/gym/101128 感觉这个人写的不错的(我只看了题目大意):http://blog.csdn.net/v5zsq/article/detail ...
- Codeforces Gym 100231L Intervals 数位DP
Intervals 题目连接: http://codeforces.com/gym/100231/attachments Description Start with an integer, N0, ...
- G - Surf Gym - 100819S -逆向背包DP
G - Surf Gym - 100819S 思路 :有点类似 逆向背包DP , 因为这些事件发生后是对后面的时间有影响. 所以,我们 进行逆向DP,具体 见代码实现. #include<bit ...
- Gym 102056I - Misunderstood … Missing - [DP][The 2018 ICPC Asia-East Continent Final Problem I]
题目链接:https://codeforces.com/gym/102056/problem/I Warm sunshine, cool wind and a fine day, while the ...
- Gym - 101147H H. Commandos —— DP
题目链接:http://codeforces.com/gym/101147/problem/H 题解: 单纯的三维DP.可用递推或记忆化搜索实现. 学习:开始时用记忆化搜索写,dp[]初始化为0,结果 ...
- 【每日dp】 Gym - 101889E Enigma 数位dp 记忆化搜索
题意:给你一个长度为1000的串以及一个数n 让你将串中的‘?’填上数字 使得该串是n的倍数而且最小(没有前导零) 题解:dp,令dp[len][mod]为是否出现过 填到第len位,余数为mod 的 ...
- Gym 101201H Paint (离散化+DP)
题意:给定 n 个区间,让你选出一些,使得每个选出区间不交叉,并且覆盖区间最大. 析:最容易想到的先是离散化,然后最先想到的就是 O(n^2)的复杂度,dp[i] = max(dp[j] + a[i] ...
随机推荐
- Linux中find命令用法全汇总,看完就没有不会用的!
Linux中find命令用法全汇总,看完就没有不会用的! 中琦2513 马哥Linux运维 2017-04-10 糖豆贴心提醒,本文阅读时间7分钟 Linux 查找命令是Linux系统中最重要和最 ...
- lambda,filter,map,reduce
# lambda,filter,map,reduce from functools import reduce print('返回一个迭代器') print((x) for x in range(5) ...
- k8s管理机密信息(12)
一.启动应用安全信息的保护 1.Secret介绍 应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 ...
- 04丨MongoDB特色及优势
- linux系统ifconfig中网卡名和网卡配置文件名称不同的解决办法
比如我的配置文件, cd /etc/sysconfig/network-scripts/ifcfg-eth1是这个名称,但是我使用ifconfig显示的信息却是 eth0,很明显这不是我配置文件的名称 ...
- mysql中的实例、数据库关系简介
MySQL是单进程多线程(而Oracle等是多进程),也就是说MySQL实例在系 统上表现就是一个服务进程,即进程(通过多种方法可以创建多实例,再安装一个端口号不同的mysql,或者通过workben ...
- Canvas跟随鼠标炫彩小球
跟随鼠标炫彩小球 canvas没有让我失望,真的很有意思 实现效果 超级炫酷 实现原理 创建小球 给小球添加随机颜色,随机半径 鼠标移动通过实例化,新增小球 通过调用给原型新增的方法,来实现小球的动画 ...
- nginx基础概念
nginx基础概念(100%) connection¶ 在nginx中connection就是对tcp连接的封装,其中包括连接的socket,读事件,写事件.利用nginx封装的connection, ...
- jquery 改变标签样式
jQuery改变标签的样式一般有3种 预置好class,然后通过jQuery改变元素的class名,使用的是addClass.removeClass 直接改变元素的css属性值,这种是通过添加styl ...
- zk客户端及锁的使用
1.生成zk客户端对象 private CuratorFramework buildClient() { logger.info("zookeeper registry center ini ...