Cf1155d dp 優先佇列

2021-09-26 01:52:02 字數 585 閱讀 1991

列舉乘x區間的開頭i;dp[2][i]表示從i往左往右最大sum;對於每個i要找max(sum(i~j)*x+dp[1][j+1]),考慮優先佇列維護

i到i-1時是把所有的sum加上a[i]*x,可以外部用個變數sum維護變化,每次插入乙個dp[1][j]-sum;

#include #include #include #include #include #include using namespace std;

int n;

long long x;

long long a[300005];

long long dp[2][300005];

int main()

memset(dp,0,sizeof(dp));

long long ans=0;

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

priority_queueq;

long long sum=0;

for(int i=n;i>=1;i--)

printf("%lld\n",ans);

}return 0;

}

P1155 雙棧排序

tom最近在研究乙個有趣的排序問題。如圖所示,通過2個棧s1和s2,tom希望借助以下4種操作實現將輸入序列公升序排序。操作a如果輸入序列不為空,將第乙個元素壓入棧s1 操作b如果棧s1不為空,將s1棧頂元素彈出至輸出序列 操作c如果輸入序列不為空,將第乙個元素壓入棧s2 操作d如果棧s2不為空,將...

luogu1155 雙棧排序

題目描述 tom最近在研究乙個有趣的排序問題。如圖所示,通過2個棧s1和s2,tom希望借助以下4種操作實現將輸入序列公升序排序。操作a如果輸入序列不為空,將第乙個元素壓入棧s1 操作b如果棧s1不為空,將s1棧頂元素彈出至輸出序列 操作c如果輸入序列不為空,將第乙個元素壓入棧s2 操作d如果棧s2...

P1155 雙棧排序

tom最近在研究乙個有趣的排序問題。如圖所示,通過2個棧s1 和s2 tom希望借助以下4種操作實現將輸入序列公升序排序。操作a如果輸入序列不為空,將第乙個元素壓入棧s1 操作b如果棧s1 不為空,將s1 棧頂元素彈出至輸出序列 操作c如果輸入序列不為空,將第乙個元素壓入棧s2 操作d如果棧s2 不...