洛谷P1631 序列合併

2021-08-22 13:34:36 字數 721 閱讀 4609

序列合併,將a1b1入隊,然後從當前節點aibj開始擴充套件,擴充套件到ai+1bj和aibj+1,扔到優先佇列裡,節點可能被重複擴充套件,設定數字t,儲存當點ai已經擴充套件到哪個節點。交上去之後40分。

#include#include#include#includeusing namespace std; 

const int n=1e5+10;

struct node

node(int i,int j,int k):x(i),y(j),val(k){}

};priority_queuepq;

int a[n],b[n],t[n],n;

int main());

t[1]=1;

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

t[tmp.x]=tmp.y+1;

} if(tmp.y>t[tmp.x+1]) );

t[tmp.x+1]=tmp.y;

} }

前面的**錯在哪兒呢,查詢資料發現擴充套件的時候有些節點漏了,比如擴充套件i+1,j時候,可能前面的i+1,j-1還沒有擴充套件呢.修改後,過了

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

t[tmp.x]=tmp.y+1;

} if(tmp.y>t[tmp.x+1]) );

t[tmp.x+1]=tmp.y;

} }

洛谷 P1631 序列合併

題目描述 有兩個長度都是n的序列a和b,在a和b中各取乙個數相加可以得到n 2個和,求這n 2個和中最小的n個。輸入輸出格式 輸入格式 第一行乙個正整數n 第二行n個整數ai,滿足ai ai 1且ai 10 9 第三行n個整數bi,滿足bi bi 1且bi 10 9.資料規模 對於50 的資料中,滿...

洛谷 P1631 序列合併

有兩個長度都是n的序列a和b,在a和b中各取乙個數相加可以得到n 2個和,求這n 2個和中最小的n個。第一行乙個正整數n 第二行n個整數ai,滿足ai ai 1且ai 10 9 第三行n個整數bi,滿足bi bi 1且bi 10 9.輸出僅一行,包含n個整數,從小到大輸出這n個最小的和,相鄰數字之間...

洛谷P1631 序列合併

序列合併 問題描述 有兩個長度都是n的序列a和b,在a和b中各取乙個數相加可以得到n 2個和,求這n 2個和中最小的n個 n 100000 分析 a i 與b j 相加後,下面相加的一定是a i 1 b j 或a i b j 1 一開始我們把b 1 與a中所有元素相加放入乙個小根堆裡,輸出min,然...