状态设计的方法很巧妙,六个值 h1,h2,h3,t1,t2,t3,我们发现t1,t2,t3可以通过前缀和优化掉一维. 然后考虑把h留下还是t留下,如果留下h显然t是会发生改变的,一个int存不下. 如果按照h降序排序,然后计算的时候存总的高度值,就很方便转移了. #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std;…
神奇的dp优化. 考虑6维状态的dp,分别表示三行高和宽,显然MLE&&TLE. 把高排个序,从大到小往架上放,那么若不是重开一行便对高度没有影响. 然后求出宽度的sum,dp[i][j]表示第一行放了i的宽度,二行放了j的宽度,三行放了sum-i-j宽度的最小的高度值. 先把所有书放在第三行,然后从第二本开始转移,考虑往其他行移的情况. 避免MLE要滚动数组. 注意最后更新答案时保证i>0&&j>0&&sum-i-j>0且dp[i][j]…
传送门 很容易看出来这是一道DP题,那么怎么设置状态就成了这道题的关键.本题有点特殊的地方是有两个维度的状态,而每个维度又有三个部分的参数,如果全部设置出来的话肯定会MLE.首先对书的厚度状态简化. 书的厚度是求和的,这个显然不能作为状态的值,作为状态的参数是比较好的, 30*70=2100 2100^3是内存无法接受的,简化状态求出前i本书的前缀和sum[i],如果第一层的厚度是i,第二层的厚度是j,那么第三层的状态显然是sum[i]-j-k,bingo,内存的问题解决了.显然两个维度一个维度…
这道dp算是同类型dp中比较难的了,主要难点在于设置状态上: 如果像平时那样设置,必定爆空间没商量: 下面是一种思路: 先把输入进来的数据按h从大到小排序,这样就可以大大减少状态数, 然后设f[i][j][k]为前i本书第一个书柜厚度j,第二个书柜厚度k,第三个书柜厚度sum[i]-j-k的h最大值得最小和: 这样一是将h放在了里面,相当于一个方程思想,因为s可以由h,t算出来: 二是转移的时候,如果j,k或sum[i]-j-k为0,直接加上h,因为前面的h比后面的大,方便了转移: 但我最后也是…
Description Tom不喜欢那种一字长龙式的大书架,他只想要一个小书柜来存放他的系列工具书.Tom打算把书柜放在桌子的后面,这样需要查书的时候就可以不用起身离开了.显然,这种书柜不能太大,Tom希望它的体积越小越好.另外,出于他的审美要求,他只想要一个三层的书柜.为了物尽其用,Tom规定每层必须至少放一本书.现在的问题是,Tom怎么分配他的工具书,才能让木匠造出最小的书柜来呢? Tom很快意识到这是一个数学问题.每本书都有自己的高度hi和厚度ti.我们需要求的是一个分配方案,也就是要求把…
Online Judge:Luogu-P2160 Label:思维题,Dp,空间优化 题面: 题目描述 给\(N\)本书,每本书有高度\(Hi\),厚度\(Ti\).要摆在一个三层的书架上. 书架的宽是每层书厚度和的最大值.书架的高度是每层最高书的高度之和. 求如何放书,使得书架的面积最小. 输入 第一行一个整数\(n\),表示书本的个数. 接下来\(n\)行,每行2个整数,表示每本书的高度和厚度. 输出 输出一个整数,表示书架的最小面积. 样例 Input 4 220 29 195 20 20…
上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下最小投票 1934: [Shoi2007]Vote 好心的投票 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 612 Solved: 365 [ Submit ][ Status ][ Discuss ] Description 幼儿园里有n个小朋友打算通过投票来决议睡不睡午觉.对他们来讲,这个问题并不是很主要,于是他们决议弘扬推让精神.虽然每个人都有自己的主意,但是…
1934: [Shoi2007]Vote 善意的投票 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=1934 Description 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票.我们定义一次投票的冲突数…
假如矩阵范围小一点就可以直接用二维树状数组维护. 这道题,  差分答案, 然后一维排序, 另一维离散化然后树状数组维护就OK了. ------------------------------------------------------------------------ #include<cstdio> #include<cstring> #include<algorithm>   using namespace std;   #define lowbit(x) (…
1935: [Shoi2007]Tree 园丁的烦恼 参考与学习:https://www.cnblogs.com/mlystdcall/p/6219421.html 题意 在一个二维平面中有n颗树,有m次询问,要求回答在一个矩形方框中的树的个数. 思路 这是一个(x,y)为偏序的题目.这道题先用CDQ对x进行排序降维.然后利用树状数组对y进行处理.复杂度为O(N*logN * logN) #include <iostream> #include <cstdio> #include…