【老题未知】排队买票

Description
一个演唱会即将举行,现有 N 个歌迷排队买票,一个人一张,而售票处规定,一个人每次最多买两张,假设买一张票的时间为 Ti ( 1<=i<=N ) , 队伍中相邻的歌迷(第 j 个人和第 j+1 个人)也可以由其中的一个人买两张票的时间为 Ri, 假如 Rj < Ti+Tj+1, 这样做可以缩短后面的歌迷等待的时间,现给出 N , Ti,Rj, 求每个人买到票的最短时间和方法。

Sample Input

1 2 3 4
4 4 5
Sample Output
8

题解:简单的dp啊啊,分两种情况,前面一人A带B买,和前面A不带B买,分别计算时间,求最小即可。

代码如下

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<queue>
using namespace std;
int n,t[10005],r[10005];
int dp[10005];
int main(){
    //freopen("排队买票.in","r",stdin);
    //freopen("排队买票.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&t[i]);
    for(int i=1;i<n;i++)
        scanf("%d",&r[i]);
    dp[1]=t[1];
    for(int i=2;i<=n;i++)
        dp[i]=min(dp[i-1]+t[i],dp[i-2]+r[i-1]);//+t[i];
    printf("%d",dp[n]);
    return 0;
}

原文地址:https://www.cnblogs.com/wuhu-JJJ/p/11133520.html

时间: 2024-10-07 00:31:35

【老题未知】排队买票的相关文章

排队买票

要求:假定总票数是100张        假设 有5个人排队卖票,同一时间只能有一个人买票        票卖出去之后,票数要减少 代码: /** * */ package com.niit.homework; /** * @author: Annie * @date:2016年6月16日 * @description:假定总票数是100张 假设 有5个人排队卖票,同一时间只能有一个人买票 票卖出去之后,票数要减少 */ public class TicketDemo implements Ru

[HZNUOJ1524]排队买票(DP)

题目链接:http://acm.hznu.edu.cn/JudgeOnline/problem.php?id=1524 简单分析后可以知道每一个手持两元的小朋友前面,售票员手里至少有一个一元. 假设dp(i, j)表示当有i个1元和j个2元的时候的排队方法(不重复),那么有: dp(i, j)=∑k[0, j]dp(i-1, k), (i >= j) 题干讲n个人和k个人内部不同位置也算新的排列方法.那么最后要乘上A(k,k)*A(n,n) 1 #include <algorithm>

编程之美之买票找零

题目:假设有2N个人在排队买票,其中有N个人手持50元的钞票,另外有N个人手持100元的钞票,假设开始售票时,售票处没有零钱,问这2N个人有多少种排队方式,不至使售票处出现找不开钱的局面? 分析:队伍的序号标为0,1,...,2n-1,并把50元看作左括号,100元看作右括号,合法序列即括号能完成配对的序列.对于一个合法的序列,第0个一定是左括号,它必然与某个右括号配对,记其位置为k.那么从1到k-1.k+1到2n-1也分别是两个合法序列.那么,k必然是奇数(1到k-1一共有偶数个),设k=2i

电影院买票问题-&gt;排队找钱

问题:有2n个人排队进电影院,票价是50美分.在这2n个人当中,其中n个人只有50美分,另外n个人有1美元(纸票子).愚蠢的电影院开始卖票时1分钱也没有.问:有多少种排队方法使得每当一个拥有1美元买票时,电影院都有50美分找钱 注:1美元=100美分拥有1美元的人,拥有的是纸币,没法破成2个50美分 解析:符合卡特兰数( Catalan数),因此直接可以得出答案:(2n)/(n!*(n+1)!). Catalan数相关:令h(0)=1,h(1)=1: 1.catalan数满足递推式: h(n)=

[BOP][Beauty of Programming][MSRA] 从“买票问题”谈起

问题(买票问题): 在一场激烈的足球赛开始前,售票工作正在紧张地进行中. 已知: 1.每张球票为50元. 2.现在有2n个人排队购票, 其中有n个人手持50元钞票,另外n个人手持100元钞票, 假设开始售票时,售票处没有零钱. 问:这2n个人有多少种排队方式,不至使售票处出现找不开钱的局面? 摘要: 通过对买票找零问题的分析,迁移到括号匹配问题,得到递推式.并通过数学分析中级数幂级数知识,推导出递推式的通项,以此解决部分衍生问题. 这里符号怎么玩…… 见外链吧 http://yunpan.cn/

调查:近7成受访网友买票还找黄牛

过年了,很多在外工作了一年的人们,随着乡愁的召唤,又开始了一年一度的大迁徙.南都联合大粤网发起的网络民调,有1141名网友参与调查.数据显示,今年春运,81.68%的返乡旅客依然选择乘坐火车.可是回家的路并不轻松,截至1月15日,依然还有89 .92%的人没有买到回家的火车票.与之对应的是,今年春运铁路12306网站首次施行提前60天购票,除夕从广州向全国各方向的火车票一经发售,就被抢购一空.如何才能买到回家的车票?数据给出的结论是,67.75%的受访网友是通过找黄牛才买到票的. 调查结果显示,

poj 2828 Buy Tickets 【买票插队找位置 输出最后的位置序列+线段树】

题目地址:http://poj.org/problem?id=2828 Sample Input 4 0 77 1 51 1 33 2 69 4 0 20523 1 19243 1 3890 0 31492 Sample Output 77 33 69 51 31492 20523 3890 19243 Hint The figure below shows how the Little Cat found out the final order of people in the queue d

sdut oj 排队买饭

数据结构实验之队列一:排队买饭 Time Limit: 1000MS Memory limit: 65536K 题目描述 中午买饭的人特多,食堂真是太拥挤了,买个饭费劲,理工大的小孩还是很聪明的,直接奔政通超市,哈哈,确实,政通超市里面也卖饭,有好几种菜,做的比食堂好吃多了,价格也不比食堂贵,并且买菜就送豆浆,吸引了不少童鞋.所以有时吧,人还是很多的,排队是免不了的,悲剧的是超市只有两个收银窗口. 问题是这样的:开始有两队人在排队,现在咱们只研究第一队,现在我们给每个人一个编号,保证编号各不相同

数据结构实验之队列一:排队买饭

数据结构实验之队列一:排队买饭 题目描写叙述 中午买饭的人特多,食堂真是太拥挤了,买个饭费劲,理工大的小孩还是非常聪明的,直接奔政通超市,哈哈,确实,政通超市里面也卖饭,有好几种菜,做的比食堂好吃多了,价格也不比食堂贵,而且买菜就送豆浆,吸引了不少童鞋.所以有时吧,人还是非常多的,排队是免不了的,悲剧的是超市仅仅有两个收银窗体. 问题是这种:開始有两队人在排队,如今咱们仅仅研究第一队.如今我们给每一个人一个编号,保证编号各不同样,排在前面的人买完饭就走了,有些人挑完饭就排在后面等待付款.还有一些