不知道为啥不对,调不出来了
  • 板块灌水区
  • 楼主Aakw_Tea
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/26 17:08
  • 上次更新2024/8/26 19:58:58
查看原帖
不知道为啥不对,调不出来了
1211960
Aakw_Tea楼主2024/8/26 17:08

事先声明:我是蒟蒻,我是蒟蒻,我是蒟蒻
可能会出现各种神经行为,请见谅qwq

题面

具体思路:枚举i,k j=(i+k)/2 只要 i>j<k即为一种梯度美

时间复杂度为O(T*n *n)超时

so :因为2j=ik 和为偶数,,所以j和k具有相同的奇偶性,枚举时将偶数和奇数分开枚举,计算次数直接少一半

代码:

#include<bits/stdc++.h>
using namespace std;
int j[100001],o[100001],t,n,maxi,maxt=-1,l,r,lj,a;
int main(){
//	freopen("tree.in","r",stdin);
//	freopen("tree.out","w",stdout);
	cin>>t>>n;
	for(int f=1;f<=t;f++){
		r=0;l=0;lj=0;
		for(int i=1;i<=n;i++){
			cin>>a;
			if(a%2==0)
				o[++r]=a;
			else 
				j[++l]=a;
		}
		for(int i=1;i<=r;i++)
			for(int k=1;k<=r;k++){
				int j=(i+k)/2;
				if(i==k||j==i||j==k){
					continue;
				}
				if(i>j&&j<k)lj++; 	
				
			}
		for(int i=1;i<=l;i++)
			for(int k=1;k<=l;k++){
				int j=(i+k)/2;
				if(i==k||j==i||j==k){
					continue;
				}
				if(i>j&&j<k)lj++; 	
			}
		if(lj>maxt){
			maxt=lj;
			maxi=f;
		}
	}
	cout<<maxi<<" "<<maxt;
    return 0;
}

qwq

2024/8/26 17:08
加载中...