Wooden Signs

题目链接:

http://acm.hust.edu.cn/vjudge/contest/127406#problem/E

Description


http://7xjob4.com1.z0.glb.clouddn.com/0f10204481da21e62f8c145939e5828e

Input


The input file contains several test cases, each of them as described below.
The first line has one integer N and the second line contains a permutation of the integers from 1
to N + 1. Integers in the same line are separated by a single space.
Constraints:
1 ≤ N

Output


For each test case, the output has a single line with the number (modulo 2
31 − 1 = 2147483647) of
distinct signs that can be described by the given permutation.

Sample Input


5
2 6 5 1 4 3
2
2 3 1
20
3 21 10 15 6 9 2 5 20 13 17 19 14 7 11 18 16 12 1 8 4

Sample Output


6
1
1887


##题意:

木匠要做N个路标并把它们钉在一起(如图).
每个路标可以朝左也可以朝右,但是每个路标的起点要跟下一层路标的起点或终点重合. 重合位置必须有面积覆盖,不能像231右图那种只重合一个点.
现在他不记得这些路标各自的朝向了. 但是他记得N+1个值,其中第i个值是第i个路标的起点坐标. (第N+1为最后一块的终点).
求可能满足条件的路标有多少种情况. (区别在于各自的朝向)(第一块路标一定朝右)


##题解:

考虑每块路标的终点:
若第i块路标的坐标区间为[L, R], 第i+1块路标的终点为Xi+1.
那么基于第i块路标来摆放第i+1块的方式有两种:
①第i+1块的起点在L处(朝右). 这要求 Xi+1 > L .
②第i+1块的起点在R处(朝左). 这要求 Xi+1

##代码:
``` cpp
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
#define eps 1e-8
#define maxn 2016
#define mod 2147483647LL
#define inf 0x3f3f3f3f
#define mid(a,b) ((a+b)>>1)
#define IN freopen("in.txt","r",stdin);
using namespace std;

LL dp[maxn][2][maxn];

int n, arrow[maxn];

int main(int argc, char const *argv[])

{

//IN;

while(scanf("%d", &n) != EOF)
{
int leftmost; scanf("%d", &leftmost);
for(int i=1; i<=n; i++)
scanf("%d", &arrow[i]);
memset(dp, 0, sizeof(dp)); dp[1][0][leftmost] = 1;
for(int i=1; i<n; i++) {
for(int j=1; j<=n+1; j++) {
if(dp[i][0][j]) {
if(arrow[i+1] > j) dp[i+1][0][j] = (dp[i+1][0][j] + dp[i][0][j]) % mod;
if(arrow[i+1] < arrow[i]) dp[i+1][1][arrow[i]] = (dp[i+1][1][arrow[i]] + dp[i][0][j]) % mod;
}
if(dp[i][1][j]) {
if(arrow[i+1] < j) dp[i+1][1][j] = (dp[i+1][1][j] + dp[i][1][j]) % mod;
if(arrow[i+1] > arrow[i]) dp[i+1][0][arrow[i]] = (dp[i+1][0][arrow[i]] + dp[i][1][j]) % mod;
}
}
} LL ans = 0;
for(int j=1; j<=n+1; j++) {
ans = (ans + dp[n][0][j]) % mod;
ans = (ans + dp[n][1][j]) % mod;
} printf("%lld\n", ans);
} return 0;

}

UVALive 7276 Wooden Signs (DP)的更多相关文章

  1. UVALive 7276 Wooden Signs

    详细题目见:http://7xjob4.com1.z0.glb.clouddn.com/0f10204481da21e62f8c145939e5828e 思路:记dp[i][j]表示第i个木板尾部在j ...

  2. LightOJ 1033 Generating Palindromes(dp)

    LightOJ 1033  Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...

  3. lightOJ 1047 Neighbor House (DP)

    lightOJ 1047   Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...

  4. UVA11125 - Arrange Some Marbles(dp)

    UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...

  5. 【POJ 3071】 Football(DP)

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

  6. 初探动态规划(DP)

    学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...

  7. Tour(dp)

    Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...

  8. 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)

    .navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...

  9. Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)

    Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...

随机推荐

  1. MyEclipse 常用设置

    1.指定本机java环境 Windows-->preferences-->java-->Insetallel JREs 右侧 单击ADD-->standard VM--> ...

  2. 信息:Could not publish server configuration for Tomcat v6.0 Server at localhost. Multiple Context

    需要把server.xml更正一下,去掉重复的context.或者把整个server文件夹都删掉,重新添加服务器.也可以在server窗口中删除server,再新添加一个server.

  3. 基于XMPP的即时通信系统的建立(二)— XMPP详解

    XMPP详解 XMPP(eXtensible Messaging and Presence Protocol,可扩展消息处理和现场协议)是一种在两个地点间传递小型结构化数据的协议.在此基础上,XMPP ...

  4. bzoj2794

    这题我得到一个经验,bool型的dp一定要想办法把bool去掉来表示更多的东西(1933也是这个道理) 暴力大家都会,这里有两个限制条件 一个限制条件我们可以排序不断加入,另一个呢 我们可以用f[i] ...

  5. 服务器发布MVC常见问题解决方案

    1  问题:IIS上部署MVC网站,打开后500错误:处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块“ManagedPipelin ...

  6. U盘启动格式

    U盘的几种启动模式:USB-HDD.USB-ZIP.USB-HDD+.USB-ZIP+.USB-CDROM 1.  USB-HDD 硬盘仿真模式,DOS启动后显示C:盘,HP U盘格式化工具制作的U盘 ...

  7. 物联网操作系统HelloX开发者入门指南

    HelloX开发者入门指南 HelloX是聚焦于物联网领域的操作系统开发项目,可以通过百度搜索"HelloX",获取详细信息.当前开发团队正在进一步招募中,欢迎您的了解和加入.如果 ...

  8. Java [Leetcode 228]Summary Ranges

    题目描述: Given a sorted integer array without duplicates, return the summary of its ranges. For example ...

  9. H.264学习笔记之一(层次结构,NAL,SPS)

    一 H.264句法 1.1元素分层结构 H.264编码器输出的Bit流中,每个Bit都隶属于某个句法元素.句法元素被组织成有层次的结构,分别描述各个层次的信息. 图1 H.264分层结构由五层组成,分 ...

  10. 【js】js方法中直接跳转到servlet

    function firm_back_state(id,name){ if(confirm("确认返单?")){ location.href="Edit_OrderSer ...