UVALive 7276 Wooden Signs
2024-08-31 12:57:09
详细题目见:http://7xjob4.com1.z0.glb.clouddn.com/0f10204481da21e62f8c145939e5828e
思路:记dp[i][j]表示第i个木板尾部在j的方案数。那么对于i+1,可以分三种情况讨论,一种是i+1的头部在第i根整段的左边,一种是在右边,还有在中间,中间的有两种情况,其他都只有一种,然后就可以转移了。
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<string>
#include<algorithm>
using namespace std;
typedef long long ll;
#define inf 99999999
#define pi acos(-1.0)
#define MOD 2147483647
#define maxn 2050
ll a[maxn],dp[maxn][maxn];
int main()
{
ll n,m,i,j,c;
ll l,r;
while(scanf("%lld",&n)!=EOF)
{
scanf("%lld",&c);
for(i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
memset(dp,0,sizeof(dp));
dp[1][c]=1;
for(i=1;i<=n-1;i++){
for(j=1;j<=n+1;j++){
if(dp[i][j]){
l=a[i];r=j;
if(l>r)swap(l,r);
if(a[i+1]<=l){
dp[i+1][r ]=(dp[i+1][r ]+dp[i][j])%MOD;
}
else if(a[i+1]>=r){
dp[i+1][l ]=(dp[i+1][l ]+dp[i][j] )%MOD;
}
else{
dp[i+1][r ]=(dp[i+1][r ]+dp[i][j])%MOD;
dp[i+1][l ]=(dp[i+1][l ]+dp[i][j] )%MOD;
}
}
}
}
ll sum=0;
for(j=1;j<=n+1;j++){
sum=(sum+dp[n][j])%MOD;
}
printf("%lld\n",sum);
}
return 0;
}
最新文章
- Linux内核笔记--内存管理之用户态进程内存分配
- Mongodb 学习笔记
- PHP5.6.15连接Sql Server 2008配置方案
- [转载]SharePoint 2013 解决方案中使用JavaScript
- 标识映射(Identify Map)
- Hibernate中的";Repeated column in mapping for entity";异常
- FFmpeg 协议初步学习
- Eclipse rap 富客户端开发总结(3):rcp/rap目前界面上的一些差异
- OC第二天—封装
- hue报错StructuredException: timed out (code THRIFTSOCKET): None的处理
- 环境变量误删path找回方法与mysql基础命令
- Xeon Phi 《协处理器高性能编程指南》随书代码整理 part 1
- 【Dubbo&;&;Zookeeper】3、Failed to read schema document &#39;http://code.alibabatech.com/schema/dubbo/dubbo.xsd&#39;问题解决方法
- php性能提升与检测
- Django具体操作(三)
- powershell上传证书
- 打包部署到tomcat
- 内部排序比较(Java版)
- 数据结构——栈(C语言实现)
- iosFQ教程