B1277 [HNOI2002]Tinux系统 树形dp
这个题bzoj上没有图,luogu上样例有问题。。。其实这个题代码不难,但是思考起来还是有一定难度的,其实这些题的重点都在于思考。我就不写了,洛谷上唯一的题解写的挺好,大家可以看一看。
题干:
在dos系统诞生以前,美国曾研究出一种类似的操作系统,名为Tinux系统。但由于硬件设施的制约,Tinux系统有许多的缺点。下面就对Tinux系统作一个简单的介绍:
Tinux系统是Tiger博士为美国军方研制开发的一种操作系统,该系统对文件的存储方式类似于dos系统,像一棵树一样,每一个叶子节点表示一个文件,每一个非叶子节点表示一个目录。其中定义i级子目录表示从根目录开始访问,一直访问到该子目录(不包括该子目录)需要访问的目录的个数为i的目录,所以根目录下的目录为一级子目录,其他的目录以此类推。但是在同一子目录下,受到硬件的制约Tinux系统最多只能够存储k个文件或子目录,也就是说这棵树里面的每一个非叶子节点最多只有k个子节点。这样就导致在文件数量较多的情况下,访问存储在该系统当中的文件A,往往要先访问一系列的子目录,我们称这些子目录为文件A的上级目录。例如下面这一个例子:
Root A1
A2
A3
A4
A4A1
A4A2
A4A2A1
A4A2A2
A4A3
当我们要访问文件A4A2A1时就必须先访问它的上级目录:一级子目录A4和二级子目录A4A2。
Tinux系统在存储文件时,给每一个子目录都分配了k个指针,分别指向存放在该目录下的每一个文件和每一个目录,因此对文件的访问实质上就是对指针的访问。但是由于硬件原因,这k个指针不尽相同,因此访问它们的时间也不同,访问第i个指针所耗费的时间为 。但是对于两个不同的子目录(不管它们各自属于哪一级目录)而言它们各自所拥有的k个指针是相同的。
Tinux系统最大的缺点是访问一个目录时,必须把该目录下所有的文件读入到内存当中来,这些文件包括在其各级子目录当中的文件,例如上面那一个例子,访问A4那一个目录,就必须把A4A1,A4A2A1,A4A2A2,A4A3这四个文件都读入到内存当中来,访问一个目录所需要的时间为 (x表示该目录及其各级子目录下文件的个数, 表示指向该目录的指针的访问时间)。因此根据上面介绍的访问方法,单独访问一个文件所需要的总时间为访问其所有上级目录(不包括根目录)所需要的时间与访问指向该文件的指针所需要的时间的和,例如上面那一个例子,访问文件A4A2A1需要的时间=访问目录A4的时间+访问目录A4A2的时间+访问指向文件A4A2A1的指针需要的时间。
现在,tiger博士准备将n个文件存储到一个空的Tinux系统当中,希望你帮助他设计一个程序找到一种最优的存储方法,使得单独访问这n个文件所需要的时间总和最小。
输入输出格式
输入格式:
输入由文件”system.in”读入。
文件的第一行为两个正整数 , ,接下来的k行每行有一个正整数 。
输出格式:
输出到文件”system.out”,输出文件仅有一个正整数,表示在最优存储方案下,单独访问这n个文件所需要的时间总和。(结果小于2的31次方 )
输入输出样例
4 3 3 5 4 4
28
说明
代码:
#include<iostream> #include<cstdio> #include<cmath> #include<ctime> #include<queue> #include<algorithm> #include<cstring> using namespace std; #define duke(i,a,n) for(int i = a;i <= n;i++) #define lv(i,a,n) for(int i = a;i >= n;i--) #define clean(a) memset(a,0,sizeof(a)) const int INF = 1 << 30; typedef long long ll; typedef double db; template <class T> void read(T &x) {char c;bool op = 0;while(c = getchar(), c < '0' || c > '9')if(c == '-') op = 1;x = c - '0';while(c = getchar(), c >= '0' && c <= '9')x = x * 10 + c - '0';if(op) x = -x; } template <class T> void write(T x) {if(x < 0) putchar('-'), x = -x;if(x >= 10) write(x / 10);putchar('0' + x % 10); } int f[1700][1700]; int n,k,p[1700]; int MIN(int x,int y) {if(!x)return y;elsereturn min(x,y); } int dp(int x,int y,int l) {if(x == 1){f[x][y] = p[y];return f[x][y];}if(y == k){f[x][y] = p[y] * x * x + dp(x,1,x - 1);return f[x][y];}int tmp = k - y + 1;if(tmp * l < x)return INF;if(f[x][y]) return f[x][y];tmp = (x - 1) / tmp + 1;duke(i,tmp,l){if(i == 1)f[x][y] = p[y] + dp(x - 1,y + 1,x - 2);elsef[x][y] = MIN(f[x][y],dp(x - i,y + 1,x - i - 1) + dp(i,1,i - 1) + p[y] * i * i);}return f[x][y]; } int main() {read(n);read(k);duke(i,1,k)read(p[i]);sort(p + 1,p + k + 1);printf("%d\n",dp(n,1,n - 1));return 0; }
转载于:https://www.cnblogs.com/DukeLv/p/9726549.html
B1277 [HNOI2002]Tinux系统 树形dp相关推荐
- [树形dp] Jzoj P3914 人品问题
Description 网上出现了一种高科技产品--人品测试器.只要你把你的真实姓名输入进去,系统将自动输出你的人品指数.yzx不相信自己的人品为0.经过了许多研究后,yzx得出了一个更为科学的人品计 ...
- BZOJ1063:道路设计(树形dp)
1063: [Noi2008]道路设计 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 1147 Solved: 619 [ Submit][ ...
- 动态规划报告(树形DP+概率DP
动态规划报告 树形dp 树形 DP,即在树上进行的 DP.由于树固有的递归性质,树形 DP 一般都是递归进行的.一般需要在遍历树的同时维护所需的信息 以一道题目为例 2022CCPC桂林站G Grou ...
- 人品问题(树形DP)
题目描述 网上出现了一种高科技产品--人品测试器.只要你把你的真实姓名输入进去,系统将自动输出你的人品指数.把儿不相信自己的人品为0.经过了许多研究后,把儿得出了一个更为科学的人品计算方法.这种方法的 ...
- BNUOJ 52305 Around the World 树形dp
题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...
- [树形dp] Jzoj P5233 概率博弈
Description 小A和小B在玩游戏.这个游戏是这样的: 有一棵n个点的以1为根的有根树,叶子有权值.假设有m个叶子,那么树上每个叶子的权值序列就是一个1->m 的排列. 一开始在1号点有 ...
- fwt优化+树形DP HDU 5909
1 //fwt优化+树形DP HDU 5909 2 //见官方题解 3 // BestCoder Round #88 http://bestcoder.hdu.edu.cn/ 4 5 #include ...
- BZOJ 1040 ZJOI2008 骑士 树形DP
题目大意:给定一个基环树林,每一个点上有权值,要求选择一个权值和最大的点集,要求点集中的随意两个点之间不能直接相连 最大点独立集--考虑到n<=100W,网络流铁定跑不了,于是我们考虑树形DP ...
- POJ 3342 树形DP+Hash
这是很久很久以前做的一道题,可惜当时WA了一页以后放弃了. 今天我又重新捡了起来.(哈哈1A了) 题意: 没有上司的舞会+判重 思路: hash一下+树形DP 题目中给的人名hash到数字,再进行运算 ...
最新文章
- SIFT 特征检测及匹配
- 笔记:2016-06-03
- 继爆款超级账本后,IBM再次推出新产品
- 在校园里捉到一只小鸟,怎么办?
- 【Google Play】从 Android 应用中跳转到 Google Play 中 ( 跳转代码示例 | Google Play 页面的链接格式 | Google Play 免安装体验 )
- 计算机组装与维修说课稿,大班《生活中的数字》说课稿
- 学习笔记--2014年7月7日
- Docker快速部署PostgreSQL服务
- irc ubuntu_让我们聊聊写作:在IRC上加入我们
- 能在市场上大概率赚钱的人类型
- 菜鸟的学习之路(13) —TreeSet类的排序
- 将SPS中被FrontPage修改过的页面重置为Ghost Page
- Forms Based Authentication FBA by AD in SharePoint 2010
- 单应性(同义词直射变换、射影变换和射影性等)(来自wiki)
- 20200715每日一句
- 北邮数电 爱课堂答案 Verilog专题
- 批处理使用技巧:批量修改文件名
- 不要用PS啦,python+opencv代码给证件照换底色
- Java数组实现进制转换
- 前端对接身份证阅读器/标签打印机/扫码枪记录
热门文章
- JS根据日期比较显示时分或者月日
- elasticsearch aggregation的入门案例
- 深究AngularJS——ui-router详解
- 考研专业课计算机网络调剂,计算机网络信息中心2019年硕士研究生接收调剂信息公告...
- python定位文件位置_python使用相对定位,绝对定位,选取同级别文件下的指定文件(csv,excel)...
- 99%网工都会遇到的10道经典面试问题
- 华为mate20 android,华为MateRS对比华为mate20RS,终于让安卓手机坐上了头等舱!
- 函数计算自动化运维实战1 -- 定时任务
- datatables 一行数据生成两行_一行代码搞定分组回归
- 在上位计算机控制时不能将s7-200,PLC控制统编程题库.doc