[XSY3343] 程序锁(DP)

XSY3343

先考虑如何判定一个填好的序列会不会gg:
∃p,q,使s′[p+1]=t′[q+1]=−1\exist p,q,使s'[p+1]=t'[q+1]=-1p,q,使s[p+1]=t[q+1]=1∑i=1ps′[i]+∑j=1qt′[j]≤0\sum_{i=1}^{p}s'[i]+\sum_{j=1}^{q}t'[j]\leq 0i=1ps[i]+j=1qt[j]0,则这个序列必gg。

那么我们只需找到sums′=mins′[p+1]=−1{∑i=1ps′[i]}sum_{s'}=min_{s'[p+1]=-1}\{\sum_{i=1}^{p}s'[i]\}sums=mins[p+1]=1{i=1ps[i]}sumt′=mint′[q+1]=−1{∑j=1qt′[j]}sum_{t'}=min_{t'[q+1]=-1}\{\sum_{j=1}^{q}t'[j]\}sumt=mint[q+1]=1{j=1qt[j]},判断sums′+sumt′sum_{s'}+sum_{t'}sums+sumt是否≤0\leq00即可判断序列会不会gg。

为了方便,我们稍微转换一下条件,把s′[p+1],t′[q+1]s'[p+1],t'[q+1]s[p+1],t[q+1]也纳入sums′,sumt′sum_{s'},sum_{t'}sums,sumt中,即定义:
sums′=mins′[p]=−1{∑i=1ps′[i]}sum_{s'}=min_{s'[p]=-1}\{\sum_{i=1}^{p}s'[i]\}sums=mins[p]=1{i=1ps[i]}
特别地,若s′[]s'[]s[]全为1,sums′=∑i=1∣s′∣s′[i]sum_{s'}=\sum_{i=1}^{|s'|}s'[i]sums=i=1ss[i]
sumt′=mint′[q]=−1{∑i=1qt′[i]}sum_{t'}=min_{t'[q]=-1}\{\sum_{i=1}^{q}t'[i]\}sumt=mint[q]=1{i=1qt[i]}
特别地,若t′[]t'[]t[]全为1,sumt′=∑i=1∣t′∣t′[i]sum_{t'}=\sum_{i=1}^{|t'|}t'[i]sumt=i=1tt[i]

那么如果s′[],t′[]s'[],t'[]s[],t[]都不全为1,
有若sums′+sumt′≤−2sum_{s'}+sum_{t'}\leq-2sums+sumt2,则序列必gg。
也即若sums′+sumt′≥−1sum_{s'}+sum_{t'}\geq-1sums+sumt1,序列一定不会gg。

否则,若sums′+sumt′≥0sum_{s'}+sum_{t'}\geq0sums+sumt0,序列一定不会gg。

然后考虑DP,正着DP很困难,考虑倒着DP,这样每次只会增加一个小前缀。

fi,j,kf_{i,j,k}fi,j,k表示填完[i,n][i,n][i,n],这些位置相对于iii的前缀和中,以−1-11结尾的最小前缀和=j=j=j的方案数,kkk表示jjj是否等于总和

如果i−1i-1i1位可以填111,那么有fi,j,0→fi−1,j+1,0,fi,j,1→fi−1,j+1,1f_{i,j,0}\rightarrow f_{i-1,j+1,0},f_{i,j,1}\rightarrow f_{i-1,j+1,1}fi,j,0fi1,j+1,0,fi,j,1fi1,j+1,1,因为在最前面加一个111并不改变原来的最小前缀和

如果i−1i-1i1位可以填−1-11,那么有fi,j,0→fi−1,min⁡(−1,j−1),0,fi,j,1→fi−1,min⁡(−1,j−1),[j≤0]f_{i,j,0}\rightarrow f_{i-1,\min(-1,j-1),0},f_{i,j,1}\rightarrow f_{i-1,\min(-1,j-1),[j\le0]}fi,j,0fi1,min(1,j1),0,fi,j,1fi1,min(1,j1),[j0],因为增加了一个值为−1-11的前缀和,所以原来j>0j>0j>0且最小前缀和=j=j=j的方案会变为最小前缀和=−1≠j−1=-1\ne j-1=1=j1

两个序列分别DP后直接统计答案即可

总结:
倒着DP 和 对s′,t′s',t's,t两个序列分别DP 这两点太巧妙了%%%

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

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

相关文章

Asp.Net Core SignalR 用泛型Hub优雅的调用前端方法及传参

继续学习最近一直在使用Asp.Net Core SignalR(下面成SignalR Core)为小程序提供websocket支持,前端时间也发了一个学习笔记,在使用过程中稍微看了下它的源码,不得不说微软现在真的强大,很多事情都帮你考虑到了,比如使用Redis,使用Redis后,你的websocket就支持横向扩…

Network POJ-3694

Network POJ-3694 文章目录Description题意:样例分析:题解:代码:Description A network administrator manages a large network. The network consists of N computers and M links between pairs of computers. Any pair of com…

【树状数组】递增子序列(金牌导航 数据结构优化DP-1)

递增子序列 金牌导航 数据结构优化DP-1 题目大意 给出一个序列,让你求长度为m的单调递增子序列的个数 输入样例 3 2 1 1 2 7 3 1 7 3 5 9 4 8输出样例 2 12数据范围 1⩽n⩽104,1⩽m⩽100,0⩽ai⩽9876543211\leqslant n \leqslant 10^4,1\leqslant m \leqslant…

使用.NET Core 2.1的Azure WebJobs

WebJobs不是Azure和.NET中的新事物。 Visual Studio 2017中甚至还有一个默认的Azure WebJob模板,用于完整的.NET Framework。 但是,Visual Studio中以某种方式遗漏了.NET Core中WebJobs的类似模板。 在这篇文章中,我使用的是.NET Core 2.1来创…

P3265-[JLOI2015]装备购买【线性基,拟阵贪心】

正题 题目链接:https://www.luogu.com.cn/problem/P3265 题目大意 给出nnn个有权值的mmm元组。求最大独立集,即一个最大的集合且内部元素线性无关。且在集合最大的情况下权值和最小 通俗的说就是没有任何一个元素内被其他元素的倍数和表示。 解题思路 我们考虑线…

【决策单调性】玩具装箱(金牌导航 决策单调性优化DP-1)

玩具装箱 金牌导航 决策单调性优化DP-1 题目大意 给出若干个物品,把iii到jjj个物品装在一起的长度lj−i∑kijaklj-i\sum_{ki}^{j}a_klj−i∑kij​ak​(物品必须是连续的),其代价为(lL)2(l L)^2(lL)2(L为给出的常数…

HDU4612 Warm up

Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 11184 Accepted Submission(s): 2573HDU4612 Warm up 文章目录Problem Description题意:题解:代码:Problem Description N …

[NOIP2016 提高组] 天天爱跑步(树上差分)

如果没有时间的限制,这题就是对每个点iii,求经过iii的路径数,用树上差分解决即可: 枚举路径x→y{x\to y\{x→y{ a[x]1;a[y]1;a[x]1;a[y]1;a[x]1;a[y]1; a[lca(x,y)]−1;a[fa[lca(x,y)]]−2;a[lca(x,y)]-1;a[fa[lca(x,y)]]-2;a[lc…

.NET Core中的CSV解析库

感谢本篇首先特别感谢从此启程兄的《.NetCore外国一些高质量博客分享》, 发现很多国外的.NET Core技术博客资源, 我会不定期从中选择一些有意思的文章翻译总结一下。.NET Core中的CSV解析库本篇博客来源于.NET Core Totorials的《CSV Parsing In .NET Core》。背景介绍对于初级…

【manacher】双倍回文(金牌导航 manacher-2/luogu 4287)

双倍回文 金牌导航 manacher-2 luogu 4287 题目大意 设串为x,将其取反为x’,定义双倍回文为形如xx’xx’的串 现在给你一个字符串,让你求最大双倍回文子串 输入样例 16 ggabaabaabaaball输出样例 12数据范围 N⩽105N\leqslant 10^5N⩽…

P6178-[模板]Matrix-Tree 定理

正题 题目链接:https://www.luogu.com.cn/problem/P6178 题目大意 给出一个nnn个点mmm条边的无向/有向图。 求所有的生成树/以1为根的外向生成树的权值乘积和。 解题思路 矩阵AAA的行列式表示为det(A)det(A)det(A),定义为 det(A)∑P(−1)μ(P)∏i1nAi,pidet(A)\…

可达性

来源:牛客网 文章目录题目描述题解:代码:时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 262144K,其他语言524288K 64bit IO Format: %lld题目描述 给出一个 0 ≤ N ≤ 105 点数、0 ≤ M ≤ 105 边…

[集训队作业2018]小Z的礼物(min-max容斥,插头dp)

传送门 这种求 “取到所有物品的期望时间” 的题一般都用 min−maxmin-maxmin−max容斥 解决: 设t(i,j)t(i,j)t(i,j)为取到格子(i,j)(i,j)(i,j)的期望时间,集合S∪c(i,j)′∗′{t(i,j)}S\cup_{c(i,j)*}\{t(i,j)\}S∪c(i,j)′∗′​{t(i,j)} 那么根据min−…

为什么要使用Entity Framework

本文介绍从DDD(Domain-Driven Design[领域驱动设计])的角度来说说为什么要使用Entity Framework(以下都会简称为EF),同时也看出类似Drapper之类的简陋ORM不足的地方。设想业务都是大家知晓的权限管理,实体类如下。读到这里,请先思考一下&…

【Splay】波动值之和(金牌导航 Splay-1)

波动值之和 金牌导航 Splay-1 题目大意 给出一个数列,求∑i1nminj1i−1∣ai−aj∣\sum_{i1}^{n}min_{j1}^{i-1}|a_i-a_j|∑i1n​minj1i−1​∣ai​−aj​∣ 输入样例 6 5 1 2 5 4 6输出样例 12样例解释 5∣1−5∣∣2−1∣∣5−5∣∣4−5∣∣6−5∣541011125|1…

P4336-[SHOI2016]黑暗前的幻想乡【矩阵树定理,容斥】

正题 题目链接:https://www.luogu.com.cn/problem/P4336 题目大意 nnn个点,n−1n-1n−1个边集,求有多少种方案使得每个边集中恰好选出一条边使得这nnn个点连成一棵树。 解题思路 我们需要利用好n−1n-1n−1个边集这个性质,因为nnn很小&…

Tarjan算法

Tarjan算法可以应用在求解 强连通分量,缩点,桥,割点,双连通分量,LCA等 关于文章目录强连通分量代码题目tarjan求割点割点概念流程代码:求无向图的割边/桥理解:代码:强连通…

[集训队作业2018] 万圣节的积木(李超线段树)

传送门 设最底层为第1层,倒数第二层为第2层,以此类推。 发现若第111 ~ iii层构成的积木稳定,第111 ~ jjj (j>ij>ij>i)构成的积木也稳定, 那么第i1i1i1 ~ jjj层构成的积木一定也是稳定的。 所以我们只要找到所有的iii满…

Ocelot简易教程(一)之Ocelot是什么

简单的说Ocelot是一个用.NET Core实现并且开源的API网关技术。可能你又要问了,什么是API网关技术呢?Ocelot又有什么特别呢?我们又该如何集成到我们的asp.net core程序中呢?下面我会通过一些列通俗易懂的教程来为大家讲解。今天的这…

P5516-[MtOI2019]小铃的烦恼【期望dp,线性消元】

正题 题目链接:https://www.luogu.com.cn/problem/P5516 题目大意 nnn个字母的一个字符串,每次随机选取两个不同的位置(x,y)(x,y)(x,y)让第xxx个位置的字符变成第yyy个位置的字符。 求期望多少次能够把所有字符变成同一个。 解题思路 因为最终状态很多&#xff0…