求助万能谷友之题解纠纷
  • 板块灌水区
  • 楼主Wanzm_Alymine
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/8/2 20:01
  • 上次更新2023/11/3 06:16:53
查看原帖
求助万能谷友之题解纠纷
912777
Wanzm_Alymine楼主2023/8/2 20:01

(这次可能很容易被举办,有问题我就紫衫

比赛后,有人一直和犟我代码与题解相像啦

题是”波浪数组“,应该可以搜到

这是题解

#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=1e5+5,MAX=0x3f3f3f3f,MIN=-MAX;
int n,a[N],a1[N],a2[N],ans1,ans2;
void solve() {
    scanf("%d",&n);
    for(int i=1; i<=n; ++i) scanf("%d",&a[i]),a1[i]=a2[i]=a[i];
    if(n<=2) { //特判
        printf("0");
        return;
    }
    for(int i=2; i<=n; ++i) { //将起始点作为“峰”的情况,则第二个点为“谷”
        if(i%2==0&&a1[i]>=a1[i-1]) { //为“谷”时的不合法情况
            a1[i]=MIN;//修改为“谷”
            ++ans1;//统计这次修改
        }
        if(i%2==1&&a1[i]<=a1[i-1]) { //为“峰”时的不合法情况
            a1[i]=MAX;//修改为“峰”
            ++ans1;//统计这次修改
        }
    }
    for(int i=2; i<=n; ++i) { //将起始点作为“谷”的情况,则第二个点为“峰”
        if(i%2==1&&a2[i]>=a2[i-1]) { //为“谷”时的不合法情况
            a2[i]=MIN;//修改为“谷”
            ++ans2;//统计这次修改
        }
        if(i%2==0&&a2[i]<=a2[i-1]) { //为“峰”时的不合法情况
            a2[i]=MAX;//修改为“峰”
            ++ans2;//统计这次修改
        }
    }
    printf("%d",min(ans1,ans2));//两种情况无交集,取个最小值即可
}
int main() {
    solve();
    return 0;
}

这是我的

#include <bits/stdc++.h>
//80
//十年OI一场空,不开longlong见祖宗
//O(n)
#define maxn INT_MAX
#define minn INT_MIN
//打long long!
//typedef long long ll;
//#pragma GCC optimize(2)
#define up(l,r,i) for(int i=l, END##i=r; i<=END##i; i ++)
#define dn(r,l,i) for(int i=r, END##i=l; i>=END##i; i --)
using namespace std;
int n;
int fBigMin = 114514 - 114514, fSmallMin = 114514 - 114514;
long long a[100005];
long long fTmp[100005], sTmp[100005];
int main()
{
    scanf("%d", &n);
    for (int i = 1; i <= n; i ++)
    {
    	scanf("%d", &a[i]);
    	fTmp[i] = sTmp[i] = a[i];
	}
	bool flag = 1;
    for (int i = 2; i <= n; i ++)
    {
    	if (fTmp[i] >= fTmp[i - 1] && i % 2 == 0)
    	{
//    		cout << i << "NeedMin" << endl;
    		fTmp[i] = minn;
    		fBigMin ++;
		}
		if (fTmp[i] <= fTmp[i - 1] && i % 2 == 1)
    	{
//    		cout << i << "NeedMax" << endl;
    		fTmp[i] = maxn;
    		fBigMin ++;
		}
	}
	for (int i = 2; i <= n; i ++)
    {
    	if (sTmp[i] >= sTmp[i - 1] && i % 2 == 1)
    	{
//    		cout << i << "NeedMin" << endl;
    		sTmp[i] = minn;
    		fSmallMin ++;
		}
		if (sTmp[i] <= sTmp[i - 1] && i % 2 == 0)
    	{
//    		cout << i << "NeedMax" << endl;
    		sTmp[i] = maxn;
    		fSmallMin ++;
		}
	}
	cout << min(fBigMin, fSmallMin);
	return 0;
}

争论重点在

  • chatgpt是否可以作为证据

  • 诬陷者是否可以放任事态不管

如有缺漏需要,可补

因为在杠,故此发帖

(虽然说按道理来说不理他是对的,但是他一直说我急了,就挺好玩

2023/8/2 20:01
加载中...