顯然的,對於任意乙個確定的r
r,滿足題目要求的序列左端點肯定是一段連續的區間[lr
1∼r2
][lr
1∼r
2]。
而且這個區間顯然是滿足單調性的。
所以可以用三個指標維護l1,
l2,r
l1,l
2,r。每次把r
r指標右移一位時維護l1l
1和l2l
2,然後答案累加就可以了。
均攤時間複雜度為o(n
)o(n
)
*
*#include
#include
using
namespace std;
typedef
long
long ll;
const
int n=
200010
;int n,m,l1,l2,r,sum,a[n]
,l[n]
,r[n]
,cnt1[n]
,cnt2[n]
;ll ans;
intmain()
l1=l2=1;
for(r=
1;r<=n;r++
)while
(sum==m&&l2<=r)
ans+
=max
((ll)l2-
(ll)l1,
0ll);}
printf
("%lld\n"
,ans)
;return0;
}
2004 成績轉換
problem description 輸入乙個百分制的成績t,將其轉換成對應的等級,具體轉換規則如下 90 100為a 80 89為b 70 79為c 60 69為d 0 59為e input 輸入資料有多組,每組佔一行,由乙個整數組成。output 對於每組輸入資料,輸出一行。如果輸入資料不在0...
2807 成績統計。
time limit 1 sec memory limit 128 mb submit 383 solved 175 submit status web board 有5個學生,考了3門課程,試程式設計求每個學生的總成績,並按總成績降序排列。建議使用氣泡排序演算法 函式sort要完成對總成績的統計 ...
68 成績排序
題目描述 查詢和排序 題目 輸入任意 使用者,成績 序列,可以獲得成績從高到低或從低到高的排列,相同成績 都按先錄入排列在前的規則處理。例示 jack 70 peter 96 tom 70 smith 67 從高到低 成績 peter 96 jack 70 tom 70 smith 67 從低到高 ...