現在溝裡學姐有一把雷射刀,現在有 n 個人站在一排(每隔一公尺站乙個人), 溝裡對每個人都有乙個仇恨值 ai (仇恨值可正可負,因為有些人可能是他的隊友, 可能是他的敵人) ,溝裡為了消滅更多敵人,因此他會不擇手段,可能也把自己隊友給殺了。他開始用他雷射刀向右刺殺(只能進行一次刺殺),他想讓他刺殺的人的仇恨值和最大。溝裡的雷射刀的長度最多可調節到 k 公尺,請你幫他計算他發動雷射刀的位置 l 和雷射刀結束的為 r (r-l+1<=k)。當存在多種方案使得仇恨值最大時,選擇發動位置 l 最小的方案,再選擇雷射刀調節長度 r-l+1 最小的方案。
輸入第一行為兩個正整數 n(1<=n<=100000),k(0輸入第二行為 n 個整數,表示溝裡對在 i 公尺處的人的仇恨值
ai(-1000<=a[i]<=1000)。
輸出為一行三個數。第乙個數為可獲得的最大仇恨值和,第二個數為雷射刀發位置 l,第三個數為雷射刀結位置 r。
輸入示例1
輸出示例1
6 3-1 2 -6 5 -5 6
6 4 6
輸入示例
輸出示例
5 5-1 -1 -1 -1 -1
-1 1 1
樣例 1:溝裡站在 4 公尺的地方發出兩公尺長的雷射刀,刺殺了 a[4]、a[5]、a[6]。
解題思路:
滑窗演算法。。。
#include #include #include using namespace std;
pair p;
int main()
} p.first=x;
p.second=i;
q.push(p);
while (sum<0)
sum+=x;
if (q.size()<=k&&sum>maxsum)
}printf ("%d %d %d\n",maxsum,l,r);
return 0;
}
4 2溝裡學姐的殘忍
就是找一定範圍內,和最大的區間 解題,一種用區間最值的方法,先開乙個字首和陣列,然後從每乙個點開始找後面一定範圍內的區間最大值,然後比較找出最大的就好了 include include include include include include include include define sf...
資料結構裡的結構體
結構體的定義為什麼是那樣的,只能死記麼。這麼多死記感覺不太好吧。那樣寫是因為確實需要那樣,不是人為規定死的。首先確定乙個結構體需要哪些資訊,這些資訊也必然是結構體所包含的資訊。順序表單鍊錶 順序棧鏈式棧 順序佇列 鏈式佇列 這麼去理解就不需要 死記那些各種結構體的定義了 因為我們要表示整個資料結構,...
STL裡的資料結構
資料結構 描述實現標頭檔案 向量 vector 連續儲存的元素 列表 list 由節點組成的雙向鍊錶,每個結點包含著乙個元素 雙佇列 deque 連續儲存的指向不同元素的指標所組成的陣列 集合 set 由節點組成的紅黑樹,每個節點都包含著乙個元素,節點之間以某種作用於元素對的謂詞排列,沒有兩個不同的...