牛客練習賽11

2022-02-27 13:42:33 字數 1798 閱讀 5213

求距離時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 32768k,其他語言65536k

64bit io format: %lld

給你乙個1 -> n的排列,現在有一次機會可以交換兩個數的位置,求交換後最小值和最大值之間的最大距離是多少?

第一行乙個數n

之後一行n個數表示這個排列

輸出一行乙個數表示答案
示例1

5

4 5 1 3 2

3

把1和2交換後

序列為4 5 2 3 1

最大值5在陣列的2位置,最小值1在陣列的5位置

距離為3

對於100%的資料,1 <= n <= 100
這個題目很簡單,找到最大的和最小的,看他們到1和n的最大距離就好

#include using

namespace

std;

intmain()

if(mi>ma)swap(mi,ma);

printf("%d

",max(n-mi,ma-1

));

return0;

}

假如不是1到n就是去維護下這個值

#include using

namespace

std;

intmain()

printf("%d

",max(max(n-maf,maf-1),max(n-mif,mif-1

)));

return0;

}

假如有相同的,就可以直接找到這些值,然後從兩頭遍歷啊,只要一半就好了

假的線段樹

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 32768k,其他語言65536k

64bit io format: %lld

給你乙個長為n的序列a,有m次操作

1.把區間[l,r]內所有x變成y

2.查詢區間[l,r]內第k小值

第一行兩個數n,m

第二行n個數表示序列a

後面m行

1 l r x y :把區間[l,r]中所有x變成y

2 l r k :查詢區間[l,r]中的第k小值

對於每個詢問,輸出乙個數表示答案
示例1

3 3

2 3 3

2 1 3 1

1 1 3 3 1

2 1 3 2

2

1

對於100%的資料,1 <= n, m ,ai

<= 1000

n太小了,直接上啊

#include using

namespace

std;

const

int n=1e3+5

;int

a[n],s[n];

intmain()

}else

x-=s[i];}}

}}

return0;

}

慢點的做法

#include using

namespace

std;

const

int n=1e3+5

;int

a[n],s[n];

intmain()

else}}

return0;

}

牛客練習賽9

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 珂朵莉想每天都給威廉送禮物,於是她準備了n個自己的本子 她想送最多的天數,使得每天至少送乙個本子,但是相鄰兩天送的本子個數不能相同 珂朵莉最多送幾天禮物呢 第一行乙個整...

牛客練習賽15

時間限制 c c 2秒,其他語言4秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 第一次期中考終於結束啦!沃老師是個語文老師,他在評學生的作文成績時,給每位學生的分數都是乙個小於10的非負小數。amy 8.99999999999999999999...

牛客練習賽5

給你n個正整數,n 5,每個正整數大小不超過1000,最初su m 0 sum 0 每次可將su m sum 按順序加上陣列中的數,加完之後可以對sum的數字進行全排列,求最終能達到的最大值。由於n只有5,所以按照題意模擬dfs實現就可以了,注意最後一組也可以按數字進行全排列。d題 include ...