叠放箱子解题报告

带权值的最长上升子序列
f[i]表示从后往前讨论叠放i个箱子的最小重量(因为是反向读入,其实从前往后讨论,更像最长上升子序列了)

动规方程:  f[k+1]=mid(f[k+1], self[i]+f[k]) (stand[i]>=f[k]) (0<=k<i) 
最长上升子序列的方程  f[i]=f[j]+1(1<=j<i, a[j]<a[i])

又一次犯了和最长上升子序列一样的算法错误
又一次屁颠屁颠地给f[1]赋了初值然后从f[2]开始讨论,
好吧,从f[2]讨论就讨论吧,可是又只从后往前讨论到f[1],真是生怕不WA.
和拦截导弹错得如出一辙,和合唱队形错得异曲同工,和射箭一样错得外焦里嫩,和矩形套矩形一样错得......
因为第一颗导弹不一定非要打出去,因为最长上升子序列不一定就得从第一个数开始。
这一堆题都是不明入口的动态规划类型,答案结构不一定包含第一个数。

 1 #include <stdio.h>
 2 #define maxn 1001
 3 #define inf 10000000
 4 int min(int a, int b)
 5 {
 6     if(a<b)    return a;
 7     return b;
 8 }
 9 int self[maxn], stand[maxn], f[maxn];
10 int main()
11 {
12     int n, i, k;
13     scanf("%d", &n);
14     for(i=n; i>=1; i--)    scanf("%d%d", &self[i], &stand[i]);            //反向读入
15     f[1]=self[1];
16     for(i=2; i<=n; i++)
17         for(f[i]=inf, k=i-1; k>=1; k--)
18             if(stand[i]>=f[k])    f[k+1]=min(f[k+1], self[i]+f[k]);    //像最长上升子序列的决策if(a[j]<a[i])    f[i]=f[j]+1(1<=j<i)
19     for(i=n; i>=1&&f[i]==inf; i--);
20     printf("%d", i);
21     return 0;
22 }

以下是错误代码,听取WA声一片

 1 #include <stdio.h>
 2 #define maxn 1001
 3 #define inf 10000000
 4 int min(int a, int b)
 5 {
 6     if(a<b)    return a;
 7     return b;
 8 }
 9 int self[maxn], stand[maxn], f[maxn];
10 int main()
11 {
12     int n, i, k;
13     scanf("%d", &n);
14     for(i=n; i>=1; i--)    scanf("%d%d", &self[i], &stand[i]);
15     for(i=1; i<=n; i++)
16         for(f[i]=inf, k=i-1; k>=0; k--)
17             if(stand[i]>=f[k])
18                 f[k+1]=min(f[k+1], self[i]+f[k]);
19     for(i=n; i>=1&&f[i]==inf; i--);
20     printf("%d", i);
21     return 0;
22 }

以下是正确代码

时间: 2024-10-12 20:53:31

叠放箱子解题报告的相关文章

【Code_Vs_1014】解题报告

文章标题:[Code_Vs_1014]解题报告与总结 作者 :SinTASO 题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有N个物品(0<N<=30),每个物品有一个体积(正整数).要求N个物品中,任取若干个装入箱内,使箱子的剩余空间为最小. [错解] 记 D[i] 为容量为 i 的箱子的最小剩余空间,赋初值为 i.(整型一维数组) 记 A[i] 为编号为 i 的物品的给定占用空间,由输入流读入.(整型一维数组) 动态规划: 初状态:i=0: 末状态:i=V

解题报告 smoj 2019初二创新班(2019.3.17)

目录 解题报告 smoj 2019初二创新班(2019.3.17) T1:找玩具 题目描述 题意转化 分析 代码 优化(代码复杂度) T2:闯关游戏 题目描述 分析 代码 T3:子数组有主元素 题目描述 分析 代码(\(O(nm\log n)\)) 优化 代码(\(O(nm)\)) 解题报告 smoj 2019初二创新班(2019.3.17) 时间:2019.3.21 T1:找玩具 题目描述 在游戏开始之前,游戏大师在房间的某些地方隐藏了N个玩具.玩具编号为1到N.您的任务是尽可能多地找到这些玩

解题报告 之 POJ3057 Evacuation

解题报告 之 POJ3057 Evacuation Description Fires can be disastrous, especially when a fire breaks out in a room that is completely filled with people. Rooms usually have a couple of exits and emergency exits, but with everyone rushing out at the same time

hdu 1541 Stars 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1541 题目意思:有 N 颗星星,每颗星星都有各自的等级.给出每颗星星的坐标(x, y),它的等级由所有比它低层(或者同层)的或者在它左手边的星星数决定.计算出每个等级(0 ~ n-1)的星星各有多少颗. 我只能说,题目换了一下就不会变通了,泪~~~~ 星星的分布是不是很像树状数组呢~~~没错,就是树状数组题来滴! 按照题目输入,当前星星与后面的星星没有关系.所以只要把 x 之前的横坐标加起来就可以了

【百度之星2014~初赛(第二轮)解题报告】Chess

声明 笔者最近意外的发现 笔者的个人网站http://tiankonguse.com/ 的很多文章被其它网站转载,但是转载时未声明文章来源或参考自 http://tiankonguse.com/ 网站,因此,笔者添加此条声明. 郑重声明:这篇记录<[百度之星2014~初赛(第二轮)解题报告]Chess>转载自 http://tiankonguse.com/ 的这条记录:http://tiankonguse.com/record/record.php?id=667 前言 最近要毕业了,有半年没做

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh童鞋的提醒. 勘误2:第7题在推断连通的时候条件写错了,后两个if条件中是应该是<=12 落了一个等于号.正确答案应为116. 1.煤球数目 有一堆煤球.堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形). -. 假设一共

[noip2011]铺地毯(carpet)解题报告

最近在写noip2011的题,备战noip,先给自己加个油! 下面是noip2011的试题和自己的解题报告,希望对大家有帮助,题目1如下 1.铺地毯(carpet.cpp/c/pas) [问题描述]为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有n 张地毯,编号从1 到n.现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上.地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的

ACdream 1203 - KIDx&#39;s Triangle(解题报告)

KIDx's Triangle Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit Statistic Next Problem Problem Description One day, KIDx solved a math problem for middle students in seconds! And than he created this problem. N

解题报告 之 CodeForces 91B Queue

解题报告 之 CodeForces 91B Queue Description There are n walruses standing in a queue in an airport. They are numbered starting from the queue's tail: the 1-st walrus stands at the end of the queue and the n-th walrus stands at the beginning of the queue.