2020年3月17日

暴力枚举+单调队列优化dp——cf

摘要: stl的queue反而很慢 /* 枚举上下边界,再从左到右扫一次就ok */ #include<bits/stdc++.h> using namespace std; #define N 505 int n,m,sum[N][N],k; char s[N][N]; int main(){ freop 阅读全文

posted @ 2020-03-17 19:42 zsben 阅读(180) 评论(0) 推荐(0) 编辑

单调队列优化dp+决策单调性——poj3017好题

摘要: /* dp[i]表示前i个数的最优解 dp[i]=min{ dp[j]+max[j+1,i] },sum[i]-sum[j]<=M 使用决策单调性:显然dp[i]是单调递增的 那么维护一个区间[j+1,i]关于a的递减单调队列q 对于a[q[1]]可以控制的决策范围是[j+1,q[1]],又因为决策 阅读全文

posted @ 2020-03-17 17:33 zsben 阅读(133) 评论(0) 推荐(0) 编辑

单调队列优化dp——poj2373 经典

摘要: 经典老题了,其实数据没那么强 /* dp[i]表示覆盖了前[0,i]区间的最优解 dp[i]=min(dp[i-j]) 2A<=j<=2B 直接用单调队列优化 对于奇数坐标,直接忽略就行 */ #include<iostream> #include<queue> #include<cstring> 阅读全文

posted @ 2020-03-17 15:28 zsben 阅读(145) 评论(0) 推荐(0) 编辑

单调队列优化dp——bzoj2442

摘要: /* dp[i][0|1]表示选|不选第i只奶牛可获得的最大收益 dp[i][0]=max(dp[i-1][0],dp[i-1][1]) dp[i][1]=max(dp[x][0]+sum[i]-sum[x]) 转化得到 dp[i][1]=max(dp[x][0]-sum[x])+sum[i] 那么 阅读全文

posted @ 2020-03-17 14:00 zsben 阅读(96) 评论(0) 推荐(0) 编辑

极角排序+凸包性质——cf1254C

摘要: #include<bits/stdc++.h> using namespace std; typedef double db; const db eps=1e-6; const db pi=acos(-1); int n; struct Node{ int id;db h; Node(){} Nod 阅读全文

posted @ 2020-03-17 00:40 zsben 阅读(212) 评论(0) 推荐(0) 编辑

导航