A题

签到模拟即可

B题

单独考虑每一个a[i],如果i要是答案需要指针移动多少次,然后算完,排个序,指针移动最少的就是答案。

#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define ls p<<1
#define rs p<<1|1
#define pii pair<int, int>
#define pll pair<long long, long long>
#define ll long long
#define ull unsigned long long
#define db double
#define endl '\n'
#define debug(a) cout<<#a<<"="<<a<<endl;
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define INF 0x3f3f3f3f
#define x first
#define y second
#define pb push_back using namespace std; const int N=2e5+10,mod=1e9+7; void solve()
{
int n;cin>>n;
vector<pii>a(n+1);
int ans=1e9;
rep(i,1,n)
{
int val;cin>>val;
int pos=val%n+1;
if(n==0) pos=1;
int k=0;
//a[i]减为0时指针的位置在i之后
if(pos>i) k=n-pos+i;
else if(pos<i) k=i-pos;
a[i]={val+k,i};
}
sort(a.begin()+1,a.begin()+1+n);
cout<<a[1].y<<endl;
return;
}
signed main()
{
IOS
// freopen("1.in", "r", stdin);
// int _;
// cin>>_;
// while(_--)
solve();
return 0;
}

C题



赛时没过被卡map了开成vector光速过了

我的思路就是从前往后\(O(n)\)扫一遍模拟一下交换,这样交换的次数应该是最少的

用\(3*n-cnt\)去判断如果为偶数说明剩下的数可以通过偶数次交换不改变结果的情况下消耗掉。

这时就直接输出1反之则输出2

#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define ls p<<1
#define rs p<<1|1
#define pii pair<int, int>
#define pll pair<long long, long long>
#define ll long long
#define ull unsigned long long
#define db double
#define endl '\n'
#define debug(a) cout<<#a<<"="<<a<<endl;
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define INF 0x3f3f3f3f
#define x first
#define y second
#define pb push_back using namespace std; const int N=2e5+10,mod=1e9+7; void solve()
{
int n;cin>>n;
// map<int,int>mp;
vector<int>a(n+1);
vector<int>mp(n+1);
rep(i,1,n)
{
cin>>a[i];
mp[a[i]]=i;
}
int cnt=0;
auto change=[&]()
{
rep(i,1,n)
{
if(a[i]!=i)
{
//tar是i当前所在的位置,pos
int tar=mp[i];
int tmp=a[i];
swap(a[i],a[tar]);
mp[i]=i;
mp[tmp]=tar;
cnt++;
// cout<<mp[i]<<' '<<mp[a[i]]
}
} };
change();
if((3*n-cnt)%2==0) cout<<1<<endl;
else cout<<2<<endl;
return;
}
signed main()
{
IOS
// freopen("1.in", "r", stdin);
// int _;
// cin>>_;
// while(_--)
solve();
return 0;
}

