首页 > 其他分享 >AcWing168 生日蛋糕(剪枝)

AcWing168 生日蛋糕(剪枝)

时间:2022-10-25 22:11:59浏览次数:100  
标签:剪枝 typedef return int ans 生日蛋糕 AcWing168 minv define

原题链接

思路的话,就是暴搜加剪枝,中间有个放缩

思路看这篇

#include <bits/stdc++.h>
#define pb push_back
#define fi first
#define se second
#define all(x) (x).begin(), (x).end()
#define SZ(x) (int) (x).size()
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
typedef vector<int> VI;
typedef double db;

const int N = 25;
int n, m, minv[N], mins[N], ans = 0x3f3f3f3f; // 预处理每层最小体积和最小面积
int H[N], R[N];
void dfs(int u, int s, int v) {  
  if (s+mins[u-1] >= ans) return;
  if (s+2*(n-v)/R[u+1] >= ans) return;
  if (v+minv[u-1] > n) return; 
  if (u == 0) {
    if (v == n) ans = s;
    return;
  }
  for (int r = min(R[u+1]-1, (int) sqrt(n-v-minv[u-1])); r >= u; r--) {
    for (int h = min(H[u+1]-1, (n-v-minv[u-1])/r/r); h >= u; h--) {
      int th = H[u], tr = R[u];
      H[u] = h;
      R[u] = r;
      int t = 0;
      if (u == m) t = r*r;
      dfs(u-1, s+2*r*h+t, v+r*r*h);
      H[u] = th, R[u] = tr;
    }
  }
}
void solve() {
  cin >> n >> m;
  // 题目说了所有数皆为正整数,因此第i层高大于等于i,底面半径大于等于i
  for (int i = 1; i <= m; i++) { 
    mins[i] = mins[i-1]+2*i*i;
    minv[i] = minv[i-1]+i*i*i;
  }
  R[m+1] = H[m+1] = 0x3f3f3f3f; 
  dfs(m, 0, 0);
  if (ans == 0x3f3f3f3f) ans = 0;
  cout << ans << '\n';
}

int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  solve();
  return 0;
}

标签:剪枝,typedef,return,int,ans,生日蛋糕,AcWing168,minv,define
From: https://www.cnblogs.com/chelly-algorithm/p/16826539.html

相关文章

  • 搜索剪枝练习
    搜索剪枝练习搜索是一类很暴力的做法,往往时间复杂度都是指数级别的,大部分时候都无法作为正解使用。不过可以通过一些剪枝技巧,减小搜索规模,加快程序运行速度。P1025[NOIP......
  • 回溯剪枝
    39.组合总和&40.组合总和II前者数组中的数字可以重复,后者不可以;前者数组中无重复数字,后者有;前者不需要排序,后者需要;前者:dfs(candidates,i,target-candidat......
  • 机器学习—决策树—决策树的剪枝
    1决策树的剪枝当输入的原始数据有较多的变量时,通过决策树算法生成的决策树可能会非常的庞大。这样的一颗决策树在训练集上有很好的表现,但是在测试集上的表现往往不甚理想......
  • hdu 1979 DFS + 字典树剪枝
    ​​http://acm.hdu.edu.cn/showproblem.php?pid=1979​​FilltheblanksTimeLimit:3000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)Tota......
  • And RMQ 势能线段树-用剪枝+单点修改实现区间修改
    https://codeforces.com/gym/103107/problem/AA.AndRMQtimelimitpertest3secondsmemorylimitpertest512megabytesinputstandardinputoutputstan......
  • 牛客dfs专题 NC13594 选择困难症(dfs+剪枝)
    链接:https://ac.nowcoder.com/acm/problem/13594来源:牛客网题目描述有k类物品,每类物品的个数为Ai,每个物品有一个喜欢值Vj,代表小L对这件物品的喜欢程度。小L想知道,有多......
  • ECCV 2022 | 新方案: 先剪枝再蒸馏
    前言 论文提出了一个新的框架,“prune,thendistill”,该框架首先剪枝模型,使其更具可移植性,然后提取给student。并进一步从理论上证明了剪枝后的teacher在蒸馏中起到正则化......
  • 2022/8/19日测试 (内含Ticket Game,生日蛋糕,最优贸易,装满的油箱,道路游戏)
    TicketGame标签:思维--------------------------------------------------------------------------------------------------------Alice和Bob生活在Berland。Berland......
  • 1013 [USACO 2007 Ope S]Catch That Cow bfs 剪枝
     链接:https://ac.nowcoder.com/acm/contest/26077/1013来源:牛客网题目描述FarmerJohnhasbeeninformedofthelocationofafugitivecow......
  • PyTorch 剪枝
    pytorch实现剪枝的思路是生成一个掩码,然后同时保存原参数、mask、新参数,如下图 pytorch剪枝分为局部剪枝、全局剪枝、自定义剪枝;局部剪枝是对模型内的部分模......