求距離時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 32768k,其他語言65536k
64bit io format: %lld
給你乙個1 -> n的排列,現在有一次機會可以交換兩個數的位置,求交換後最小值和最大值之間的最大距離是多少?
第一行乙個數n之後一行n個數表示這個排列
輸出一行乙個數表示答案示例1
54 5 1 3 2
3
把1和2交換後序列為4 5 2 3 1
最大值5在陣列的2位置,最小值1在陣列的5位置
距離為3
對於100%的資料,1 <= n <= 100這個題目很簡單,找到最大的和最小的,看他們到1和n的最大距離就好
#include usingnamespace
std;
intmain()
if(mi>ma)swap(mi,ma);
printf("%d
",max(n-mi,ma-1
));
return0;
}
假如不是1到n就是去維護下這個值
#include usingnamespace
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 32 3 3
2 1 3 1
1 1 3 3 1
2 1 3 2
21
對於100%的資料,1 <= n, m ,ai
<= 1000
n太小了,直接上啊
#include usingnamespace
std;
const
int n=1e3+5
;int
a[n],s[n];
intmain()
}else
x-=s[i];}}
}}
return0;
}
慢點的做法
#include usingnamespace
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 ...