首页 > 其他分享 >AT3525 题解

AT3525 题解

时间:2022-08-25 00:22:06浏览次数:79  
标签:include int 题解 scanf AT3525 now

题目传送门

小学生又双叒叕来写题解啦!

翻了一下大家的思路,怎么都一样?

当数量达到 \(10^7\) 时,题解代码全爆掉!

你问为什么,时间效率 \(O(n)\) 不稳过吗?

对,可是空间复杂度呢,显然爆掉。

因此,我使用滚动数组。

由于需要关注两个相邻的数,我们自然就只需用两个变量代替数组。

其他思路还是一样的,其他题解都讲明白了,因此不再赘述。

送上满分代码:

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
	int n, cnt = 0, last, now;
	scanf("%d", &n);
	scanf("%d", &now);
	for (int i = 2; i <= n; i++)
	{
		//下面两行滚动数组的实现。 
		last = now;
		scanf("%d", &now);
		if (last == i-1) swap(now, last), cnt++;
	}
	if (now == n) cnt++; //最后一个数没有处理到,要额外补处理。 
	printf("%d\n", cnt);  //勿忘祖传换行。 
	return 0;
}

首发:2022-02-04 22:57:26

标签:include,int,题解,scanf,AT3525,now
From: https://www.cnblogs.com/liangbowen/p/16622800.html

相关文章

  • AT2586 题解
    题目传送门许多人使用栈,然而根本不需要。先读入整个字符串,然后枚举每个字符。如果当前字符是左括号,往后搜,有就匹配并消除。然而消除这个动作太慢了,如果匹配到,只需把它......
  • AT4276 题解
    小学生又来写题解啦!容易想到,范围内七五三数不会很多,因此尝试暴力搜索,即深搜。参数除了当前的数外,还有三个布尔类型的变量分别表示三、五、七有无出现。每次都判断是否为......
  • P8080 题解
    题目传送门小学生又来写题解啦!你可能会认为,能够使用杯座人数的最大值,就是杯座数量。但结合样例一,若杯座数量大于总人数,只能输出总人数。下一个问题是如何计算杯座数量......
  • SP1163 题解
    题目传送门小学生又来写题解啦!本题显然是字符串模拟,认真维护好每个要求即可。首先先判断是情况一还是情况二,如果同时出现,输出报错信息。我们可以用一个函数实现上述功......
  • CF483A 题解
    题目传送门小学生又来写题解啦!刚看到范围,觉得不能枚举。仔细想一下,其实可以,因为第一组解应该离左边界较近,很快可以出答案。所以,我们可以尝试暴力枚举。最大公约数就用......
  • AT278 题解
    题目传送门小学生又双叒叕来写题解啦!我的思路是,先统计招牌与材料包中不同字母的数量。然后,枚举二十六个字母。对于每个字母,用招牌字母数除以材料包字母数,再向上取整。......
  • AT212 题解
    题目传送门小学生又双叒叕来写题解啦!翻了一下大家的代码,都好长好复杂,其实直接模拟就好了。先说一个巨坑:发现坐标与我们平时不同,所以进行修改。写一个函数,函数作用为找......
  • AT1578 题解
    题目传送门小学生又双叒叕来写题解啦!个人认为这题就考你的理解能力,因此,得先把题读懂。寿司就是01或10字符的组合,减少拆开寿司的次数,本质上就是保留完整的寿司。因......
  • AT4864 题解
    题目传送门显然是贪心题。对于每张优惠券,我们应该给当前最大的物品使用。如果使用普通的数组,每次都找最大值太慢了。因此,我们使用传说神器:优先队列。其他题解都没有说......
  • AT2286 题解
    题目传送门小学生又双叒叕来写题解啦!这题要用到因数个数定理,没学过的童鞋自己了解一下。由于和质数有关,我使用质数筛法。我使用较快的欧拉筛法算质数(想学就做这题)。事......