思路:這道題要注意審題,因為人家沒說必須要求最簡,在規定次數內弄完就行。。。本來就是對的,因為感覺不是最簡,花裡胡哨改了乙個小時,看完題解崩潰了qaq。
先判斷自己所選的區間是不是在所選範圍內,如果可以,則直接進行交換,如果不可以,則利用貪心的思想,使想要排序的值盡可能的靠近他的位置,注意這裡要判斷奇、偶。
額至於為啥這樣做,其實跟普通的選擇排序差不多,就是找好這個值本來需要放的位置,然後把它放過去,只不過這次變成了整個區間的交換,本質還是一樣的,只不過判斷的多了點。
下面給出ac**:
#include using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int maxn=1e5+10;
struct node
ans[maxn];
int a[maxn],n;
void swap(int l,int r)
void swap1(int l,int r)
int main()
}if(pos==i) continue;
if((pos-i)*2+i-1<=n)
else
else
i--;}}
printf("%d\n",post);
for(int i=0;i}
return 0;
}
Crane UVA 1611 思路 構造
題目 題目鏈結 思路 思路 構造,假設 i 在pos 位置,那麼如果 pos i 1 2 i 1 n,那麼可以操作一次換過來,如果他們之間元素個數是偶數,那麼交換 i pos,如果是奇數,交換 i pos 1,然後再經過一次就可以換到指定位置,如果是奇數並且pos n,先與前乙個元素交換一下,然後執...
USACO Hamming Codes 解題報告
資料小,暴力搜尋可以搞定。但是推薦使用dfs,每個節點 數 有取與不取兩個分支。注意 0是必須出現的。證明如下 最終得到的結果序列中,0是必須出現的,證明如下 如果存在另乙個滿足要求的結果序列s 其最小值為a1 n 0,那麼序列s s n 是滿足條件的最小解,且首元素為0 id xpli1 prog...
USACO Closed Fences 解題報告
幾何題看著就很有畏懼感。這裡用的是最 的演算法,時間複雜度應該在n 2。還沒看別人的解題報告,不過我猜nlogn的解法是有的。比如判斷乙個fence是不是valid的時候,這裡將所有的線段兩兩比較,看是否相交。但是有個叫line sweep的演算法,可以在nlogn的時間複雜度內完成。既然accep...