對於lis的求解問題,我採用的是二分+貪心進行求解,然後對於列印路徑採用乙個f陣列記錄,f[i]代表lis序列中的第i個元素的前面的乙個元素的位置;
#include #include #include #include using namespace std;
const int n = 1e5+5;
int val[n], dp[n], f[n], pos[n];
int main()
memset(dp, 0x3f3f3f3f, sizeof(dp));
// dp[0] = 0;
for(int i = 0; i < n; ++ i)
stacks;
n = lower_bound(dp, dp+n, 0x3f3f3f3f) - dp;
printf("%d\n-\n", n);
for(int i = pos[n-1]; i != -1; i = f[i])
while(!s.empty())
return 0;
}
UVA12100 列印佇列
題目大意 現在有乙個列印佇列,裡面的任務是無序的,每個任務有乙個權值,印表機會從第乙個任務開始執行,如果當前任務的權值是佇列中最大的,那麼就列印,否則就將該任務放置到隊末。每次列印消耗一定的時間,求該序列中的任務分別在什麼時候被列印。這題開乙個優先佇列乙個普通佇列,佇列裡的元素出隊,如果出隊元素和優...
UVA 12100 列印佇列 STL deque
給定n個優先順序列印佇列,然後從0開始編號到n 1。出隊乙個元素,如果他是佇列中優先順序最高的,列印 耗時一分鐘 否則放到隊尾 不耗時 給定乙個m,求位置m的檔案列印的時間。用乙個priority queue去尋找優先順序最高的元素,然後用乙個deque 去模擬佇列 pair第乙個元素是優先順序,第...
Uva481 LIS 路徑列印
last陣列儲存在棧中的對應位置 題目要求找最後乙個lis,就直接從最後向前遍歷 因為後面能夠更新棧中元素的元素,下標靠後,所以不會影響尋找 ac include include include include using namespace std typedef long long ll con...