李煜东太神了啊啊啊啊啊! 生日蛋糕,著名搜索神题(还有虫食算). 当年的我30分.... 这哥们的程序0ms... 还有他的树网的核也巨TM神. 疯狂剪枝! DFS(int d, int s, int v, int lastR, int lastH) 剪枝1.考虑在每一层内枚举H,R时的上下界. 最小肯定是当前层数d,最大呢? 考虑: N - v = ∑hi * ri * ri(i = 1...d) N - v >= R * R * H R的最大值显然是H取最小的时候. H = 1 时,R *…
题目 搜索+剪枝,主要考察细节和搜索的顺序,首先可以发现所有数据均为整数,所以初始化每层的蛋糕R和H是整数,然后从高层向低层搜索,然后预处理出各层向低层的最小面积和体积用来剪枝. 就可以每层从当前最大半径向最小半径枚举,并分类讨论加剪枝即可. #include <bits/stdc++.h> using namespace std; int n, m, S[1001], V[1001];//最小面积和体积 struct cak { int R, H, CS, S, V; }data[1001]…
//By SiriusRen #include <bits/stdc++.h> using namespace std; #define int long long ,,,,-,-,-,-,},yy[]={,-,,-,,-,,-,}; ],stk2[],stk[],C[][],Ans,top; &&y>=&&x<=n&&y<=m;} int solve(int dep){ ,lasty=,ans=; ;i<=dep;i++…
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define mem(a,b) memset(a,b,sizeof(a)) #define ll long long const int maxn = 200100; int a[70]; int vis[70]; int n; int flag; int le…
洛谷题目传送门 顺便提一下题意有一个地方不太清楚,就是如果输出No还要输出最少需要添加多少张牌才能满足要求.蒟蒻考完以后发现四个点Too short on line 2... 比较需要技巧的搜索 既然是同一个花色要连续,那就枚举每一个花色在哪一段区间连续并选中四个区间,累计每个点数的选中次数. 最后来一个\(O(13)\)的\(\text{check}\),首先每个点数选中次数要不少于已有的个数.接着,只有所有点数的选中次数和已有点数相等时,才能判为'Yes',然后统计某张牌的花色的区间未包含这…