Crane UVA 1611 思路 構造

2022-03-03 14:02:42 字數 1074 閱讀 9479

題目:題目鏈結

思路:思路+構造,假設 i  在pos 位置,那麼如果 (pos-i-1)*2+i+1 <= n,那麼可以操作一次換過來,如果他們之間元素個數是偶數,那麼交換 i - pos,如果是奇數,交換 i - pos+1,然後再經過一次就可以換到指定位置,如果是奇數並且pos==n,先與前乙個元素交換一下,然後執行前面的操作。

ac**:

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

#define frer() freopen("in.txt", "r", stdin);

#define frew() freopen("out.txt", "w", stdout);

using

namespace

std;

const

int maxn = 10000 + 5

;int

n, num[maxn], pos[maxn];

typedef pair

p;void swap(int l, int

m) }

intmain()

vector

vec;

for(int i = 1; i <= n; ++i)

else

if(temp % 2 == 0

)

else

if(pos[i] ==n)

else

--i;

}cout

<< vec.size()

cout

<< vec[i].first << '

'<< vec[i].second <}

return0;

}

Crane UVA 1611 解題報告

思路 這道題要注意審題,因為人家沒說必須要求最簡,在規定次數內弄完就行。本來就是對的,因為感覺不是最簡,花裡胡哨改了乙個小時,看完題解崩潰了qaq。先判斷自己所選的區間是不是在所選範圍內,如果可以,則直接進行交換,如果不可以,則利用貪心的思想,使想要排序的值盡可能的靠近他的位置,注意這裡要判斷奇 偶...

演算法導論16 1

又是一道動態規劃的題,真的類似於0 1揹包問題.在提示之下解決了,總算是解決了.雖然沒費多少勁.這個東西,沒有用物件導向的方式寫.體驗了一把,結構化.對於引數傳遞,共享資料,的確不及類方便.這種問題的狀態轉移方程,沒有寫對.我找錯了狀態.這段時間看 大全 感覺自己的 風格有所好轉.雖然覺得過去的也不...

C 程式設計報告(16 1)

程式頭部注釋開始 程式的版權和版本宣告部分 檔名稱 salary 加salary 作 者 楊壇壇 完成日期 2011 年 06 月 6 日 版 本號 對任務及求解方法的描述部分 輸入描述 問題描述 程式輸出 程式頭部的注釋結束 include includeusing namespace std v...