题意:给出一些人买票的时间,能够一个人买。也能够相邻两人一起买,求全部人买完票的最短时间。 思路:一维DP,dp[i]表示第i个人买票所须要的时间。这个人能够和前一个人一起买,也能够自己买。 状态转移方程:dp[i]=min(dp[i-1]+t1[i],dp[i-2]+t2[i-1]),然后再注意初
转载 2017-08-15 13:07:00
63阅读
2评论
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1260题意:有个人卖票。从8:00:00am开始卖。后面有n个人,每个人卖票需要ki的时间,但是相邻两个人可以合起来买,需要di的时间。问卖票人最早回家的时间。mark:一个水dp加一个时间的转换。本来可以1A的但是3wa。第一次错是因为小时数忘记处理成不大于12的数字,第二次错是因为把m%=60写成了h%=60,第三次是忘记删除调试语句。都是脑残错误。。。代码: 1 # include 2 3 4 int s[2010], d[2010], dp[2010] ; 5 6 7 int min(...
转载 2013-09-04 01:38:00
47阅读
考察:线性dp思路:        很容易看出状态转移方程,坑到本蒟蒻的是计算时间,总之请记下来....        这里的f[n]是秒数. 1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 const int N = 2010; 5 int one[N],two[N],n,f[N]; 
转载 2021-03-14 17:40:42
97阅读
2评论
Tickets HDU - 1260有一部很好看的电影,许多人冲进电影院看,但是这对买票人来说简直很浪费时间个人需要购票的时间。 输出:工作...
原创 2022-08-22 21:18:58
41阅读
题意:给出几类珍珠,以及它们的单价,要求用最少的钱就可以买到相同数量的,相同(或更高)质量的珍珠。规定买任一类的珍珠n个(价格为p),都要支付(n+10)*p的钱,即额外支付10*p。(1) 要求要买的珍珠的数量是一定的(2) 所买的珍珠的质量允许提高,但不允许下降(即可以用高质量珍珠替代低质量)(3) 输入时,后输入的珍珠价格一定比前面输入的要贵(4) 由(2)(3)知,珍珠的替代必须是连续的,不能跳跃替代。因为,假如方案是用第 i+2 类去替代第 i 类珍珠,而用第 i+1 类去替代第 i 类珍珠会使最终的支付价格更加低;所以,一定是因为第 i+2 类代替了第 i+1 类后会使最终的支付价
转载 2013-07-05 08:55:00
90阅读
2评论
题意: 买票 一个人要么自己买 要么和前面的人一起买 这两种情况分别有一个买票所花费的时间 求总的花费时间最小 解析: dp[i] 表示前i个人买票总的花费时间 v[i]表示第i个人买票花费的时间 w[i]表示第i个人与前一个人买票花费的时间 则 dp[i] = min(dp[i-1]+v[i],
转载 2018-05-21 20:10:00
61阅读
2评论
原创 2022-06-08 12:02:45
61阅读
题意:给出几类珍珠,以及它们的单价,要求用最少的钱就可以买
转载 2013-07-05 22:00:00
42阅读
dpView Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define maxn 106struct Pearl{ int num, p;}pearl[maxn];int n, f[maxn];void input(){ scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d%d", &am
转载 2011-07-02 13:20:00
57阅读
2评论
贪心 从上级比赛向下级比赛枚举 用一个堆维护一下可以作为对手人选的价值 每次取最小即可 如果当前比赛不用花钱就能打赢就跳过 没做出来的原因在于还想维护每个对手的手下败将 其实根本不用维护 因为剩下的人总能合理分配 只要比这个人弱的人数量足够就行 因为只要弱就行 #include <bits/stdc
转载 2020-01-27 23:14:00
71阅读
2评论
#include <iostream> //DP#include <numeric>using namespace std;#define ed 105int ai[ed],pi[ed],dp[ed]; int main(){ int t,c; cin>>t; while(t--) { cin>>c; for(int i=1;i<=c;++i) cin>>ai[i]>>pi[i]; fill(dp,dp+ed,100000000); //初始化为极大值 dp[0]=0; for(int i=1;i<=c;++i
转载 2011-07-22 19:04:00
54阅读
2评论
http://poj.org/problem?id=1260 题意:给出几类珍珠,以及它们要买的数量和单价,珍珠的质量依次上升,价格也依次上升,计算买所有珍珠需要花的最少价格。 购买规则是这样的,不管买哪一类的珍珠,最后都需要增加10个该类珍珠,并且质量低的珍珠可以用质量高的珍珠来代替。 举个例子吧
转载 2017-02-01 15:29:00
36阅读
2评论
DP is, enumeration + pruning. If you can think of enumeratio
转载 2014-07-01 14:02:00
181阅读
2评论
题目大意:有n个样例,每个样例中有m个人去买票,如果每个人买一张,时间分别为a1,a2,a3...an秒,如果是二个人一起买票,则从第二个人起与前一个人一起买票,时间为b1,b2 ... bn-1秒。问,n个人买票最少需要多久。解题思路:dp公式,dp[i] = min(dp[i-1]+a[i], dp[i-1]+b[i])。dp[0]为一个人,是a1,dp[1]是两个人时,是min(a[0]+a
原创 2021-12-01 15:33:12
75阅读
题目地址:点击打开链接思路:刚开始就想错了,能看出来是动态规划,但是就是想不出具有最优子结构的递推式,我想到的是每个人既可以与前面的一个人一起买,又可以和后面的一个人一起买,不具有无后向性的要求,看了别人的代码就醒悟了,汗,解释看代码,dp[i]表示的是前i个人买票所需要的时间,还有就是测试数据不会超过24小时,不用再对小时%24,午夜12点是am,中午12点是pmAC代码:#incl
原创 2022-08-04 09:11:32
18阅读
题意:有一些珍珠,给你珍珠的数量价格,你需要买下所有的珍珠,购买的方法买一种珍珠,设珍珠数量n 、价格 p,则须支付(
原创 2023-12-30 08:07:42
57阅读
题 题意 有n个(n≤100)等级的珍珠,等级越高单价越高,要购买一种等级的珍珠就要多付10*单价,现在需要购买一些等级的珍珠一定数量,若买更高等级的珍珠更便宜则可以买更高等级的珍珠,求最少花费。 分析 我原来想贪心(如果该等级买,不如后一等级多买那么多更优,那就不买该等级),然而是错的,怎么证明不
原创 2021-07-22 14:03:12
40阅读
1 class Solution: 2 def shiftGrid(self, grid: List[List[int]], k: int) -> List[List[int]]: 3 n = len(grid)#n行 4 m = len(grid[0])#m列 5 flat = [0] * (n * m) 6
转载 2019-11-17 12:10:00
45阅读
区间dp。
转载 2016-11-01 22:54:00
49阅读
2评论
很容易脑补出来的区间dp O(n3)的 var f:array[0..51,0..51] of longint;    i,n,j,l,k:longint;    s:string; function min(a,b:longint):longint;  begin    if a>b then exit(b) else exit(a);  end; begin  readln(s);  n
转载 2014-10-26 16:31:00
64阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5