新人求助 **卡常题
  • 板块P1528 切蛋糕
  • 楼主wurzang
  • 当前回复15
  • 已保存回复15
  • 发布时间2020/7/13 18:48
  • 上次更新2023/11/6 23:11:26
查看原帖
新人求助 **卡常题
344016
wurzang楼主2020/7/13 18:48

差不多能卡的东西都卡了。

还有这题时限不能开大点?非要成卡常题来浪费评测资源?

代码如下。

#pragma GCC optimize(3)
#pragma GCC target("avx")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
int cake[55],waste,sum,n;
int a[1025],all[1025],mid;
inline bool dfs(int Cake,int Preson){
	if(!Preson) return 1;
	if(sum-waste<all[mid]) return 0;
	for(register int i=Cake;i<=n;++i)
		if(cake[i]>=a[Preson]){
			cake[i]-=a[Preson];
			if(cake[i]<a[1]) waste+=cake[i];
			if(a[Preson]==a[Preson-1]){
				if(dfs(i,Preson-1)) return cake[i]+=a[Preson],1;
			}
			else if(dfs(1,Preson-1)) return cake[i]+=a[Preson],1;
			if(cake[i]<a[i]) waste-=cake[i];
			cake[i]+=a[Preson];
		}
	return 0;
}
inline int rd() {
    char ch;
    int g;
    for (ch = getchar(), g = 0; ch < '0' || ch > '9'; ch = getchar())
        ;
    for (; ch >= '0' && ch <= '9'; ch = getchar()) g = (g << 1) + (g << 3) + (ch ^ 48);
    return g;
}
int t[55];
int main(){
	int m;
	n=rd();
	for(register int i=1;i<=n;++i)
		t[i]=rd(),sum+=t[i],cake[i]=t[i];
	sort(t+1,t+n+1);
	m=rd();
	for(register int i=1;i<=m;++i)
		a[i]=rd();
	sort(a+1,a+m+1);
	while(m&&a[m]>sum) --m;
	for(register int i=1;i<=m;++i) all[i]=all[i-1]+a[i];
	int l=0,r=m,ans=0;
	while(l<=r){
		mid=(l+r)>>1;
		waste=0;
		if(dfs(1,mid)) ans=mid,l=mid+1;
		else r=mid-1;
	}
	cout<<ans;
	return 0;
}
2020/7/13 18:48
加载中...