1. 程式人生 > >異 形 卵 南陽acm709

異 形 卵 南陽acm709

時間 geo -a 約束 標記 stream 測試 %d arc

異 形 卵

時間限制:1000 ms | 內存限制:65535 KB 難度:2
描述

我們探索宇宙,是想了解浩瀚星空的奧妙,但我們卻很少意識到宇宙深處藏匿的危險,它們無時無刻不緊盯著我們的地球。如果外星人拜訪我們,結果可能與哥倫布當年踏足美洲大陸不會有什麽兩樣,這是歷史,也是現實。

在ZDM-777星球上發現的休眠異形卵,其外表與常見的卵不同,表面被一層石墨覆蓋。當人走近時,那層石墨開始消融,能看到裏面的異形卵正在活動,異形卵是活物,具備一些熱量或壓力傳感器這些基本的中樞神經系統,通過感知周圍的熱量,選擇熱量最大處寄生。不過,假如周圍有不適合被寄生處,異形卵就選擇休眠。

周圍的熱量可以用一串整數a1

,a2,……,an來表示,異形卵具有一定的長度L,異形卵總是選擇ai+ai+1+…+ai+L-1達到最大值處寄生。若周圍的熱量低於0,異形卵則選擇休眠。

異形卵是如何感知它的寄生處呢?我們探索宇宙,是想了解浩瀚星空的奧妙,但我們卻很少意識到宇宙深處藏匿的危險,它們無時無刻不緊盯著我們的地球。如果外星人拜訪我們,結果可能與哥倫布當年踏足美洲大陸不會有什麽兩樣,這是歷史,也是現實。

在ZDM-777星球上發現的休眠異形卵,其外表與常見的卵不同,表面被一層石墨覆蓋。當人走近時,那層石墨開始消融,能看到裏面的異形卵正在活動,異形卵是活物,具備一些熱量或壓力傳感器這些基本的中樞神經系統,通過感知周圍的熱量,選擇熱量最大處寄生。不過,假如周圍有不適合被寄生處,異形卵就選擇休眠。

周圍的熱量可以用一串整數a1,a2,……,an來表示,異形卵具有一定的長度L,異形卵總是選擇ai+ai+1+…+ai+L-1達到最大值處寄生。若周圍的熱量低於0,異形卵則選擇休眠。

異形卵是如何感知它的寄生處呢?

輸入
第一行: K 表示有多少組測試數據。
接下來對每組測試數據有2行,第1行: L N
第2行:a1 a2 …… aN

【約束條件】
2≤K≤5 L≤N, 1≤L≤10 1≤N≤1000 -100≤ ai≤100
數據之間有一個空格。

輸出
對於每組測試數據,輸出一行:異形卵能寄生的起始位置。若有多處可以寄生,則選擇小的起始位置。若無處可以寄生,則輸出0。
樣例輸入
2
3 5
30  0 100 -30 100
3 5
-100 80 -80 -100  80
樣例輸出
3
0
來源
第六屆河南省程序設計大賽
上傳者
ACM_趙銘浩
算法思想:先把1到L的溫度相加,然後再把1處的溫度用L+1處代替,相當於往後移動一位,以此類推,具體看代碼,有註釋。
代碼:
 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int main()
 5 {
 6     int i,j,k,n,l;
 7     int a[1005];
 8     scanf("%d",&k);
 9     while(k--)
10     {
11         scanf("%d%d",&l,&n);
12         for(i=1; i<=n; i++)
13             scanf("%d",&a[i]);
14         int sum = 0, max;
15         for(i=1; i<=l; i++)        //把1到L的溫度相加
16             sum+=a[i];
17         max = sum;                //賦值給max
18         for(i=1; i<=n-l; i++)
19         {
20             sum = sum-a[i]+a[i+l];        //sum減去i處的溫度加上L+i的溫度,相當於往後移動一位
21             if(max < sum)
22             {
23                 max = sum;
24                 j = i+1;        //找到比他大的,標記
25             }
26         }
27         if(max < 0)
28             printf("0\n");
29         else
30             printf("%d\n",j);
31     }
32     return 0;
33 }

異 形 卵 南陽acm709