XSY3343

先考虑如何判定一个填好的序列会不会gg:
若∃p,q,使s′[p+1]=t′[q+1]=−1\exist p,q,使s'[p+1]=t'[q+1]=-1∃p,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 0∑i=1p​s′[i]+∑j=1q​t′[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=1p​s′[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=1q​t′[j]},判断sums′+sumt′sum_{s'}+sum_{t'}sums′​+sumt′​是否≤0\leq0≤0即可判断序列会不会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=1∑p​s′[i]}
特别地,若s′[]s'[]s′[]全为1,sums′=∑i=1∣s′∣s′[i]sum_{s'}=\sum_{i=1}^{|s'|}s'[i]sums′​=∑i=1∣s′∣​s′[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=1∑q​t′[i]}
特别地,若t′[]t'[]t′[]全为1,sumt′=∑i=1∣t′∣t′[i]sum_{t'}=\sum_{i=1}^{|t'|}t'[i]sumt′​=∑i=1∣t′∣​t′[i]

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

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

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

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

如果i−1i-1i−1位可以填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,0​→fi−1,j+1,0​,fi,j,1​→fi−1,j+1,1​,因为在最前面加一个111并不改变原来的最小前缀和

如果i−1i-1i−1位可以填−1-1−1,那么有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,0​→fi−1,min(−1,j−1),0​,fi,j,1​→fi−1,min(−1,j−1),[j≤0]​,因为增加了一个值为−1-1−1的前缀和,所以原来j>0j>0j>0且最小前缀和=j=j=j的方案会变为最小前缀和=−1≠j−1=-1\ne j-1=−1​=j−1

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

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

[XSY3343] 程序锁(DP)相关推荐

  1. [xsy3343]程序锁

    题意:有两个序列,序列中数字$\in\{-1,0,1\}$ 有两个指针,初始时分别指向两个序列的开始位置,有一个初始为$0$的数$a$,重复以下过程直到两个指针都指向序列末尾后 如果一个指针指向末尾后 ...

  2. 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码......

    当我在窗体初始化的时候,调用了一个外部的dill时,它就不知什么原因的 抛出一个"正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码&quo ...

  3. mysql锁与程序锁_数据库加锁(转)

    1 如何锁一个表的某一行 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SELECT * FROM table ROWLOCK WHERE id = ...

  4. android安全问题(二) 程序锁

    导读:本文介绍如何实现对应用加锁的功能,无须root权限 某些人有时候会有这样一种需求,小A下载了个软件,只是软件中的美女过于诱惑与暴露,所以他不想让别人知道这是个什么软件,起码不想让别人打开浏览.而 ...

  5. mysql锁与程序锁_sql 锁类型与锁机制

    SQL Server锁类型(SQL)收藏 1. HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁. 2. NOLOCK:不添加共享锁和排它锁,当这个选项生 ...

  6. 检测到 LoaderLock Message Microsoft.DirectX.dll”正试图在 OS 加载程序锁内执行托管代码。...

    今天在群里有朋友问了一个"检测到 LoaderLock Message Microsoft.DirectX.dll"正试图在 OS 加载程序锁内执行托管代码."的问题,自 ...

  7. 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码...

    在窗体初始化的时候,调用了一个外部的dll,不知什么原因的 抛出一个"正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码"的异常, ...

  8. CAD调试时抛出“正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码”异常的解决方法...

    这些天重装了电脑Win10系统,安装了CAD2012和VS2012,准备进行软件开发.在调试程序的时候,CAD没有进入界面就抛出 "正试图在 os 加载程序锁内执行托管代码.不要尝试在 Dl ...

  9. 正试图在 os 加载程序锁内执行托管代码

    问题: 正尝试在 OS 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起. 方法一: 调试->异常->Managed Debu ...

最新文章

  1. Linux的僵尸进程
  2. 物流系统高可用架构案例
  3. 三、值类型与引用类型
  4. linux 串口特别是接收
  5. 大数据WEB阶段 (十)Response、ServletConfig、ServletContext、资源跳转三种方式
  6. java getimage_在Java语言中,为了使用getImage的方法,你需要导入的类是()。
  7. 织梦手机版list.php,解决织梦一级目录作域名list.php无法跳转到手机站的问题
  8. P1313-计算系数【组合数,二项式定理】
  9. three.js加载3d模型_基于WebGL的3D技术在网页中的运用 ThingJS 前端开发
  10. 别再用硬编码写业务流程了,试试这款轻量级流程编排框架
  11. 增值税防伪税控系统到底是什么呢?
  12. win10分辨率不能调整_笔记本win10系统调整外接显示器分辨率的方法
  13. 72个嵌入式技术网站
  14. 关闭Windows Server IE增强安全配置 解决Windows服务器无法上网的问题
  15. Set 中 toArray()
  16. 用html写QQ音乐首页,html+caa手写qq音乐_html/css_WEB-ITnose
  17. 技嘉主板大部分型号开启WOL(Wake up-On-LAN)网络唤醒与定时开机
  18. thymeleaf笔记
  19. 区块链入门:如何简单易懂地介绍区块链(图文)
  20. 方太:以“一”解“套”

热门文章

  1. mongodb默认的用户名密码_设置mongodb的用户名密码 | Think in Drupal
  2. cad必练10张图_CAD比例问题大详解!赶紧收藏!
  3. c语言综合模拟测试题答案,【C语言指针模拟测试题_答案】
  4. html 去除max-height,HTML Style maxHeight用法及代码示例
  5. [MyBatisPlus]通用Service接口测试通用Service
  6. [RabbitMQ]工作队列原理_代码实现
  7. [蓝桥杯][2014年第五届真题]分糖果-模拟
  8. dft + fft(模板)
  9. string(STL)
  10. Codeforces Round #626 (Div. 2) D. Present 按位贡献 + 快排新姿势