題目大意:給你一串數字,問有幾個連續的序其最大值與最小值之差不大於k。
借用雙指標的思想,i,j初始化都為0,然後j往後移動,遇到第乙個使區間不符合條件的位置停下,ans加上此時的區間數目,因為是連續的且以i為起點,所以區間只有j-i個;然後i往後移動,每移動乙個位置,加乙個j-i,直到與j那個位置有衝突的那一點,意思就是abs(a[j] - a[i]) > k的那一點,然後i再往後移動一位,繼續移動j,直到結束
參考了一位學長的**,用的multiset,set有自動排序的功能,就不用記錄此時的最大值和最小值了,j移動乙個點,就把那個點放入集合,如果符合條件,ans加上此時區間數目,如果最大值減去最小值大於等於k,就刪去a[i],然後繼續判斷,知道小於k的那一點,然後加上此時的區間數目。
ac**:
#include #include #include #include #include #include #define maxn 100010
#define mod 1000000007
using namespace std;
int a[maxn];
int main()
printf("%lld\n",ans);
}}
hdu 6299 多校第一場
題意 給出一些字串,重新組合,使括號的匹配數量最多 這道題場上沒能出,當時看了一眼,關於括號的,以為是個dp,就沒有再去做這道題。這道題事實上是個貪心,先把已經匹配好的括號數量統計出來。剩下的括號往兩邊堆,右括號往左邊堆,左括號往右邊堆。然後就是排序。左括號比右括號多的這種情況肯定要排在右括號比左括...
HDU6299(2018多校第一場)
bryce1010模板 兩個字串的排序可以分成四種情況 1 str1左少右多 vs str2 左多右少 str2排在str1前面 2 str1 左多右少 vs str2 左少右多 str1排在str2前面 3 str1 左少右多 vs str2 左少右多 按左括號的數量排序 4 其他情況按右括號的數...
2019HDU多校第一場
1002.operation 傳送 題意 給定乙個長度為 n 的數列,m 次操作,每次操作如下 0 l r 查詢區間 l,r 內若干個數的最大異或和。1 x 給數列末尾新增乙個數 x 資料範圍 1 n,m 5e5,1 a i 2 分析 開始直接考慮用線段樹維護區間線性基的並,然後每次查詢求區間線性基...