Acwing第 141 场周赛的更多相关文章

  1. AcWing第85场周赛

    这场周赛是手速局hh 死或生 某国正在以投票的方式决定 2 名死刑犯(编号 1∼2)的生死. 共有 n 组人员(编号 1∼n)参与投票,每组 10 人. 每组成员只参与一名死刑犯的投票,其中第 i 组 ...

  2. AcWing 第11场周赛题解

    计算abc 首先 \(0<=a<=b<=c\) 会随机给出 \(a+b,a+c,b+c,a+b+c\)的值 因为\(a,b,c\)都为正整数,所以\(a+b+c\)一定为最大值 然后 ...

  3. AcWing第78场周赛

    今天想起来了,就补一下吧~ 第一题 商品分类 货架中摆放着 n 件商品,每件商品都有两个属性:名称和产地. 当且仅当两件商品的名称和产地都相同时,两件商品才视为同一种商品. 请你统计,货架中一共有多少 ...

  4. LeetCode-第 166 场周赛

    LeetCode-第 166 场周赛 1281.subtract-the-product-and-sum-of-digits-of-an-integer 1282.group-the-people-g ...

  5. LeetCode 第 165 场周赛

    LeetCode 第 165 场周赛 5275. 找出井字棋的获胜者 5276. 不浪费原料的汉堡制作方案 5277. 统计全为 1 的正方形子矩阵 5278. 分割回文串 III C 暴力做的,只能 ...

  6. LeetCode--第180场周赛

    LeetCode--第180场周赛 1380. 矩阵中的幸运数 class Solution { public: vector<int> luckyNumbers (vector<v ...

  7. Leetcode第 217 场周赛(思维量比较大)

    Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一 ...

  8. 【AcWing】第 62 场周赛 【2022.07.30】

    AcWing 4500. 三个元素 题目描述 给定一个长度为 \(n\) 的数组 \(r\_1,r\_2,-,r\_n\). 请你找到其中的三个元素 \(r\_a,r\_b,r\_c\),使得 \(r ...

  9. Leetcode 第133场周赛解题报告

    今天参加了leetcode的周赛,算法比赛,要求速度比较快.有思路就立马启动,不会纠结是否有更好的方法或代码可读性.只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了. 比赛时先看的第二题,一看 ...

  10. 第二场周赛(递归递推个人Rank赛)——题解

    很高兴给大家出题,本次难度低于上一场,新生的六个题都可以直接裸递归式或者裸递推式解决,对于老生的汉诺塔3,需要找出一般式,后两题分别为裸ST算法(或线段树)/线性DP. 正确的难度顺序为 种花 角谷定 ...

随机推荐

  1. 自动部署(apb docker cicd gitlab)

    1.安装gitlab-runner docker pull gitlab/gitlab-runner:latest 2.运行镜像 docker run -d --name gitlab-runner ...

  2. 从零开始配置 vim(12)——主题配置

    在我们进一步增强vim的功能之前,我们先为vim准备一个漂亮的主题,毕竟对着一个丑陋原始的界面多少有点提不起劲来进行编程.长时间对着丑陋的界面多多少少会产生抑郁情绪的.下面推荐几款我觉得还不错的主题插 ...

  3. 【Jmeter】Request1输出作为Request2输入-后置处理器

    [Jmeter]基础介绍-详细 接上文,继续介绍Jmeter,本文关注点为如何解决上文中提到的第一个问题,即: 需要实现Request1的返回作为Request2的RequestBody或Header ...

  4. MySQL安装 starting the server解决办法

    https://blog.csdn.net/qq_52183856/article/details/123792012 主要原因:

  5. Oracle 数据库锁表问题及相关解决方法

    Oracle 数据库锁表问题及相关解决方法 问题描述: 今天在公司运行服务的时候,需要查询300多万的数据,再进行排序之后放到kafka的消息队列中,供flink进行消费.在服务器上直接运行后,服务报 ...

  6. FastGateway 一个可以用于代替Nginx的网关

    在我本人研究Yarp的时候经常用于公司项目的业务网关代理,这时候就个大佬问我是否可以实现动态加载HTTPS证书?那时候我说不太可能实现,然而在某一天我看到 微软使用Yarp代替了Nginx吞吐量提升了 ...

  7. 长沙IT技术圈百万年薪大佬?是否存在?

    引子 不知不觉,IT技术圈开始流传起"百万年薪"的故事,有人问我,长沙有百万大佬么?其实我也不知道. 一 背景 长沙自古以来就是文风鼎盛之地,在今天也同样如此. 目前长沙有211. ...

  8. 回顾复习之坐标DP

    定义 坐标型动态规划一般是给定网格.序列,求满足条件的MAX或MIN. 开数组时,dp[i]一般代表以ai结尾的满足条件的子序列,dp[i][j]代表以i.j结尾的满足条件的最优解 例题 数塔 典中典 ...

  9. 用 WebClient 代替 RestTemplate

    RestTemplate是用于执行 HTTP 请求的同步客户端,通过底层 HTTP 客户端库(例如 JDK HttpURLConnection.Apache HttpComponents 等)公开一个 ...

  10. pico命令

    pico命令 pico是一个简单易用.以显示导向为主的文字编辑程序,具有pine电子邮件编写器的风格.在现代Linux系统上,nano即pico的GNU版本是默认安装的,在使用上和pico一模一样. ...