19pts求调
查看原帖
19pts求调
103947
nxt_permutation楼主2023/2/27 22:37

错的部分均是Score=3,Type=3,代码按照题解思路写的,求改错QwQ

#include<iostream>
#include<cstdio>
using namespace std;
long long t,n,k,a,b;
int main()
{
	scanf("%lld",&t);
	while(t--)
	{
		scanf("%lld%lld%lld%lld",&n,&k,&a,&b);
		if(k>n)
		{
			printf("0\n");
			for(int i=1;i<=n;i++) printf("%d",i%2);
			printf("\n");
		}
		else
		{
			long long tot=((n-1)/(k-1));
			long long sum1=((n-k+1)*b);
			long long sum2=(tot*a);
			long long sum3=sum2-a+(n-(tot*(k-1)))*b;
			long long minn=min(sum1,min(sum2,sum3));
			if(minn==sum1)
			{
				printf("%lld\n",sum1);
				for(int i=1;i<=n;i++) printf("%d",i%2);
				printf("\n");
			}
			else if(minn==sum2)
			{
				printf("%lld\n",sum2);
				int now=0;
				for(long long i=1;i<=n;i++)
				{
					if((i%(k-1)==0)&&(i!=n))
					{
						printf("%d%d",now,now);
						now=now^1;
						i++;
					}
					else
					{
						printf("%d",now);
						now=now^1;
					}
				}
				printf("\n");
			}
			else
			{
				printf("%lld\n",sum3);
				int now=0;
				for(long long i=1;i<=n;i++)
				{
					if((i%(k-1)==0)&&(i/(k-1))<=tot-1)
					{
						printf("%d%d",now,now);
						now=now^1;
						i++;
					}
					else
					{
						printf("%d",now);
						now=now^1;
					}
				}
				printf("\n");
			}
		}
	}
	return 0;
}
2023/2/27 22:37
加载中...