lb

BZOJ 3836 Codeforces 280D k-Maximum Subsequence Sum (模拟费用流、线段树)

狂风中的少年 提交于 2019-11-27 03:29:18
题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=3836 (Codeforces) http://codeforces.com/contest/280/problem/D 题解 似乎是最广为人知的模拟费用流题目。 线段树维护DP可以做,但是合并的复杂度是 \(O(k^2)\) , 会TLE. 考虑做 \(k\) 次费用流,很容易建出一个图,中间的边容量都是1,求的是最大费用。 做费用流的过程,我们每次找一条最长路,然后将其增广,增广之后这条路的边权会取负(因为容量都是 \(1\) 所以要么正要么负,正反向边不同时出现)。 所以现在要做的就是每次找出和最大的一段区间然后取负,直到和全都小于 \(0\) 为止。 线段树维护最大、最小子段和及其位置即可。 仔细想想,每次给一段区间取负就相当于给这段区间内的元素选或者不选的状态进行反转(inverse). 也就相当于费用流的退流(反悔)。 时间复杂度 \(O(kn\log n)\) . 代码 BZOJ权限号到期了,所以没在上面交过。 #include<cstdio> #include<cstdlib> #include<iostream> #include<utility> #include<vector> #define pii pair<int,int>

Xamarin.Forms 布局及属性学习总结

烂漫一生 提交于 2019-11-26 16:09:58
<StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand" VerticalOptions="Start" HeightRequest="100" WidthRequest="10" Padding="20,20,20,0" BackgroundColor="#272626"> <Label x:Name="lb_headname" Text="xxxxx" TextColor="White" HorizontalOptions="CenterAndExpand" VerticalOptions="Start" HeightRequest="30" /> <Label x:Name="lb_bnfit" Text="100" TextColor="#ffde72" FontSize="Large" HorizontalOptions="CenterAndExpand" VerticalOptions="Start" HeightRequest="40" /> </StackLayout> 1. 线性布局StackLayout,里面从上到下放标签Label,每行只放一个标签。 第一行的标签是标题,内容不变,第二行标签的内容会在Onappearing事件里面变更赋值。 这时候任何其他看起来合理的属性

【BZOJ2138】stone

烈酒焚心 提交于 2019-11-26 14:25:59
题面 http://darkbzoj.tk/problem/2138 题解 用类前缀和维护在给定的区间内的所有区间的价值之和,再用线段树维护区间最值。 把求全局最值转换成求当前区间左右最值那一步非常妙,是为了求出这块区域最多能被拿走多少块石子。 #include<stack> #include<queue> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #define N 45000 #define ri register int using namespace std; int a[N],k[N],sum[N]; int n,m; inline int read() { int ret=0,f=0; char ch=getchar(); while (ch<'0' || ch>'9') f|=(ch=='-'),ch=getchar(); while (ch>='0' && ch<='9') ret*=10,ret+=(ch-'0'),ch=getchar(); return f?-ret:ret; } int sqr(int x) { return x*x; } struct segment_tree { int t1[N<<2],t2[N<<2]; int tag1[N<<2]