划分大理石(多重背包)
1.数塔2.[洛谷P2014] 选课3.玉蟾宫 (悬线DP)4.MooFest POJ-1990 (树状数组)5.情书密码 (树状数组)6.[SCOI 2009] 迷路 (矩阵快速幂)7.[BZOJ3306] 树8.[NOI2002] 荒岛野人9.SHUFFLE 洗牌 (扩展欧几里得+龟速乘)10.[SDOI2009] Bill的挑战 (状压DP)11.P4168 [Violet] 蒲公英 (莫队的强制在线)12.P3667 [USACO17OPEN] Bovine Genomics G (set容器+二分)13.P7903 兜心の顶(构造)14.[BZOJ2720 Violet 5]列队春游(概率期望+组合数学)
15.划分大理石(多重背包)
16.P5746 [NOI2002] 机器人M号17.苍与红的试炼(数位DP)18.【唐赛】高一小学期219.P10779 BZOJ4316 小 C 的独立集 (仙人掌DP)20.关于求合法括号子序列个数前言
发现自己思路好像和正常人不一样
遂有此篇博客
划分大理石
问题描述
有价值分别为
其中大理石的总数不超过
输入格式:
输入包含多组数据!
每组数据占一行,包含
当输入为
输出格式:
每组数据输出一个结果,每个结果占一行。
如果可以实现则输出
样例输入:
4 7 4 5 9 1
9 8 1 7 2 4
6 6 8 5 9 2
1 6 6 1 0 7
5 9 3 8 8 4
0 0 0 0 0 0
样例输出:
Can't
Can
Can't
Can't
Can
分析
很显然啊,多重背包,而且不问你方案,这就很nice
板子是这样的
bool f[10005];
memset(f,0,sizeof);
f[0]=1;
for (int i=1;i<=6;++i)
for (int j=1;j<=a[i];++j)
for (int k=m;k>=a[i];--k)
f[k]|=f[k-a[i]];
if (f[sum/2]) ...;
else ...;
显然会 TLE Time Limit Enough
考虑优化
考虑到若前
- 在
之前, 就已经 - 在
之前, 就已经
于是考虑贪心
设
则板子的
当
于是开心的提交
TLE
为啥呢 被hack了
考虑剪枝
发现如果每个价值的大理石都是
于是AC了
code
Elaina's code
#include<bits/stdc++.h>
using namespace std;
const int N=150000;
#define rd read()
#define int long long
#define inf 0x3f
#define INF 0x3f3f3f3f
#define mst(a,b) memset(a,b,sizeof(a))
#define re register
#define Elaina 0
inline int read(){
int x=0,f=1;
char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;
for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';
return x*f;
}
int n,m,a[8],sum,hsum,f[N],vis[N];
main(){
#ifdef ONLINE_JUDGE
freopen("b.in","r",stdin);
freopen("b.out","w",stdout);
#endif
while(1){
sum=0;
for(int i=1;i<=6;++i){
a[i]=rd;
}
if(!a[1]&&!a[2]&&!a[3]&&!a[4]&&!a[5]&&!a[6]) break;
sum=a[1]%2+a[2]%2+a[3]%2+a[4]%2+a[5]%2+a[6]%2;
if(!sum){
printf("Can\n");
continue;
}
sum=a[1]+a[2]*2+a[3]*3+a[4]*4+a[5]*5+a[6]*6;
if(sum%2){
printf("Can't\n");
continue;
}
mst(f,0);
f[0]=1;
hsum=sum/2;
for(int i=1;i<=6;++i){
mst(vis,0);
for(int j=0;j<=hsum;++j){
if(f[j]&&!f[j+i]&&vis[j]<a[i]){
f[j+i]=1;
vis[j+i]=vis[j]+1;
}
}
}
if(f[hsum]) printf("Can\n");
else printf("Can't\n");
}
return Elaina;
}
别急,还有后续
又双叒叕被卡了
都看到这了,真的不点个赞吗(>ω<*)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)