请求添加hack数据
  • 板块P1833 樱花
  • 楼主Alexxu2024
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/5 22:19
  • 上次更新2024/8/6 08:36:56
查看原帖
请求添加hack数据
716352
Alexxu2024楼主2024/8/5 22:19

hack:\text{hack:}

Input\text{Input}:

0:0 16:40 1
1 1 0

Output\text{Output}:

1000

理由:

下面这份代码可以顺利 AC,但明显第 3131 行有问题,理论上 cc 要设置成 INF,也就是至少 10001000,但经测试本题中 838838 已经能够 AC,说明一棵可以看无限次的樱花树最多被看了 838838 次。

#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
int dp[40010];
int read(){
	int back=0,f=1;
	char x=getchar_unlocked();
	while(!(x>='0'&&x<='9')){
		if(x=='-'){
			f=-1;
		}
		x=getchar_unlocked();
	}
	while(x>='0'&&x<='9'){
		back*=10;
		back+=x-'0';
		x=getchar_unlocked();
	}
	return back*f;
}
int main(){
	int n,t1h,t1m,t2h,t2m;
	t1h=read(),t1m=read(),t2h=read(),t2m=read(),n=read();
	t1m+=t1h*60;
	t2m+=t2h*60;
	int V=t2m-t1m;
	while(n--){
		int v,w,c;
		cin >> v >> w >> c;
		if(c==0){
			c=838;//这句话,应该至少为1000,但只要838就能够AC
		}
		for(int i=1;c;i*=2){
			if(i<=c){
				c-=i;
			}
			else{
				i=c;
				c=0;
			}
			for(int j=V;j>=v*i;j--){
				dp[j]=max(dp[j],dp[j-v*i]+w*i);
			}
		}
	}
	cout << dp[V];
	return 0;
}
话说真的有人会像我一样想到这个问题吗
2024/8/5 22:19
加载中...