題目1554 區間問題

2021-06-21 01:56:53 字數 1119 閱讀 6476

題目描述:給定乙個陣列,判斷陣列內是否存在乙個連續區間,使其和恰好等於給定整數k。

輸入:輸入包含多組測試用例,每組測試用例由乙個整數n(1<=n<=10000)開頭,代表陣列的大小。

接下去一行為n個整數,描述這個陣列,整數絕對值不大於100。

最後一行為乙個整數k(大小在int範圍內)。

輸出:對於每組測試用例,若存在這個連續區間,輸出其開始和結束的位置,s,e(s <= e)。

若存在多個符合條件的輸出,則輸出s較小的那個,若仍然存在多個,輸出e較小的那個。

若不存在,直接輸出"no"。

樣例輸入:

5

-1 2 3 -4 953

-1 2 -372

-1 1

0

樣例輸出:

2 3

no1 2

思路:求出累加和存入sumlist[n],,用優先佇列儲存對應累加和的編號,從小到大遍歷累加和序列,在優先佇列中找到合適的解

#include #include #include using namespace std;

int sumlist[10010];

int numlist[10010];

priority_queuemask[2000010];

int n, k;

int main()

scanf("%d", &k);

bool res = false;

int temp, tempindex;

for(int i = 0; i < n; i++)

while(mask[tempindex].size() && mask[tempindex].top() >= i + 1)

printf("%d %d\n", i + 1, temp);

res = true;

break;

}} if(!res)

for(int i = 1; i <= n; i++)

}} return 0;

}

1 區間選點 區間問題

區間問題一般都需要對區間進行排序,對左端點排序,或對右端點排序,或雙關鍵字排序 然後需要 證明這樣的選法選出來的點數一定是符合答案的,且是選點最少的 首先按照這個方法來選的話,每乙個區間上一定選了乙個點,所以這種選法是一種合法的方案 然後這道題的最優解是指所有合法方案中的選點最少的,所以 所以ans...

8602 區間相交問題

8602 區間相交問題 時間限制 1000ms 記憶體限制 1000k題型 程式設計題語言 無限制 description 給定x軸上n個閉區間,去掉盡可能少的閉區間,使剩下的閉區間都不相交。注意 這裡,若區間與另一區間之間僅有端點是相同的,不算做區間相交。例如,1,2 和 2,3 算是不相交區間。...

1751 區間覆蓋問題

time limit 1000 ms memory limit 65536 kib problem description 設x1 x2 xn 是實直線上的n 個點。用固定長度的閉區間覆蓋這n 個點,至少需要多少個這樣的固定長度閉區間?對於給定的實直線上的n個點和閉區間的長度k,設計解此問題的有效演...