[題解](搜索)生日蛋糕(NOI1999)
搜索剪枝,
1.枚舉上下界:
先$R\subset$$(dep,min(\lfloor\sqrt{n-v}\rfloor,lastr-1))$
后$H\subset$$(dep,min((n-v)/R^{2},lasth-1))$
由$\pi R^{2}H=\pi(n-v)$可以推出來,R那裡沒有除H是因為H最小為1
2.優化搜索順序:倒序以減小枚舉規模,應該會更快
3.不太複雜的預估(可行性剪枝
預處理出$1$~$dep-1$層的最小體積前綴和,最小側面積前綴和,每次加一下和$n、ans$比較
4.比較複雜的預估(最優性剪枝
單獨判斷s和v還不太夠,他們之間也有一些約束關係,
$1$~$dep-1$層的體積可表示為$n-v=\sum_{k=1}^{dep-1} h[k]*r[k]^{2}$
表面積可表示為$2\sum_{k=1}^{dep-1} h[k]*r[k]$
因為
$2\sum_{k=1}^{dep-1} h[k]*r[k]=\frac{2}{r[dep]} * \sum_{k=1}^{dep-1} h[k]*r[k]*r[dep] \geqslant \frac{2}{r[dep]} * \sum_{k=1}^{dep-1} * h[k] * r[k]^{2} \geqslant \frac{2(n-v)}{r[dep]}$
所以當$\frac{2(n-v)}{r[dep]}+s$大於答案時剪枝
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=;
int n,m,ans=;
int smv[maxn],sms[maxn];//最小體積和,最小側面積和
void dfs(int dep,int s,int v,int lstr,int lsth){
if(dep==){
if(v==n)ans=min(ans,s);return;
}
if(v+smv[dep]>n)return;
if(s+sms[dep]>ans)return;
if(s+*(n-v)/lstr>ans)return;
for(int r=min((int)sqrt(n-v),lstr-);r>=dep;r--){
if(dep==m)s=r*r;
for(int h=min((n-v)/(r*r),lsth-);h>=dep;h--){
dfs(dep-,s+*r*h,v+r*r*h,r,h);
}
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
sms[i]=sms[i-]+*i*i;
smv[i]=smv[i-]+i*i*i;
}
dfs(m,,,sqrt(n),n);
if(ans==)printf("");
else printf("%d",ans);
}
($LaTeX$首使用
[題解](搜索)生日蛋糕(NOI1999)的更多相关文章
- [題解]luogu_P1120小木棍(搜索)
好久以前抄的題解,現在重新抄題解做一下 1.對所有木棍從大到小排序,後用小的比較靈活 2.限制加入的木棍單調遞減,因為先/后用長/短木棍等價,反正就是那兩根 3.預處理出重複木棍的位置,防止重複搜索相 ...
- [題解](水/數學)luogu_P1147連續自然數和
尺取法a掉 然而數學解法為 等差數列求和公式: sum(L,R)=(L+R)(R-L+1)/2=M 即(L+R)(R-L+1)=2M 可以把2M分解成两个数之积,假设分成了两个数K1,K2,且K1&l ...
- [題解](單調隊列dp)【2016noip福建夏令營】探險
P1917 -- 探险 时间限制:1000MS 内存限制:131072KB 题目描述(explore.cpp) π+e去遗迹探险,遗迹里有 N 个宝箱,有的装满了珠宝,有的装着废品. π+e ...
- [題解](最小生成樹/LCA)luogu_P1967貨車運輸
一道好題不出所料又抄的題解 1.首先對於這張圖肯定要考慮走哪些邊不走哪些邊,發現我們想要的肯定那些邊權最大的邊,所以想到最大生成樹 這樣能保證選到盡量大的邊 2.跑完最大生成樹后每兩點之間就有唯一路徑 ...
- [題解](最小生成樹)luogu_P1265
首先考虑最小生成树的模型,唯一不同的是第二种情形. 即“三个或三个以上的城市申请修建的公路成环” 考虑该情形,因为修路的申请是申请离它最近的城市,所以上述条件实质上为 “存在三个或三个以上的城市,他们 ...
- [題解](二分答案/單調隊列)luogu_P1419尋找段落
果然又抄的題解... 顯然答案具有單調性,而對于平均數計算的式子我們移一下項, 若s[l..r]>mid*(r-l+1)无解, 於是我們把每個數都減去一個mid,看和的正負即可,如果為正就可能有 ...
- [題解](最短路)luogu_P1119災後重建
一道好題,然而看題解做的...... floyed的實質:只經過前k個點i到j的最短路,原狀態轉移方程為 f [ k ] [ i ] [ j ]=min( f[ k-1 ] [ i ] [ j ],f ...
- [題解]luogu_P1854 花店櫥窗佈置
來源:題解 一開始看不懂題目,一萬年了終於看懂 f [ i ] [ j ] 表示第i朵花放在第j個花瓶中最大美學值,(花是必須用完嗎?) 顯然放i-1朵花至少要放到前i-1個瓶子里,最多放到前j-1個 ...
- [題解]luogu_P1052 過河
來源:題解 不發題面 因為 l 範圍太大,而石子數卻很少,步數也僅僅在1~10之間, 也就是說兩個石子之間很有可能間隔很大的距離,不管怎麼跳都能跳過去,那麼中間那些怎麼樣都能跳過去的區間和沒有等價, ...
- [題解]luogu_P3205/BZOJ_1996 合唱隊
前言:基本上發題解的都是抄的題解所以 來源:題解 题目描述 为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个 ...
随机推荐
- WSGI服务与django的关系
WSGI接口 wsgi是将python服务器程序连接到web服务器的通用协议.uwsgi是独立的实现了wsgi协议的服务器. web服务器 服务端程序 简化版的WSGI架构 服务端程序(类似dja ...
- BZOJ1972:[SDOI2010]猪国杀
我对模拟的理解:https://www.cnblogs.com/AKMer/p/9064018.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem ...
- Poj 2533 Longest Ordered Subsequence(LIS)
一.Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequenc ...
- java基础知识(6)---抽象类与接口
抽象类: abstract抽象:不具体,看不明白.抽象类表象体现.在不断抽取过程中,将共性内容中的方法声明抽取,但是方法不一样,没有抽取,这时抽取到的方法,并不具体,需要被指定关键字abstract所 ...
- SpringMvc之参数绑定注解详解之一
引言: 前段时间项目中用到了REST风格来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加 任何注解),查看了提交方式为application/ ...
- 创建Ajax
Ajax的全称是Asynchronous javascript and XML = 异步传输 + JS + XML 不需要刷新页面就可以获取新的数据 创建步骤: (1)创建XML对象也就 ...
- 初始String
--------------siwuxie095 使用频繁操作繁琐的数据有哪些? 对于基本数据类型:int.ch ...
- DOS查看端口占用及杀掉进程命令
转载自:http://www.cnblogs.com/rainman/p/3457227.html 1. 查看端口占用 在windows命令行窗口下执行: netstat -aon|findstr & ...
- 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据
1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...
- Hadoop的namenode和secondnamenode分开部署在不同服务器
一.系统环境: Hadoop 0.20.2.JDK 1.6.Linux操作系统 二.使用背景 网上关于Hadoop的集群配置,很多情况下,都是把namenode和secondnamenode部署在 ...