【学习笔记】线性规划与对偶问题和LP对偶费用流([ZJOI2013]防守战线题解)

线性规划与对偶问题

原问题:
min⁡{7x1+x2+5x3}s.t.{x1−x2+3x3≥105x1+2x2−x3≥6xi≥0\min\{7x_1+x_2+5x_3\} \\ s.t.\begin{cases} x_1-x_2+3x_3\ge 10\\ 5x_1+2x_2-x_3\ge 6\\ x_i\ge 0\end{cases} min{7x1+x2+5x3}s.t.x1x2+3x3105x1+2x2x36xi0我们发现限制Ⅰ,Ⅱ 的每个 xix_ixi 系数均 ≤\le 原问题中的系数,所以我们可以初步得到原问题的取值范围限制 min⁡{7x1+x2+5x3}≥10\min\{7x_1+x_2+5x_3\}\ge 10min{7x1+x2+5x3}10

进一步我们发现限制Ⅰ,Ⅱ 相加后的 xix_ixi 系数仍然 ≤\le 原问题中的系数,于是乎我们“加紧”了原问题的取值范围 min⁡{7x1+x2+5x3}≥16\min\{7x_1+x_2+5x_3\}\ge 16min{7x1+x2+5x3}16

我们是否能将原问题的范围“加到最紧”,即最大化最小值。

这显然是可以的。我们不妨给两个限制各一个系数 yiy_iyi

则我们可以写出一个类似原问题形式的线性规划问题,称之为对偶问题。

对偶问题:
max⁡{10y1+6y2}s.t.{y1+5y2≤7−y1+2y2≤13y1−y2≤5yi≥0\max\{10y_1+6y_2\} \\ s.t.\begin{cases}y_1+5y_2\le 7\\ -y_1+2y_2\le 1\\ 3y_1-y_2\le 5\\ y_i\ge 0\end{cases} max{10y1+6y2}s.t.y1+5y27y1+2y213y1y25yi0一个最大化问题可以对偶成最小化问题,一个最小化问题可以对偶成最大化问题。

给出例子中的矩阵形式:

原问题:
min⁡[715]⋅[x1x2x3]s.t.{[1−1352−1]⋅[x1x2x3]≥[106]∀ixi≥0\min\begin{bmatrix}7\quad1\quad5\end{bmatrix}·\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix} \\ s.t.\begin{cases}\begin{bmatrix}1&-1&3\\5& 2&-1\end{bmatrix}·\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}\ge \begin{bmatrix}10\\6\end{bmatrix}\\\forall_i\ x_i\ge 0\end{cases} min[715]x1x2x3s.t.[151231]x1x2x3[106]i xi0对偶问题:
max⁡[106]⋅[y1y2y3]s.t.{[15−123−1]⋅[y1y2]≤[715]∀iyi≥0\max\begin{bmatrix}10&6\end{bmatrix}·\begin{bmatrix}y_1\\y_2\\y_3\end{bmatrix} \\ s.t.\begin{cases}\begin{bmatrix}1&5\\-1&2\\3&-1\end{bmatrix}·\begin{bmatrix}y_1\\y_2\end{bmatrix}\le \begin{bmatrix}7\\1\\5\end{bmatrix}\\\forall_i\ y_i\ge 0\end{cases} max[106]y1y2y3s.t.113521[y1y2]715i yi0


形式化地给出原问题和对偶问题之间的转化:(注意下标)

原问题:
min⁡∑j=1ncjxjs.t.{∀1≤i≤m∑ai,j⋅xj≥bi∀ixi≥0\min \sum_{j=1}^n c_jx_j \\ s.t.\begin{cases} \forall_{1\le i\le m}\ \sum a_{i,j}·x_j\ge b_i\\ \forall_{i}\ x_i\ge 0 \end{cases} minj=1ncjxjs.t.{1im ai,jxjbii xi0对偶问题:
max⁡∑i=1mbiyis.t.{∀1≤j≤n∑ai,j⋅yi≤cj∀iyi≥0\max \sum_{i=1}^m b_iy_i \\ s.t.\begin{cases} \forall_{1\le j\le n} \sum a_{i,j}·y_i\le c_j\\ \forall_i\ y_i\ge 0 \end{cases} maxi=1mbiyis.t.{1jnai,jyicji yi0考虑用矩阵形式来表示,之所以有矩阵形式,好像是因为有些题目矩阵好推一点。

原问题:
min⁡{cTx}s.t.{Ax≥bx≥0\min\{c^Tx\} \\ s.t.\begin{cases}Ax\ge b\\ x\ge 0\end{cases} min{cTx}s.t.{Axbx0对偶问题:
max⁡{bTy}s.t.{ATy≤cy≥0\max\{b^Ty\}\\ s.t.\begin{cases} A^Ty\le c\\ y\ge 0 \end{cases} max{bTy}s.t.{ATycy0


LP对偶费用流

在一张 nnn 个点 mmm 条边的网络图中,我们这里只研究循环流,以最大费用循环流为例。

声明:将一条 u→vu\rightarrow vuv 的有向边表示成 (u,v)(u,v)(u,v),将一个 nnnmmm 列的矩阵 AAA 表示成 [n,m]A[n,m]A[n,m]A,矩阵间的大小关系是按位均满足。

原问题:
max⁡∑ecoste⋅flowe⇔max⁡[1,m]costT⋅[m,1]flows.t.{∀flowu,v≥0∀flowu,v≤capu,v∀u∑flowv,u−∑flowu,v=bu\max \sum_{e}cost_e·flow_e\Leftrightarrow \max\ [1,m]cost^T·[m,1]flow \\ s.t.\begin{cases} \forall\ flow_{u,v}\ge 0\\ \forall\ flow_{u,v}\le cap_{u,v}\\ \forall_u\ \sum flow_{v,u}-\sum flow_{u,v}=b_u\\ \end{cases} maxecosteflowemax [1,m]costT[m,1]flows.t. flowu,v0 flowu,vcapu,vu flowv,uflowu,v=bubu:b_u:bu: 流入 −- 流出,但要求 bub_ubu 一定是已知的常量。

实际上我们可以写成 ∀u∑flowv,u−∑flowu,v≤bu\forall_u\ \sum flow_{v,u}-\sum flow_{u,v}\le b_uu flowv,uflowu,vbu

因为在一个图中,要求所有点入度 ≤\le 出度,最后成立情况一定是每个点入度 === 出度。感性理解好了┏┛墓┗┓…(((m -__-)m

我们直接用矩阵形式来推。

首先第一种限制和第二种只针对一条边单独而言,可以合起来。我们配个单位矩阵即可。
[100...0010...0001...0...............000...1]⋅[flow1flow2flow3...flowm]≤[cap1cap2cap3...capm]\begin{bmatrix}1&0&0&...&0\\0&1&0&...&0\\0&0&1&...&0\\...&...&...&...&...\\0&0&0&...&1\end{bmatrix}·\begin{bmatrix}flow_1\\flow_2\\flow_3\\...\\flow_m\end{bmatrix}\le \begin{bmatrix}cap_1\\cap_2\\cap_3\\...\\cap_m\end{bmatrix} 100...0010...0001...0...............000...1flow1flow2flow3...flowmcap1cap2cap3...capm第三种限制涉及到求和,比较不直观,但还是可以写的。

定义一个 n×mn\times mn×m 的矩阵 ZZZ,规则:Zi,j={−1ju=i1jv=i0ju≠i∧jv≠iZ_{i,j}=\begin{cases}-1\ \quad\ j_u=i\\1\quad\quad\ j_v=i\\0\quad\quad\ j_u\neq i\wedge j_v\ne i\end{cases}Zi,j=1  ju=i1 jv=i0 ju=ijv=i

中国话说即为:iii 是点,jjj 是边。如果第 jjj 条边中 iii 充当出点 uuu 则为 −1-11;充当入点 vvv 则为 111;否则为 000

则第三种限制就可以看作是 [n,m]Z⋅[m,1]flow≤[n,1]b[n,m]Z·[m,1]flow\le [n,1]b[n,m]Z[m,1]flow[n,1]b

整体整合表示即:
[m,m]I[n,m]Z⋅[m,1]flow≤[m,1]cap[n,1]b\frac{[m,m]I}{[n,m]Z}·[m,1]flow\le \frac{[m,1]cap}{[n,1]b} [n,m]Z[m,m]I[m,1]flow[n,1]b[m,1]cap
由此我们可以写出对偶问题:([m,m]I[n,m]Z\frac{[m,m]I}{[n,m]Z}[n,m]Z[m,m]I 即为形式化中的 AAA

对偶问题:
min⁡[1,m+n](capT∣bT)⋅[m+n,1]Ys.t.{[m,m+n]([m,m]IT∣[m,n]ZT)⋅[m+n,1]Y≥[m,1]cost∀iYi≥0\min [1,m+n]\Big(cap^T\Big| b^T\Big)·[m+n,1]Y \\ s.t.\begin{cases}[m,m+n]\Big([m,m]I^T\Big|[m,n]Z^T\Big)·[m+n,1]Y\ge [m,1]cost\\ \forall_i\ Y_i\ge 0\end{cases} min[1,m+n](capTbT)[m+n,1]Ys.t.{[m,m+n]([m,m]IT[m,n]ZT)[m+n,1]Y[m,1]costi Yi0矩阵的点积是对位相乘后相加,所以我们可以把 [m+n,1]Y[m+n,1]Y[m+n,1]Y 拆成 [m,1]y∣[n,1]φ[m,1]y\Big|[n,1]\varphi[m,1]y[n,1]φ
min⁡capT⋅y+bT⋅φs.t.{yi≥0φi≥0IT⋅y+ZT⋅φ≥cost\min\ cap^T·y+b^T·\varphi\\s.t.\begin{cases} y_i\ge 0\\ \varphi_i\ge 0\\ I^T·y+Z^T·\varphi\ge cost\end{cases} min capTy+bTφs.t.yi0φi0ITy+ZTφcost非常巧妙的是,注意 ZZZ 矩阵转置后 ZTZ^TZT 具有的特殊性质。

我们重申一下 ZTZ^TZT 的含义:Zi,jT={−1iu=j1iv=j0iu≠j∧iv≠jZ^T_{i,j}=\begin{cases}-1&i_u=j\\1&i_v=j\\0&i_u\ne j \wedge i_v\ne j\end{cases}Zi,jT=110iu=jiv=jiu=jiv=j,也就是说此时的 iii 是边,jjj 是点。

考虑任意一条边 iii,它只会关联到两个点,所以矩阵的第 iii 行只有两列非零,且恰好是 ±1±1±1 各一个。

那么第三条矩阵点积的约束我们可以重写成 yi+φv−φu−costi≥0y_i+\varphi_v-\varphi_u-cost_i\ge 0yi+φvφucosti0

实际上写成 φu−φv\varphi_u-\varphi_vφuφv 也是可以的,因为在费用流中将所有边取反(包括和源汇点之间的边)是没有任何影响的。

整合第一条限制得到:yi≥max⁡(0,φu−φv+costi)y_i\ge \max(0,\varphi_u-\varphi_v+cost_i)yimax(0,φuφv+costi)

所以我们可以将对偶问题再换个形式:
min⁡∑capi∗max⁡(0,φu−φv+costi)+∑bi⋅φi\min\sum cap_i*\max(0,\varphi_u-\varphi_v+cost_i)+\sum b_i·\varphi_i mincapimax(0,φuφv+costi)+biφi这种形式下的建图方式:φu→φv\varphi_u\rightarrow \varphi_vφuφv 之间边花费为 costicost_icosti,容量 capicap_icapi,根据 bub_ubu 的正负(多流出还是多流入)将 φu\varphi_uφu 点和新建源汇对应连边,容量即为多/少的这部分 bub_ubu,无花费。

通常情况下我们是拿到类似上述对偶问题形式的题目,然后我们就可以转化成费用流问题,就可做了。


例题. ZJOI2013防守战线

由于是区间,我们完全可以写成前缀和差分形式,记 si=∑j=1ixjs_i=\sum_{j=1}^ix_jsi=j=1ixj

则:
min⁡∑(si−si−1)ci\min \sum (s_i-s_{i-1})c_i min(sisi1)ci限制可以写成 :
{∀isri−sli−1−di≥0∀isi−si−1≥0∀isi≥0\begin{cases}\forall_i\ s_{r_i}-s_{l_i-1}-d_i\ge 0\\ \forall_i\ s_i-s_{i-1}\ge 0\\ \forall_i\ s_i\ge 0\end{cases} i srisli1di0i sisi10i si0∑(si−si−1)ci\sum (s_i-s_{i-1})c_i(sisi1)ci 我们换一种形式。发现 sis_isiiii 时前面是正贡献 ci∗sic_i*s_icisi,在 i+1i+1i+1 时前面是负贡献 −ci+1∗si-c_{i+1}*s_ici+1si

所以可以写成 ∑si(ci−ci+1)\sum s_i(c_i-c_{i+1})si(cici+1)

还有一种巧妙的限制转化是,将约束被打坏给予一定惩罚。

即如果破坏某个约束,我们就让其获得无穷大的惩罚代价,那么在跑网络流的时候就会尽量避免获得代价,侧面完成了约束。

所以我们可以将答案形式改写成:
min⁡∑si(ci−ci+1)+∑∞∗max⁡(0,si−1−si)+∑∞∗max⁡(0,sl−1−sr+di)\min \sum s_i(c_i-c_{i+1})+\sum\infty*\max(0,s_{i-1}-s_i)+\sum\infty*\max(0,s_{l-1}-s_r+d_i) minsi(cici+1)+max(0,si1si)+max(0,sl1sr+di)你发现完全可以和费用流对偶化简出来的式子一一对应。

∞\infty 就是容量,si−1−sis_{i-1}-s_isi1si 之间边花费应为 000sl−1−srs_{l-1}-s_rsl1sr 边花费应为 did_idi。然后根据 ci−ci+1c_i-c_{i+1}cici+1 的正负看是与源点还是汇点连边。(多流入的流量看作是需要给汇点的,多流出的流量看作是源点给的,这样每个点都平衡了,不然我真的无法理解这个推出来对应的建图方式了

Upd:小同志灵光乍现明白了和源汇点之间建边和含义。
我们的网络流一定是流量平衡的,即流入等于流出。
然而我们推推导中一般化了每个点的流入可以最多比流出多 bub_ubu
网络路中源点向某个点连边后,这个点一定会把流量流出去。所以与源点的边相当于是增加了这个点的流出流量。自然与汇点的边就是增加流入流量。
因为前面一个点的流入和流出根本没有算和源汇的边,源汇点是后面才新建立的。
这样建图就能正确对应了。

跑最大费用流即可。

其实一般只要化出诸如 ∑capi,j∗max⁡(0,φi−φj+costi,j)\sum cap_{i,j}*\max(0,\varphi_i-\varphi_j+cost_{i,j})capi,jmax(0,φiφj+costi,j) 形式就是指导我们如何建边。

∑biφi\sum b_i\varphi_ibiφi 是指导我们如何分配正负点。

这种“势能”的 φ\varphiφ 代表的就是图中的点。

要注意的是,这种下标 −1,+1-1,+11,+1 需要看是否要用到 0,n+10,n+10,n+1 这两个点。

你建完了跑不出答案就考虑加点、改变边的方向、改变和源汇点的连边。只要大体是对的,总有一种是对的

单纯最大费用流只能得70,写 zkw 费用流就可以了。这里主要是分析建图。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define inf 0x3f3f3f3f
#define maxn 2000
#define maxm 50000
int n, m, s, t, cnt = -1;
int head[maxn], dis[maxn], lst[maxn], vis[maxn], c[maxn];
struct node { int to, nxt, flow, cost; }E[maxm];
queue < int > q;void addedge( int u, int v, int w, int c ) {E[++ cnt] = { v, head[u], w, c }, head[u] = cnt;E[++ cnt] = { u, head[v], 0,-c }, head[v] = cnt;
}bool SPFA() {memset( lst, -1, sizeof( lst ) );memset( dis, -0x3f, sizeof( dis ) );dis[s] = 0, q.push( s );while( ! q.empty() ) {int u = q.front(); q.pop(); vis[u] = 0;for( int i = head[u];~ i;i = E[i].nxt ) {int v = E[i].to;if( dis[v] < dis[u] + E[i].cost and E[i].flow ) {dis[v] = dis[u] + E[i].cost; lst[v] = i;if( ! vis[v] ) vis[v] = 1, q.push( v );}}}return ~lst[t];
}int MCMF() {int ans = 0;while( SPFA() ) {int flow = inf;for( int i = lst[t];~ i;i = lst[E[i ^ 1].to] ) flow = min( flow, E[i].flow );for( int i = lst[t];~ i;i = lst[E[i ^ 1].to] ) {E[i ^ 1].flow += flow;E[i].flow -= flow;ans += E[i].cost * flow;}}return ans;
}signed main() {scanf( "%lld %lld", &n, &m );s = n + 2, t = n + 1;memset( head, -1, sizeof( head ) );for( int i = 1;i <= n;i ++ )scanf( "%lld", &c[i] );for( int i = 0;i < n;i ++ )addedge( i, i + 1, inf, 0 );for( int i = 1, l, r, w;i <= m;i ++ ) {scanf( "%lld %lld %lld", &l, &r, &w );addedge( l - 1, r, inf, w );}for( int i = 0;i <= n;i ++ )if( c[i] - c[i + 1] > 0 ) addedge( s, i, c[i] - c[i + 1], 0 );else addedge( i, t, c[i + 1] - c[i], 0 );/*边全反向for( int i = 0;i < n;i ++ )addedge( i + 1, i, inf, 0 );for( int i = 1, l, r, w;i <= m;i ++ ) {scanf( "%lld %lld %lld", &l, &r, &w );addedge( r, l - 1, inf, w );}for( int i = 0;i <= n;i ++ )if( c[i] - c[i + 1] > 0 ) addedge( i, t, c[i] - c[i + 1], 0 );else addedge( s, i, c[i + 1] - c[i], 0 );*/printf( "%lld\n", MCMF() );return 0;
}

欢迎指出错误,我巴不得有人说这是错的然后把对的教给我球球了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习笔记】DAG / 一般有向图的支配树 / 灭绝树

定义与声明 一个有向图 GGG。给定一个起点 sss&#xff0c;假设 sss 能到达所有点。 若去掉某个点 iii 后&#xff0c;sss 无法到达 jjj&#xff0c;则称 iii 为 jjj 的支配点。 显然支配点存在传递关系。 以 sss 为根&#xff0c;使得对于任意节点 iii&#xff0c;其树上祖…

[ZJOI2014] 星系调查(树上差分 + 数学推式子)

problem luogu-P3340 题面写得那么长&#xff0c;其实说白了就是求一条直线&#xff0c;使得若干个点到这条直线的距离平方的和最小&#xff0c;求这个最小值。 solution 我超爱数学&#xff0c;数学就是我的命&#xff0c;我一天不学数学我就难受&#xff01; 假设拟合出…

[ZJOI2014] 璀璨光华(bfs建图 + dfs搜索)

problem luogu-P3342 solution 你感觉这道题没考什么&#xff0c;又感觉考了什么 通过样例以及题面&#xff0c;我们并未获取到『立方体每个小方块的编号是按一定规则命名』的信息。 也就是说&#xff0c;我们需要通过输入的每个小方块相邻的编号的信息来建出这个立方体的…

cf1523A. Game of Life

cf1523A. Game of Life 题意&#xff1a; 包含n个元素的数组&#xff0c;数值为1或0&#xff0c;如果一个元素为0&#xff0c;并且其周围正好只有一个为1的元素&#xff0c;那么下一刻本元素也会变成1. 给你一个数值&#xff0c;问你m次时刻后数组的状态 题解&#xff1a; …

SignalR 中丰富多彩的消息推送方式

在上一篇 SignalR 文章中&#xff0c;演示了如何通过 SignalR 实现了简单的聊天室功能&#xff1b;本着简洁就是美的原则&#xff0c;这一篇我们也来聊聊在 SignalR 中的用户和组的概念&#xff0c;理解这些基础知识有助于更好的开发基于 SignalR 的应用&#xff0c;通过对用户…

Visual Studio 2019 使用 Live Share

一.前言Visual Studio 2019 在今天发布&#xff08;北京时间&#xff09;了&#xff0c;这次带来了一个比较有趣的 Live Share 功能&#xff0c;使用它可以进行更好的协作开发。主要功能&#xff1a;更多资料可看官方介绍&#xff1a;Visual Studio 实时共享什么是Visual Studi…

cf1523B. Lord of the Values

cf1523B. Lord of the Values 题意&#xff1a; 给你一个数组&#xff0c;有n个数&#xff0c;n为偶数&#xff0c;a1&#xff0c;a2…an 现在有两个操作&#xff1a; 对于i<j 操作1&#xff1a;aiaiaj 操作2&#xff1a;ajaj-ai 把原数组转换为-a1,-a2,-a3… 题解&#…

Asp.Net Core WebAPI使用Swagger时API隐藏与分组

1、前言为什么我们要隐藏部分接口&#xff1f;因为我们在用swagger代替接口的时候&#xff0c;难免有些接口会直观的暴露出来&#xff0c;比如我们结合Consul一起使用的时候&#xff0c;会将健康检查接口以及报警通知接口暴露出来&#xff0c;这些接口有时候会出于方便考虑&…

cf1526E. Oolimry and Suffix Array(未解决)

E. Oolimry and Suffix Array 题意&#xff1a; 给定n&#xff0c;k和长度为n的后缀数组si(0<si<n-1),求长度为n的由k种字母构成的字符串种&#xff0c;后缀数组为si的有多少种 题解&#xff1a; 题解看懂了一半。。。等会了再更新 代码&#xff1a;

P2572 [SCOI2010]序列操作

P2572 [SCOI2010]序列操作 题意&#xff1a; 一个长度为n的01序列&#xff0c;下标从0开始&#xff0c;现在有五种变换操作和询问操作&#xff1a; 0 l r 把[l,r]区间内的所有数全变成01 l r 把[l,r]区间内的所有数全变成12 l r把[l,]区间内所有数全部取反3 l r询问[l,r]区间…

为您的机器配置开发环境

软件准备在本期视频中&#xff0c;我们将安装所序言的软件&#xff0c;并为我们的电脑配置.NET Core开发环境。我们需要安装如下2个软件&#xff1a;一个编辑器.NET Core SDK&#xff08;Software Development Kit&#xff09;下载并安装.NET Core 开发编辑器我的是Windows操作…

[CQOI2012] 局部极小值(状压DP + 容斥 + 搜索)

problem luogu-P3160 solution 这么小的数据范围&#xff0c;非暴力不状压。暴力 O(28!)O(28!)O(28!) 呵呵呵可以拉走了。 我们不妨从小到大填数字&#xff0c;这样如果局部极小值点还没有填的话&#xff0c;周围的九宫格就一定不能被填。 设 dp(s,i):dp(s,i):dp(s,i): 局…

基于Kubernetes 构建.NET Core 的技术体系

很多公司技术支持岗位的工作&#xff0c;如配置域名&#xff0c;部署环境&#xff0c;修改复位配置&#xff0c;服务重启&#xff0c;扩容缩容&#xff0c;梳理和完善监控&#xff0c;根据开发的需要查找日志等工作&#xff0c;需要和开发进行大量的沟通&#xff0c;如什么是外…

P4062 [Code+#1]Yazid 的新生舞会(分治做法)

P4062 [Code#1]Yazid 的新生舞会 题意&#xff1a; 给出一个序列&#xff0c;求有多少个子区间满足众数的出现次数大于区间长度的一半。 出现次数大于区间长度的一般我们称之为绝对众数 题解&#xff1a; 分治做法 对于一个区间[l,r]&#xff0c;设mid⌊lr2⌋\lfloor \frac…

[CQOI2014] 危桥(网络流)

problem luogu-P3163 solution 这是一道网络流好题&#xff0c;看的着摸不着吃不着。 初读完题&#xff0c;就知道这是一道“脱光了”的最大流。 建图基础版本&#xff1a; 建立额外源汇点。 无向边相同于两条有向边&#xff0c;直接建不影响&#xff0c;危桥流量设成 22…

那些优秀的开发者----汪宇杰:从重视细节,到成就技术专家

汪宇杰&#xff08;Edi Wang&#xff09;&#xff0c;.NET及Windows开发者&#xff0c;2018-2019年度微软最有价值专家&#xff08;Windows Development方向&#xff09;。现担任某金融科技企业的网站开发工程师。他对微软技术有鉴定的信念和不灭的热情&#xff0c;曾在Windows…

P4062 [Code+#1]Yazid 的新生舞会(线段树做法)

P4062 [Code#1]Yazid 的新生舞会&#xff08;线段树做法&#xff09; 题意&#xff1a; 给你一个序列a[1…n]​&#xff0c;求存在绝对众数的子区间个数。 绝对众数指&#xff1a;区间中出现次数最多的那个数&#xff0c;出现次数严格大于区间长度的一半。 题解&#xff1a…

《从零开始学ASP.NET CORE MVC》课程介绍

大家好&#xff0c;欢迎来到52ABP学院&#xff0c;收看我们的 《从零开始学ASP.NET CORE MVC》。ASP.NET Core 简介从2015年开始随时互联网成长&#xff0c;云计算和AI、大数据的爆发&#xff0c;大家从谈论项目信息化到数字化的转型&#xff0c;从ToC产业到ToB产业的转型&…

[ZJOI2015] 地震后的幻想乡(状压dp + 期望)

problem luogu-P3343 solution dp(i):dp(i):dp(i): 当恰好加入第 iii 小边时候&#xff0c;所有点联通的方案数。 则 ans∑idpi(mi)im1ans\sum_i \frac{dp_i}{\binom mi}\frac{i}{m1}ans∑i​(im​)dpi​​m1i​ 。 重点是如何计算出 dp(i)dp(i)dp(i)。 这个恰好的限制不好…

P2152 [SDOI2009]SuperGCD

P2152 [SDOI2009]SuperGCD 题意&#xff1a; 求a和b的最大公约数 a,b<101000010^{10000}1010000 题解&#xff1a; 高精度&#xff0c;java高精度直接有模板&#xff0c;c高精度结合gcd的辗转相减法 对于&#xff1a;a,b的gcd(a,b)有&#xff1a; 若a为奇数&#xff0c…