论黑心大样例
查看原帖
论黑心大样例
760291
zhangbo1000楼主2024/12/2 12:50

rt,随便写了如下程序:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<vector>
#include<cstring>
#include<algorithm>
#include<queue>
#include<set>
#include<deque>
#include<map>
#include<random>
#include<unordered_map>
using namespace std;

namespace code{
	using ll=long long;
	using ull=unsigned long long;
	using uint=unsigned int;
#define F(i,x,y) for(int i=(x),__tt2__=(y);i<=__tt2__;i++)
#define R(i,x,y) for(int i=(x),__tt2__=(y);i>=__tt2__;i--)
#define _F(i,x,y) for(int i=(x),__tt2__=(y);i<__tt2__;i++)
#define _R(i,x,y) for(int i=(x),__tt2__=(y);i>__tt2__;i--)
#define debug(x) cerr<<#x<<'='<<(x)<<endl
	map<int,int> a;
	vector<int>tmp;
	int main(){
		int T,n,m,v,tot=0;
		cin>>T>>n>>m>>v;
		mt19937 rng((time(0)^T)*n/m+v);
		F(i,1,100){
			F(j,1,T){
				a.clear();
				tmp.clear();
				bool check=0;
				F(i,1,m){
					int c=rng()%n+1,d=rng()%v+1;
					if(a[c]==0)a[c]=d;
					else if((a[c]!=d)){
						if((i!=m)&&(j!=T))tot++;
						check=1;
						break;
					}
					tmp.push_back(c);
				}
				debug(tmp.size());
				if(check)break;
			}
		}
		debug(tot);
		return 0;
	}
}
signed main(){return code::main();}

它会输入 T,n,m,vT,n,m,v,造一百组数据,输出第多少个 cic_i 时判出无解(有解则输出 mm)以及总计有多少组数据出现了“无解不在最后一次循环”的情况。

然后我把 172017\sim20 号点的数据分别输进去了 55 次,得到的无一例外是 100100 组,也就是说,在随机数据下,极大概率出现无解且不是最后一次循环判出的情况,本题极弱的大样例疑似刻意构造。

2024/12/2 12:50
加载中...