关于刚刚的T1
  • 板块学术版
  • 楼主cmll02
  • 当前回复12
  • 已保存回复12
  • 发布时间2021/1/16 18:10
  • 上次更新2023/11/5 04:46:18
查看原帖
关于刚刚的T1
171487
cmll02楼主2021/1/16 18:10

RT,玄学复杂度AC求问QAQ

#include <stdio.h>
#include <string.h>
inline int read()
{
	int num = 0; char c = getchar();
	while (c < 48 || c > 57)c = getchar();
	while (c >= 48 && c <= 57)num = (num << 3) + (num << 1) + (c ^ 48), c = getchar();
	return num;
}
char _F[33];
inline void print(long long x) {
	if (x == 0)
	{
		putchar(48);
		return;
	}
	long long tmp = x > 0 ? x : ~x + 1;
	if (x < 0) putchar('-');
	int cnt = 0;
	while (tmp) {
		_F[cnt++] = tmp % 10 + '0';
		tmp /= 10;
	}
	while (cnt > 0) putchar(_F[--cnt]);
}
int a[300005],t[300005];
#include <stdlib.h>
int main() {
	srand(114514);
	int n = read(), w = read(), ans = 0x3f3f3f3f, sum=0;
	for (int i = 1; i <= n; i++) t[a[i] = read()]++;
	for(int i=1;i<=n;i++)if(t[a[i]]*2>n)return printf("%d\n",n-t[a[i]])&0;else ans=ans>n-t[a[i]]?n-t[a[i]]:ans;
	for(int m=n>1000?8:1;m<=w/n;m++,sum=0){
		if(n>1000&&rand()%5<=1)continue;
		//for(int i=1,q=1;i<=w-m*(n-1);i++,q=i,sum=0)
		for(int i=w-m*(n-1),q=w-m*(n-1);i>=1;i--,q=i,sum=0)
		{
			if(i!=a[1])sum++;
			if (!i)continue;
			for (int j = 2; j <= n; j++)
			{
				q+=m,sum+=(q!=a[j]);
				if(sum>=ans)goto hi;
			}
		//	printf("m = %d  i = %d  sum = %d\n",m,i,sum);
			//if(sum<6)getchar();
			if (ans > sum)
			{
				ans = sum;
			}
			hi:;
		}
	}
	print(ans); putchar(10);
	return 0;
}
  1. 最后一个Subtask公差是不是都>=8?

  2. 60%60\% 概率试探一个答案就AC了?

这是甚么数据qaq

2021/1/16 18:10
加载中...