社区讨论

提供一个随机数据生成器

P2042[NOI2005] 维护数列参与者 7已保存回复 6

讨论操作

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

当前回复
6 条
当前快照
1 份
快照标识符
@lobl8pvw
此快照首次捕获于
2023/10/29 22:50
2 年前
此快照最后确认于
2023/11/04 03:45
2 年前
查看原帖
RT,没写 tot=0tot=0 的情况,请自行调整。
CPP
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <ctime>
using namespace std;
const int N=5,M=5,MAXN=10;
int fs(int x)
{
	if(rand()%2==0)
		return -x;
	else
		return x;
}
string chose[10];
int main(){
	freopen("in.in","w",stdout);
	chose[1]="INSERT";
	chose[2]="DELETE";
	chose[3]="MAKE-SAME";
	chose[4]="REVERSE";
	chose[5]="GET-SUM";
	chose[6]="MAX-SUM";
    srand(time(NULL));
    int n=N,m=M;
    printf("%d %d\n",n,m);
    for(int i=1;i<=n;i++){
        int x=rand()%10;
        printf("%d ",x);
    }
    puts(""); 
    for(int i=1,opt,v,x,k;i<=m;i++)
	{
		opt=rand()%6+1;
		if(!n)
		{
			if((opt%2)==0)
				opt=1;
			else
				opt=6;
		}
		cout<<chose[opt]<<" ";
		switch(opt)
		{
			case 1:
				v=rand()%(n+1);
				k=rand()%N+1;
				printf("%d %d",v,k);
				for(int i=1;i<=k;i++)
					printf(" %d",fs( rand()%(MAXN+1) ));
				puts("");
				n+=k; 
				break;
			case 2:
				v=rand()%n+1;
				k=rand()%(n-v+1)+1;
				printf("%d %d\n",v,k);
				n-=k;
				break;
			case 3:
				v=rand()%n+1;
				k=rand()%(n-v+1)+1;
				x=fs( rand()%(MAXN+1) );
				printf("%d %d %d\n",v,k,x);
				break;
			case 4:
				v=rand()%n+1;
				k=rand()%(n-v+1)+1;
				printf("%d %d\n",v,k);
				break;
			case 5:
				v=rand()%n+1;
				k=rand()%(n-v+1)+1;
				printf("%d %d\n",v,k);
				break;
			default:
				puts("");
				break;
		}
    }
    return 0;
}

回复

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

正在加载回复...