最近努力学(tui)习(fei)了DP专题,然后考试又挂了,然后就没有然后了。
对此,我只想说——
吾每念,常痛于骨髓,顾计不知所出耳!


广场铺砖问题

期望得分:40
实际得分:10
Description
有一个 W行 H列的广场,需要用 1*2小砖铺盖,小砖之间互相不能重叠,问
有多少种不同的铺法?
Date Size
1<=W,H<=11
Solution
这是一道状压DP中的水题。我难道会告诉你我跳了状态压缩DP吗
于是乎,自顾自的打了40分的暴力走人。
可以按行枚举,有三种选择:①空着②摆一个横的③摆一个占用上一行的竖的
但第一行没有③选项,那么就把第一行处理成全摆满的情况。
然后开始愉快地状态DP。
Code

#include <iostream>
#include <cstdio>
using namespace std;
int n,m;
long long f[12][(1<<12)];
void dfs(int h,int l,int now,int pre)
{if(l>m+1)return ;if(l==m+1){f[h][now]+=f[h-1][pre];return ;}dfs(h,l+1,now<<1,(pre<<1)|1);//1情况dfs(h,l+2,(now<<2)|3,(pre<<2)|3);//2情况dfs(h,l+1,(now<<1)|1,pre<<1);//③情况
}
int main()
{scanf("%d %d",&n,&m);f[0][(1<<m)-1]=1;for(int i=1;i<=n;i++)dfs(i,1,0,0);printf("%lld\n",f[n][(1<<m)-1]);return 0;
}

选课

Description
略(就是平常的选课题面,只不过要求输出最优方案)
Date Size
课程数<=500
Solution
看到这道题目的时候超惊喜的有没有,哇,竟然良心地考原题水题,超感动的有没有。愉快地打了树形DP,满心欢喜地以为AC了,开始测样例,然后突然发现要输出最优方案。于是乎,就挂了。
kb用的是DP两次,第一次跑答案,第二次利用答案跑方案,当然第二次的重复计算可以使用第一次跑出来的数据。不过按kb的说法是,更优的方案应该是,多叉树转二叉树,这样更好记录答案,然后排序输出就好了。

卡车更新问题

Description
某人购置了一辆新卡车, 从事个体运输业务. 给定以下各有关数据:
R[t], t=0,1,2,…,k, 表示已使用过 t 年的卡车, 再工作一年所得的运费, 它随 t 的增加而减少, k (k 年后卡车已无使用价值)。
U[t]: t=0,1,…,k, 表示已使用过 t 年的卡车, 再工作一年所需的维修费, 它随 t 的增加而增加.
C[t], t=0,1,2,…,k, 表示已使用过 t 年的旧卡车, 卖掉旧车, 买进新车, 所需的净费用, 它随 t 的增加而增加. 以上各数据均为实型, 单位为”万元”.
设某卡车已使用过 t 年,
① 如果继续使用, 则第 t+1 年回收额为 R[t]-U[t],
② 如果卖掉旧车,买进新车, 则 第 t+1年回收额为 R[0]-U[0]-C[t] .
该运输户从某年初购车日起,计划工作 N (N<=20) 年, N 年后不论车的状态如何,不再工作. 为使这 N 年的总回收额最大, 应在哪些年更新旧车? 假定在这 N 年内, 运输户每年只用一辆车, 而且以上各种费用均不改变.
Date Size
k<=20
Solution
好像是一道比较裸又比较水的DP,也没有什么好解释的,就直接上代码好了。
Code

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const double eps=1e-10;
int n,k;
double ans=0,r[22],u[22],c[22],f[22][22];
void print(int x,int y){double kl;int i,j;if(x==1){printf("%d 0 %.1lf\n",x,f[x][0]);return;}if(y==0)for(i=0;i<x-1&&i<k;i++)if(fabs(f[x-1][i]+r[0]-u[0]-c[i+1]-f[x][y])<eps){print(x-1,i);printf("%d 1 %.1lf\n",x,f[x][y]-f[x-1][i]);return;}print(x-1,y-1);printf("%d 0 %.1lf\n",x,f[x][y]-f[x-1][y-1]);
}
int main()
{freopen("truck.in","r",stdin);freopen("truck.out","w",stdout);int flag;scanf("%d%d",&n,&k);for(int i=0;i<=k;i++)scanf("%lf",&r[i]);for(int i=0;i<=k;i++)scanf("%lf",&u[i]);for(int i=0;i<=k;i++)scanf("%lf",&c[i]);f[1][0]=r[0]-u[0];for(int i=2;i<=n;i++){f[i][0]=f[i-1][0]+r[0]-u[0]-c[1];for(int j=1;j<i-1&&j<k;j++)f[i][0]=max(f[i][0],f[i-1][j]+r[0]-u[0]-c[j+1]);for(int j=1;j<i&&j<=k;j++)f[i][j]=f[i-1][j-1]+r[j]-u[j];}for(int i=0;i<n&&i<=k;i++)if(f[n][i]>ans)ans=f[n][i],flag=i;printf("%.1lf\n",ans);print(n,flag);return 0;
}

