这个题需要转换下思维,把当前区间至少需要的经验系数记录下来。 我后面卡在了没有初始化~,郁闷
代码:
#include<cstdio>
#include<ctime>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<map>
#include<algorithm>
#define max(a,b) a>b?a:b
#define min(a,b) a>b?b:a
using namespace std;
const int maxn=100;
bool vis[10001];
int num[maxn];
int cur=0;
int main()
{
srand((int)time(NULL));
printf("%d\n",20);
for(int i=0;i<20;i++)
{
int n=rand()%10000;
int k=10;
int m=rand()%10000;
printf("%d %d %d\n",n,k,m);
memset(vis,0,sizeof(vis));
for(int j=1;j<10;j++)
{
num[j]=rand()%10000;
if(vis[num[j]])
{
vis[num[j]]=1;
j--;
}
}
sort(num,num+10);
for(int j=1;j<10;j++)
printf("%d ",num[j]);
printf("\n");
for(int j=0;j<m;j++)
{
int op=rand()%100;
int sl=rand()%n;
int sr=rand()%n;
sl=max(sl,1);
sr=max(sr,1);
int val=rand()%100;
if(sl>sr)
swap(sl,sr);
if(op&1)
printf("W %d %d %d\n",sl,sr,val);
else
printf("Q %d %d\n",sl,sr);
}
}
return 0;
}