小心使得万年船,特别数据别样烦

首先我想说,很多题目真的是就差这么一点点 ,感觉自己哪里都没错,其实就是想不到一些特别的数据
B. Fixed Points
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

A permutation of length n is an integer sequence such that each integer from 0 to (n - 1) appears exactly once in it. For example, sequence [0, 2, 1] is a permutation of length 3 while both [0, 2, 2] and [1, 2, 3] are not.

A fixed point of a function is a point that is mapped to itself by the function. A permutation can be regarded as a bijective function. We’ll get a definition of a fixed point in a permutation. An integer i is a fixed point of permutation a0, a1, …, an - 1 if and only if ai = i. For example, permutation [0, 2, 1] has 1 fixed point and permutation [0, 1, 2] has 3 fixed points.

You are given permutation a. You are allowed to swap two elements of the permutation at most once. Your task is to maximize the number of fixed points in the resulting permutation. Note that you are allowed to make at most one swap operation.
Input

The first line contains a single integer n (1 ≤ n ≤ 105). The second line contains n integers a0, a1, …, an - 1 — the given permutation.
Output

Print a single integer — the maximum possible number of fixed points in the permutation after at most one swap operation.
Examples
Input

5
0 1 3 4 2

Output

3

#include <iostream>
#include <algorithm>
using namespace std;
int a[123456];
int main()
{
    int n;
    cin>>n;
    int i,cnt=0,t=0,flag=0;
    for(i=0;i<n;i++){
        cin>>a[i];
    }
    if (n==1) cnt=1;
    else{
    for(i=0;i<n;i++){
        t=a[i];
        if(a[i]==i)cnt++;
        else if(a[t]==i) flag=1;
    }
    if (flag==1) cnt=cnt+2;
    else cnt++;
    }
    cout <<cnt<<endl;
    return 0;
}

这个代码的具体意思就是说判断是不是有能交换的,交换后刚好满足有两个数再固定位置,+2或者+1

但是!
我忘记了要考虑不用交换的情况!!!
所以,思维的严密性非常重要

全部评论

相关推荐

机智的豹子有点心碎:UU我还在找工作还没找到,一直在搜简历怎么改,总结了这些: 1.SEO:简历根据每一个岗位定制化:使用这个岗位中所描述的工作的词,它要求什么技能就把自己的技能描述成什么样子,把SEO用在自己身上(把我的简历和个人特质,当成一个热门产品来做 “搜索引擎优化”),让HR能用最低的门槛看到我 2."顺序:把岗位要求的技能跟经历放在简历的最开头、最显眼的位置" 3.包装:简历是一个最终交付说明书,只要最终学习成长做得到就可以,在合适的范围内自我吹捧(我这个人怎么能够在HR的角度被迅速的看懂和看到,减轻HR的工作压力) 4.每点加小标题​:用6~10字概括该段内容,便于面试官快速抓取信息。 5.避免空泛描述​:拒绝“培养了组织能力”等泛泛而谈,替换为具体行动和成果。 6."使用“三段式结构”​​:每段经历按“为什么做-做了什么-结果如何”展开: ​a) 为什么做​:痛点或目标(例如“品牌声量不足”) ​b) 做​了什么:方法论(例如“趋势洞察+竞品对标+人群细分”) ​c) 结果如何​:量化成果或影响(例如“推动客户投放20万预算”)" 7.量化成果​:用数字体现工作成效(如“整理500+份资料”“撰写2万字报告”)。 这些有的是我想去的岗的,如果对你有用的话按需修改就好~加油,早日上岸!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务