51Nod 1094 和為k的連續區間 map

2021-08-11 14:19:59 字數 861 閱讀 4574

最初的做法是求出來字首和,然後sort排序。錯!!當時考慮不周到,找到乙個下表,要遍歷這個 下表的左右元素,找到最小的下表

感覺麻煩就沒處理

然後用map儲存乙個數。直接判斷這個數是否存在。輸出即可

#include#include#include#include#include#include#include#includeusing namespace std;  

int main();

mapm;

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

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

} cout<

就是最初的思路

找到自己錯的點了

對乙個結構體排序之後對應的num也會改變。這時候需要乙個sum集合儲存改變前的字首和,然後進行二分

之前沒想到這個點。。!!!

#include#include#include#include#include#include#include#includeusing namespace std;

const int inf=1<<29;

typedef struct nodenode;

bool cmp(node n1,node n2)

return -1;

}int main();

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

sort(no+1,no+n+1,cmp);

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

} cout<

51nod 1094 和為k的連續區間

一整數數列a1,a2,an 有正有負 以及另乙個整數k,求乙個區間 i,j 1 i j n 使得a i a j k。input 第1行 2個數n,k。n為數列的長度。k為需要求的和。2 n 10000,10 9 k 10 9 第2 n 1行 a i 10 9 a i 10 9 output 如果沒有...

51Nod 1094 和為k的連續區間

1094 和為k的連續區間 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 收藏 關注 一整數數列a1,a2,an 有正有負 以及另乙個整數k,求乙個區間 i,j 1 i j n 使得a i a j k。input 第1行 2個數n,k。n為數列的長度。k為需要求...

51nod 1094 和為k的連續區間

一整數數列a1,a2,an 有正有負 以及另乙個整數k,求乙個區間 i,j 1 i j n 使得a i a j k。input 第1行 2個數n,k。n為數列的長度。k為需要求的和。2 n 10000,10 9 k 10 9 第2 n 1行 a i 10 9 a i 10 9 output 如果沒有...