社区讨论

改了半天就差跟第一篇题解一模一样了,为啥我WA 10pts

P3537[POI 2012] SZA-Cloakroom参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@m1w2t6hq
此快照首次捕获于
2024/10/05 19:33
去年
此快照最后确认于
2025/11/04 17:57
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
#define int long long
#define MAXN 1500010
using namespace std;
int n,d[MAXN],m[MAXN],k[MAXN],s[MAXN],id2[MAXN],mx,Q;
int dp[MAXN],Ans[MAXN];
struct node
{
	int a,b,c;
	int id;
}a[MAXN];
struct Qry
{
	int m,k,s;
	int id;
}qry[MAXN];
bool cmp(node a,node b)
{
	return a.a<b.a;
}
bool cmp2(Qry a,Qry b)
{
	return a.m<b.m;
}
signed main()
{
	scanf("%d", &n);
	for(int i=1;i<=n;i++)
		cin>>a[i].c>>a[i].a>>a[i].b,a[i].id=i;
	scanf("%d", &Q);
	for(int i=1;i<=Q;i++)
		scanf("%d%d%d", &qry[i].m,&qry[i].k,&qry[i].s),qry[i].id=i;
	sort(a+1,a+1+n,cmp);
	sort(qry+1,qry+1+Q,cmp2);
	int tot=1;
	dp[0]=1e9;
	for(int i=1;i<=Q;i++)
	{
		while(tot<=n&&a[tot].a<=qry[i].m)
		{
			for(int j=100000;j>=a[tot].c;j--)
				dp[j]=max(dp[j],min(dp[j-a[tot].c],a[tot].b));
			tot++;
		}
		if(dp[qry[i].k]>qry[i].m+qry[i].s) Ans[qry[i].id]=1;
		else Ans[qry[i].id]=0;
	}
	for(int i=1;i<=Q;i++)
	{
		if(Ans[i]) puts("TAK");
		else puts("NTE");
	}
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...