1.宝物:复杂度分析+搜索
状态太复杂,故不用dp(加,乘)
对于每种物品,都有选和不选两种。所以复杂度2n
(1)小样例
暴力
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int n,k;
int t[55],a[55],b[55],c[55];
int id[55][55];
int cnt[55];
ll ans=0;
void dfs(int type,int aa,int bb,int cc){
if(type>k){
ans=max(ans,1ll*aa*bb*cc);
}
if(cnt[type]==0){
dfs(type+1,aa,bb,cc);
}
for(int i=1;i<=cnt[type];i++){
int v=id[type][i];
dfs(type+1,aa+a[v],bb+b[v],cc+c[v]);
}
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
int type;
scanf("%d%d%d%d",&type,&a[i],&b[i],&c[i]);
cnt[type]++;
id[type][cnt[type]]=i;
}
dfs(1,99,99,99);
cout<<ans;
return 0;
}
(2)加剪枝
2.赛车
关键:发现某种顺序(方式)做=>满足单调性=>单调栈
建立二次函数模型,求交点
3.法棍
一个串很大(10000),另一个串很小(20),对称法:值域和定义域的转换
4.软件下载
深搜,一定分两部分
void f(){
if(
}
&&和||莫写错
计蒜客