求助:一个细节导致WA了
  • 板块P7107 天选之人
  • 楼主Ritalc
  • 当前回复5
  • 已保存回复5
  • 发布时间2020/11/29 21:14
  • 上次更新2023/11/5 07:04:04
查看原帖
求助:一个细节导致WA了
109524
Ritalc楼主2020/11/29 21:14

判断 YES/NO 的时候

if((n - p) * (av - 1) >= k - av * p)

能A

但是
av>ceil(tmp*1.0/(n-p)

就WA了几个点

有人能康康或者给一组hack数据吗

谢谢啦

#include<bits/stdc++.h>
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
#define int long long
#define re register
#define mod 998244353
#define inf 0x3f3f3f3f
using namespace std;
const int N=300005;
int n,m,k,d,t,sum,mi,p;  
char a[N];
int b[N];
template <class T> inline void read(T &x){
	x=0;int g=1; char s=getchar();
	for (;s>'9'||s<'0';s=getchar())	if (s=='-') g=-1;
	for (;s<='9'&&s>='0';s=getchar()) x=(x<<1)+(x<<3)+(s^48);
	x*=g;
}
signed main()
{
	re int i,j,x,y,z;
	read(n);read(m);read(k);read(p);
	if(n==p&&k%p!=0) return printf("NO"),0;
	int av=k/p;
	
	if (av>m) av=m;
	int tmp=k-av*p,cnt=0;
	if ((n - p) * (av - 1) >= k - av * p)//av>ceil(tmp*1.0/(n-p) ???
	{
		printf("YES\n");
		for (i=1;i<=p;i++)
			printf("%lld %lld\n",av,m-av);
		
		while(tmp)
		{
			if (tmp>=av-1) printf("%lld %lld\n",av-1,m-av+1),tmp-=av-1;
			else printf("%lld %lld\n",tmp,m-tmp),tmp=0;
			cnt++;
		}
		for (i=1;i<=n-p-cnt;i++)
			printf("%lld %lld\n",0,m);
	}
	else printf("NO");
	return 0;
}                   
2020/11/29 21:14
加载中...