CF1148C C. Crazy Diamond

題目鏈接

題意:給定一個數組p長度為n按照規則對下標滿足2 * abs(i - j) >= n進行交換,最后使數組不遞減。輸出用的交換次數和每次交換的下標。(交換次數不能超過5*n次)

題解:

默認i < j,否則交換
abs(i - j) >= n / 2直接交換
i > n / 2也就是說i - 1 >= n / 2,都和1交換需要3次交換。
i <= n / 2并且j <= n / 2也就是說j + n / 2 <= n
則都可以和n交換,需要交換3次
否則i和n交換后j和1交換之后1和n交換之后 再次i和n、j和i交換需要交換5次

#include <bits/stdc++.h>
using namespace std;#define fi first
#define se second
#define ve vector
#define all(x) (x).begin() + 1, (x).end()
#define rep(i, a, b) for (int i = a; i < b; i++)
#define per(i, a, b) for (int i = a; i >= b; i--)
using pi = pair<int, int>;#define maxn 300005
int n;
ve<int> a, b;
int otp[maxn * 10][2], cnt = 0;inline int red() {int x;cin >> x;return x;
}void sw(int i, int j) {otp[cnt][0] = i, otp[cnt++][1] = j;swap(a[i], a[j]);swap(b[a[i]], b[a[j]]);
}void cal(int i, int j) {if (i == j) {return;}if (i > j) {swap(i, j);}if (abs(i - j) >= n / 2) {sw(i, j);return;}if (i <= n / 2) {if (j <= n / 2) {sw(i, n), sw(j, n), sw(i, n);} else {sw(j, 1), sw(i, n), sw(1, n), sw(j, 1), sw(i, n);} } else {sw(j, 1), sw(1, i), sw(j, 1);}
} void solve() {n = red();a.resize(n + 1), b.resize(n + 1);rep(i, 1, n + 1) {a[i] = red();b[a[i]] = i;}rep(i, 1, n + 1) {cal(i, b[i]);}cout << cnt << '\n';rep(i, 0, cnt) {cout << otp[i][0] << ' ' << otp[i][1] << '\n'; }}int main() {ios_base::sync_with_stdio(false);cin.tie(nullptr);int t = 1;while (t--) {solve();}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18946.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18946.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18946.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于異構圖的大規模微服務系統性能問題診斷

簡介&#xff1a;本文介紹由南開大學、清華大學、騰訊、國家超級計算天津中心共同合作的論文&#xff1a;基于異構圖的大規模微服務系統性能問題診斷。該論文已被IEEE Transactions on Services Computing期刊錄用 論文標題&#xff1a;Diagnosing Performance Issues for Lar…

docker刪除所有容器

筆記 要使用 Docker 刪除所有容器&#xff08;無論是停止的還是正在運行的&#xff09;&#xff0c;可以按照以下步驟操作&#xff1a; 1. **刪除所有正在運行的容器**&#xff1a; 首先&#xff0c;您需要停止所有正在運行的容器。可以使用以下命令&#xff1a; dock…

MATLAB分類與判別模型算法:K-近鄰法(KNN)分類代碼 【含Matlab源碼 MX_001期】

算法簡介&#xff1a; K-近鄰法&#xff08;KNN&#xff09;是一種簡單而有效的分類算法&#xff0c;也可用于回歸問題。它的基本原理是根據待分類樣本與訓練樣本的距離&#xff0c;選取最近的K個樣本進行投票決定分類。該算法無需訓練過程&#xff0c;而是利用訓練數據集直接…

數據結構與算法-反轉單鏈表

數據結構與算法-反轉單鏈表 大家好&#xff0c;歡迎回到我們的算法學習系列。今天&#xff0c;我們將探討一個在算法面試中非常經典的問題——反轉單鏈表。 什么是單鏈表&#xff1f; 在介紹問題之前&#xff0c;我們先簡單了解一下單鏈表。單鏈表是一種線性數據結構&#x…

氣缸前端鎖緊技術探討:從四個方面、五個方面、六個方面和七個方面深度解析

氣缸前端鎖緊技術探討&#xff1a;從四個方面、五個方面、六個方面和七個方面深度解析 在工業自動化領域&#xff0c;氣缸作為關鍵的執行元件&#xff0c;其前端鎖緊技術的穩定性與可靠性直接影響到整個系統的運行效率。本文將從四個方面、五個方面、六個方面和七個方面&#…

python 面對對象 類 補充

isinstance isinstance()&#xff1a;判斷一個實例化對象是否屬于這個類的&#xff0c;isinstance(對象&#xff0c;類) class Man():passclass Women():passa Man()print(isinstance(a, Man)) # True print(isinstance(a, Women)) # False 類的屬性操作 getattr() 獲…

小白windows系統從零開始本地部署大模型全記錄

大家好&#xff0c;最近兩年大語言模型風靡全球&#xff0c;最近&#xff0c;不少開源大模型&#xff0c;將模型部署到自己的電腦上&#xff0c;用個性化的數據微調想必是不少人的愿望&#xff0c;這次&#xff0c;讓我來分享從hugging face上下載部署chatglm3-6b中的經驗。 1.…

自動控制: 最小二乘估計(LSE)、加權最小二乘估計(WLS)和線性最小方差估計

自動控制&#xff1a; 最小二乘估計&#xff08;LSE&#xff09;、加權最小二乘估計&#xff08;WLS&#xff09;和線性最小方差估計 在數據分析和機器學習中&#xff0c;參數估計是一個關鍵步驟。最小二乘估計&#xff08;LSE&#xff09;、加權最小二乘估計&#xff08;WLS&…

conda環境里安裝ffmpeg

遇到的問題 在執行腳本的時候提示&#xff1a; /home/xxx/anaconda3/envs/llm-asr/lib/python3.9/site-packages/pydub/utils.py:170: RuntimeWarning: Couldnt find ffmpeg or avconv - defaulting to ffmpeg, but may not workwarn("Couldnt find ffmpeg or avconv - …

wifi貼碼推廣哪家靠譜?

如今越來越多的人想輕資產創業&#xff0c;WIFI貼碼是共享行業最無成本的創業項目了&#xff0c;而在選擇廠商的時候&#xff0c;大家就想要知道哪家公司靠譜&#xff0c;更好、更便宜、可靠。那么wifi貼碼推廣哪家靠譜&#xff1f;別急&#xff0c;下面小編將帶你一起了解。 目…

OpenAI開始訓練新的前沿模型——但GPT-5至少在90天內不會推出

ChatGPT 制造商 OpenAI 今早宣布&#xff0c;已開始訓練其新的“前沿模型”&#xff0c;并成立了一個新的安全委員會&#xff0c;由現任董事會成員 Bret Taylor&#xff08;OpenAI 董事會主席兼客戶服務初創公司 Sierra AI 聯合創始人、前谷歌地圖負責人和前 Facebook 首席技術…

BGP路由策略實驗

一、實驗拓撲 二、IP分配(骨干) R1&#xff1a; 0/0/0 15.0.0.1 24 0/0/1 18.0.0.2 24 0/0/2 19.0.0.1 24 R2: 0/0/0 16.0.0.1 24 0/0/1 15.0.0.2 24 R3: 0/0/0 17.0.0.2 24 0/0/1 18.0.0.1 24 R4: 0/0/0 16.0…

元宇宙vr工業產品展示空間降低研發成本

元宇宙產品虛擬展廳搭建編輯器為您提供了一個自助式元宇宙場景搭建的絕佳平臺。無論您是設計公司、攝影公司、營銷公司還是教育機構&#xff0c;我們都能為您量身打造專屬的元宇宙解決方案&#xff0c;滿足您的多樣化需求。 元宇宙產品虛擬展廳搭建編輯器具備強大的3D編輯功能&…

藍牙設備中的UUID

文章目錄 一、Device UUID二、Service UUID 一、Device UUID Device UUID也可以被稱作為DeviceID。 Android 設備上掃描獲取到的 deviceId 為外圍設備的 MAC 地址&#xff0c;相對固定。iOS 設備上掃描獲取到的 deviceId 是系統根據外圍設備 MAC 地址及發現設備的時間生成的 …

如何成為AI工程師

AI工程師&#xff08;不是打標員&#xff09;已經成為新一代的熱門崗位&#xff08;高薪、有前景&#xff09;&#xff0c;無論你是計算機科學專業的學生&#xff0c;還是已經在其他技術領域工作的專業人士&#xff0c;可以通過以下幾點來大概了解如何成為AI工程師。 1. 技術技…

【吊打面試官系列】Java高并發篇 - ThreadLocal 是什么?有什么用?

大家好&#xff0c;我是鋒哥。今天分享關于 【ThreadLocal 是什么&#xff1f;有什么用&#xff1f;】面試題&#xff0c;希望對大家有幫助&#xff1b; ThreadLocal 是什么&#xff1f;有什么用&#xff1f; ThreadLocal 是一個本地線程副本變量工具類。主要用于將私有線程和該…

dust3r部署踩坑全記錄

目前dust3r是三維重建最新最好的技術&#xff0c;運用了ViT編碼器、Transformer、注意力機制、回歸等技術&#xff0c;無需相機參數標定。 但是我部署過程中有很多坑&#xff0c;記錄一下。 1.OSError: CUDA_HOME environment variable is not set. Please set it to your CU…

Itme4 對象使用前進行初始化

fun(){ int a; printf("%d\n", a); cout << a << endl; //會報錯 使用了未初始化的變量a } //若a是全局變量則不會報錯 會默認初始化為0 在對象中優先使用初始化列表&#xff1a; ABEntry::ABEntry(const std::string& name, const std::string&…

數字工廠管理系統可以和哪些軟件集成

隨著工業4.0時代的到來&#xff0c;數字工廠管理系統已成為制造業轉型升級的核心驅動力。數字工廠管理系統通過集成各種軟件和技術&#xff0c;實現了生產過程的數字化、網絡化和智能化&#xff0c;大大提高了生產效率和管理水平。本文將探討數字工廠管理系統可以與哪些軟件集成…

Axure RP軟件漢化操作步驟

隨著互聯網產業的發展&#xff0c;設計師已經成為一個越來越受歡迎的職業&#xff0c;設計軟件已經成為設計師必不可少的工具。說到設計軟件&#xff0c;不得不說的是 Axure rp &#xff0c;越來越多的設計師使用它來設計產品原型&#xff0c;作為美國 Axure Software Solution…