题解 NOI1999【生日蛋糕】—— 洛谷
自己想出这题的大佬蒟蒻在这儿%您了
我实在是太弱了,搜索这种辣鸡算法都不会(逃
这题真的是想了好久,每次都会T三个点,我以为我的剪枝已经堆了够多了,结果后来才知道是一个关键剪枝没想到OTZ
先贴代码
#include <bits/stdc++.h>
using namespace std;
#define rint register int
int n, m, ans = 99999999;
int ini1[20], ini2[20];
inline void init( void ){
for( rint i = 1; i <= m; i++ ){
ini1[i] = pow( i, 3 ) + ini1[i - 1];
ini2[i] = 2 * i * i + ini2[i - 1];
}
return ;
}
inline void dfs( int nowv, int nows, int r, int h, int t ){
if( t == 0 ){
if( nows == n ) ans = min( ans, nowv );
return ;
//cout << 1;
}
if( nowv + ini2[t - 1] >= ans ) return ;
//cout << 1;
if( nows + ini1[t - 1] >= n ) return;
//cout << 1;
if( 2 * ( n - nows ) / r + nowv >= ans ) return ;
for( rint i = r - 1; i >= t; i-- ){
//cout << 1;
if( t == m ) nowv = i * i;
int hh = min( h - 1, ( n - nows - ini1[t - 1] ) / ( i * i ) );
for( rint j = hh; j >= t; j-- ){
//cout << t << endl;
dfs( nowv + 2 * i * j, nows + i * i * j, i, j, t - 1 );
}
}
return ;
}
int main( void ){
scanf( "%d%d", &n, &m );
init();
int temp = sqrt( n );
//for( int i = 1; i <= m; i++ ) cout << ini[i] << ' ';
dfs( 0, 0, temp + 1, n + 1, m );
if( ans == 99999999 ){
cout << 0;
return 0;
}
cout << ans;
return 0;
}
看这输出的1就知道我错了多少次,结果发现把一个t打成了 \(t - 1\) qwq
关键剪枝
if( 2 * ( n - nows ) / r + nowv >= ans ) return ;
这里详细推一下
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] $
又臭又长警告
\(\because2\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]}\)
\(\therefore\)当$ \frac{2(n - v)}{r[dep]} + s \geqslant ans$时说明已经不是最优,即可return
这是对前\(dep - 1\)层侧面积的估计,很多人忽略了这一维度,其实,这一维度已经在我们预处理\(ini\)
(别激动,\(init\)删去\(t\)而已23333)时已经有所涉及,只是我们没有太在意而已
这告诉我们在设计剪枝条件的时候一定要全方面考虑
,每个维度都有所思考,尽可能到达上下界
return 0;//功德圆满
题解 NOI1999【生日蛋糕】—— 洛谷的更多相关文章
- 【题解】【洛谷 P1967】 货车运输
目录 洛谷 P1967 货车运输 原题 题解 思路 代码 洛谷 P1967 货车运输 原题 题面请查看洛谷 P1967 货车运输. 题解 思路 根据题面,假设我们有一个普通的图: 作图工具:Graph ...
- Codevs 1710 == POJ 1190 生日蛋糕 == 洛谷P1731
生日蛋糕 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ ...
- [题解] LOJ 3300 洛谷 P6620 [省选联考 2020 A 卷] 组合数问题 数学,第二类斯特林数,下降幂
题目 题目里要求的是: \[\sum_{k=0}^n f(k) \times X^k \times \binom nk \] 这里面出现了给定的多项式,还有组合数,这种题目的套路就是先把给定的普通多项 ...
- [题解] BZOJ 3456 洛谷 P4841 [集训队作业2013]城市规划 多项式,分治FFT
题目 令\(f_i\)表示n个点的答案.考虑容斥,用所有连边方案减去有多个连通块的方案.枚举1号点所在的连通块大小: \(f_i=2^{i(i-1)/2}-\sum_{j>0}^{i-1}f_j ...
- BZOJ3675 & 洛谷3648 & UOJ104:[Apio2014]序列分割——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3675 https://www.luogu.org/problemnew/show/P3648 ht ...
- 【CJOJ1494】【洛谷2756】飞行员配对方案问题
题面 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1 ...
- 洛谷2973 [USACO10HOL]赶小猪Driving Out the Piggi… 概率 高斯消元
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - 洛谷2973 题意概括 有N个城市,M条双向道路组成的地图,城市标号为1到N.“西瓜炸弹”放在1号城市,保证城 ...
- 【洛谷】【单调栈】P4333 [COI2007] Patrik
--接上一篇题解,[洛谷][单调栈]P1823音乐会的等待 关于题目大意在上一篇题解里已经说清楚了,这里不再多阐述 想看题目->戳这里 [算法分析:] 在对元素a进行判断时,如果它与栈顶元素相等 ...
- 洛谷 P1056 排座椅 桶排序
桶排序大法好! 每次一看到这种范围小的题,本萌新就想用桶排. 因为题目中的m,n都小于1000,我们就可以定义两个1000的数组,表示每一行或每一列可以隔开几对讲话的童鞋. 然后再定义两个1000的数 ...
- 洛谷 P1045 【麦森数】快速幂
不用快速幂,压位出奇迹! 本人是个蒟蒻,不太熟悉快速幂,这里给大家介绍一种压位大法. 让我们来分析一下题目,第一位是送分的,有一个专门求位数的函数:n*log10(2)+1. 然后题目中p<=3 ...
随机推荐
- labview学习——生产者/消费者(数据)(事件)
其主要的模型: 主要从以下几个方面理解: 1.可重入性 正常的labview是多线程设计语言,而我们在执行VI时的规则是通过VI的命名来分别调用实现的. 打开VI的Highlight调试工具,可以看出 ...
- [LC] 230. Kth Smallest Element in a BST
Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Not ...
- linux公社大量免费的在线android资料
2011年linux数据库的android在线分享 linux公社:开源公社 本文撰写:杨凯专属频道 下载如需密码,详见博客案例:点击我去查看密码 2011年9月12日 21: ...
- BeWhatever
Hadoop Distributed File System:分布式文件系统. HDFS基于流数据模式访问和处理超大文件需求开发,具有高容错性,高可靠性,高可扩展性,多部署在低成本的硬件上.HDFS提 ...
- 蚂蚁金服招聘-无线测试开发(20k-36k/月)
蚂蚁金服-支付宝国际事业部-高级测试开发工程师/测试专家 工作年限:三年以上学历要求:本科期望层级:P6/P7工作地点:上海,杭州,深圳等为什么选择加入我们? 我们的岗位有何不同?1.国际化远景:随着 ...
- H5新增特性之语义化标签
H5新增特性之语义化标签 语义化标签顾名思义标签有自己的含义,浏览器或者程序员一看就知道是什么.在HTML 5出来之前,我们用div来表示页面章节,但是这些div都没有实际意义.(即使我们用css样式 ...
- string类中getline函数的应用
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- ndarray数组的索引和切片
索引:获取数组中特定位置元素的过程 切片:获取数组元素子集的过程 import numpy as np 一维数组 一维数组的索引和切片与python中的列表类似 索引:若元素个数为n,则索引下标可表示 ...
- 2019年后,Java岗面试快速突击指南
大家好.这篇文章给大家分享一下如何获得一个可以去参加面试的最小可行知识(Minimal Viable Knowledge)!我自己在就基本上靠文章中的策略在找实习的时候拿到了头条阿里的offer.所以 ...
- 树莓派3B安装OpenWrt打造超级路由器
网上有很多树莓派安装OpenWrt的教程,我这里写一下个人安装体验以及踩过的坑