DP专题考试总结(4)相关推荐

  1. DP专题考试总结(2)

    最近努力学(tui)习(fei)了DP专题,然后就被烤焦了,然后就没有然后了. 对此,我只想说-- DP made me Boom-Sha-Ka-La-Ka 加分二叉树 期望得分:0 实际得分:0 D ...

  2. UVa在线比赛单题汇总-----DP专题

    动态规划基础 例题 LA 3882 UVa 3882 - And Then There Was One 递推------------无力orz UVa 10635 10635 - Prince and ...

  3. DP专题训练之HDU 1087 Super Jumping!

    Description Nowadays, a kind of chess game called "Super Jumping! Jumping! Jumping!" is ve ...

  4. codeforces(牛客网dp专题,排序)

    链接:https://ac.nowcoder.com/acm/problem/21314 来源:牛客网 牛牛正在打一场CF 比赛时间为T分钟,有N道题,可以在比赛时间内的任意时间提交代码 第i道题的分 ...

  5. 牛客网dp专题 数位dp

    文章目录 数位dp 例题: NC116652 uva11038 How many 0's NC15035 送分了QAQ NC20669 诡异数字 NC20665 7的意志 NC17385 Beauti ...

  6. HDOJ树形DP专题之Centroid

    题目链接 这题跟Balance Act那题差不多,求图的质点.我直接将那题改了一下提交,结果PE了一次,又WA了一次,最后发现是单case,多case的提交为什么WA呢? View Code 1 #i ...

  7. 多重背包(dp专题)

    题目大意:输入n,代表有n种数,接下来n个数代表n种数,再接下来n个数代表每种数有多少个,在输入K,代表用这些数要加成的和 问你是否能加为K,能输出yes,不能输出no 这是一个典型的多重背包问题,可 ...

  8. 简单的dp(dp专题)

    题目链接:https://vjudge.net/contest/216347#problem/C Alice gets two sequences A and B. A easy problem co ...

  9. 01背包 (dp专题)

    01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为W1,W2至Wn,与之相对应的价值为P1,P2至Pn.01背包是背包问题中最简单的问题.01背包的约束条件是给定几种物品,每种物品有 ...

最新文章

  1. 输出主键的值 output inserted.id
  2. MYSQL_使用外键约束(constraint)或触发器(trigger)来进行级联更新、删除
  3. Intermission
  4. 计算机架构及开机过程
  5. c++向量和数组的区别_向量,矩阵和张量的导数 | 简单的数学
  6. Heap与Stack的区别- -
  7. java placeholder_java – 如何在JTextfield中设置像Placeholder一样的文本
  8. C++中的模板展开问题
  9. 数据科学中的简单线性回归
  10. zabbix2.4 mysql模板_zabbix自带的模板监控mysql
  11. 114. Flatten Binary Tree to Linked List【Medium】【将给定的二叉树转化为“只有右孩子节点”的链表(树)】...
  12. php 盾灵新闻系统,代码审计 | 记一次盾灵系统审计从后台到Getshell
  13. java 静态成员 概念_Java成员变量、局部变量、静态变量、成员方法、全局方法等概念的区别...
  14. 解决在嵌入式平台上无法进行字符编码的问题
  15. 希沃集控系统流媒体服务器未开启,希沃集控,让教育信息化管理尽在“掌控”之中...
  16. wilcoxon符号秩检验matlab,符号检验和wilcoxon符号秩检验的区别
  17. Facebook努力回归中国,微博会被人们放弃吗?
  18. Mysql 分组查询top n(多种方法)
  19. 微信自定义分享功能实现
  20. hash 算法 (转)

热门文章

  1. signature=16ceadeb007b12c6b3bcab834073ab21,Signature: _____________________ 16 May 2006
  2. 数据库分类及常用数据库
  3. LINUX嵌入式系统开发平台选择
  4. Debian搭建dns服务器
  5. android UI Tab切页效果 总结
  6. linux 进程流量统计,Linux进程网络流量统计方法及实现
  7. 【龙讯module小课堂】“光”怪陆离:PWmat计算光学性质(二)
  8. 高级过程控制传热自动化实训装置
  9. IPSEC 的IKE协商过程,主模式和野蛮模式,AH和ESP
  10. 2.4g和5g要不要合并_无线路由2.4g和5g要同时开吗