首页 > 其他分享 >「杂题乱刷」洛谷P9253

「杂题乱刷」洛谷P9253

时间:2023-11-23 20:22:49浏览次数:37  
标签:10 洛谷 int 杂题 sum2 else pd P9253

题目链接

P9253 [PA 2022] Ornitolog 2

题目简述

给定一个音高序列,输出最少要修改多少整数才能使这个序列成为交替鹡鸰鸟鸣的音高序列。

题意分析

操作后的音高序列总共有 \(2\) 种可能:

  1. 音量由高变低再由低变高;

  2. 音量由低变高再由高变低。

又因为大小范围是 \(10^4 \times 5\),因此将数组开大一点定义大小为 \(10^5+10\)。

这样也需要考虑 \(2\) 种情况:

  1. 如果 \(i\) 为偶数,且 \(a_{i-1} \le a_{i}\),那么将对应的 \(sum\) 增加 \(1\),将 \(pd\) 设为 true

  2. 如果 \(i\) 为奇数,且 \(a_{i-1} \le a_{i}\),那么将对应的 \(sum\) 增加 \(1\),将 \(pd\) 设为 true,否则将 \(pd\) 设为 false

最后只需要输出两种情况所需要的操作次数的最小值即可。

参考代码

#include<bits/stdc++.h>
using namespace std;
#define QwQ return 0;
int a[100010],n,sum1,sum2,pd;
int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
		cin>>a[i];
	for(int i=1;i<n;i++)//首先考虑第一种情况
	{
		if(i%2==0)
		{
			if(a[i-1]>=a[i]&&pd==0)
				sum1++,pd=1;
			else
				pd=0;
		}
		else
		{
			if(a[i-1]<=a[i]&&pd==0)
	         	sum1++,pd=1;
			else//否则将pd设为0
				pd=0;
		}
	}
	pd=0;
	for(int i=1;i<n;i++)//然后再考虑第二种题目
	{
		if(i%2==1)//如果i为奇数,且a[i]>=a[i-1]那么sum2增加1,将pd设为 1
		{
			if(a[i-1]>=a[i]&&pd==0)
				sum2++,pd=1;
			else//否则将pd设为0
				pd=0;
		}
		else//如果i为偶数,且a[i]>=a[i-1]那么sum2增加1,将pd设为1
		{
			if(a[i-1]<=a[i]&&pd==0)
				sum2++,pd=1;
			else//否则将pd设为 0
				pd=0;
		}
	}
	cout<<min(sum1,sum2);//输出最小值
   QwQ;
}

标签:10,洛谷,int,杂题,sum2,else,pd,P9253
From: https://www.cnblogs.com/wangmarui/p/17852415.html

相关文章

  • 洛谷 P8955 「VUSC」Card Tricks
    洛谷传送门很显然每个数的每一位最多只会修改一遍。于是拆位,每一位开个并查集,存下一个不拥有这一位的数,就可以暴力修改了。但是空间是\(O(n\logV)\)的,炸了。于是可以考虑手写i24类,同时并查集寻找祖先不要用递归版的路径压缩,然后就过了。code//Problem:P8955「VUSC」......
  • 【模板】并查集 (洛谷P3367)
    1#include<bits/stdc++.h>2usingnamespacestd;3template<classT>4inlinevoidread(T&s)5{6s=0;7intw=1;8charch=getchar();9while(ch<'0'||ch>'9')10{11......
  • 【模板】线段树1(洛谷P3372)
    1#include<iostream>2#include<cstdio>34usingnamespacestd;56template<classT>7inlinevoidread(T&s)8{9s=0;10intw=1;11charch=getchar();12while(ch<'0�......
  • 【树链剖分】P3401 洛谷树 题解
    P3401考虑先将路径权值进行转化,因为很难对路径直接进行统计。考虑如何表示出这条路径的权值。记\(s_i=\oplus_{j\in\text{path}(1,i)}w_j\),其中\(\text{path}(i,j)\)表示\(i\)到\(j\)的路径上的边集。则\(u\tov\)的路径的权值为\(s_u\opluss_v\)。现在转变为......
  • 10月杂题
    还是得写写杂题,初三赛季说明这对我是buff啊。这次CSP-S再次检验王者是超级debuff!!!1.P7830[CCO2021]ThroughAnotherMazeDarkly感受一下,每次从根开始绕一圈回去,这个圈会越来越大,直到大小变成\(n-1\)。考虑求出每个边在最后一个圈内入和出的时间(就是欧拉序),你会发现每......
  • 11月杂题
    1.10.30D/qoj6794SequencetoSequence先观察到我们一定是先减后加。因为对于一个数+1-1一定不会改变,但-1+1就会有改变。那对于相邻的+1-1操作,如果不交就直接交换;否则把相交的部分直接删掉,那要么删成两个+1,要么成两个-1,要么是不交的+1-1。如果我们指定一个数减......
  • 9月杂题
    为什么19号了才开始写杂题1.ZJOI2018胖考虑一个新增边能松哪些点。它会被其它新增边影响。感受一下,松的范围一定是一个区间。如果\(|x-x_i|>|x-x_j|\)且\(b_i+|s_x-s_{x_i}|>b_j+|s_x-s_{x_j}|\),\(i\)就松不到\(j\)。二分边界,RMQ判断即可。以左端点为例,\([mid,i]\)......
  • 洛谷P8612 取宝
    经典的记忆化搜索,一开始因为最后的答案忘记加取模卡了半天,真是愚蠢至极。#include<iostream>#include<algorithm>#include<stdio.h>#include<stdlib.h>#include<cstring>usingnamespacestd;constintN=55,mod=1e9+7;intf[N][N][15][15];//横坐标纵......
  • 洛谷P8602 大臣的旅费
    这道题既可以用图论多次求单源最短路暴力来做,也可以用正解:求树的直径来做。#include<stdio.h>#include<stdlib.h>#include<algorithm>#include<iostream>#include<vector>usingnamespacestd;typedeflonglongll;constintN=1e5+5,M=N<<1;in......
  • 【洛谷 P1125】[NOIP2008 提高组] 笨小猴 题解(字符串+映射+集合)
    [NOIP2008提高组]笨小猴题目描述笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设是单词中出现次数最多的字母的出现次数,是单词中出现次数最少的字母的出现次数,......