2018 CCPC 湘潭邀请赛 & 2018 JSCPC

Problem A

 

Problem B

 

Problem C

这题用主席树轻松解决

可以二分答案,每次查询;也可以直接开个全局变量在主席树上二分;

时间复杂度$O(nlog^{2}n)$或$O(nlogn)$

 

Problem D

设$f[i][j]$为$j$个球分成$i$段的乘积

首先不管环,考虑这样一个链,黑白黑白黑白黑白

反正就是保证:黑白段数相同,首尾两段颜色不一样

但是他是一个环,也就是,首尾两个球的颜色可以相同,那我们把最后那段的最后一个球,放到第一的位置的前面,

然后把倒数第二个球,再放到最前面,直到最后那段只剩下一个球了,也就是说这一条链的答案 可以产生最后一段长度的贡献

那这条链对答案的贡献就是$s_{1} * s_{2} * s_{3} * ... * s_{i - 1} * s_{i} * s{i}$

也就是最后一段平方一下,其他都不变

于是就DP另一个东西,设$g[i][j]$为$j$个球分成$i$段, 最后那段要平方一下的所有方案的乘积和

最后枚举段数,乘法原理搞一下就好了。

DP的时候用滚动数组优化,处理询问的时候对询问离线。

时间复杂度$O(n^{2})$

 

 

Problem E

 

Problem F

 

Problem G

 

Problem H

 

Problem I

设$f1[i]$为以$a[i]$结尾的最长上升子序列

设$f2[i]$为以$a[i]$开头的最长上升子序列

忽略掉$0$

首先注意到一个事实,假设不考虑$0$,原序列的LIS长度为$L$,总有$f(x) = L$ 或 $f(x) = L + 1$

对于某个正整数$a[i]$,考虑他前面的最右边的某个$0$,考虑这个数之前的所有正整数$a[j]$

我们要找到这样一个$j$,满足以下条件:

$1、f1[j] + f2[i] = L$;

$2、a[j] + 1 < a[i]$;

$3、a[j]$要最小。

找到这样的$a[j]$之后,对于所有的满足$a[j] < k < a[i]$的$k$,有$f(k) = L + 1$。

枚举$a[i]$, 在$O(logn)$的时间内完成上面的事情,然后差分标记一下即可。

时间复杂度$O(nlogn)$

 

Problem J

 

Problem K

 

转载于:https://www.cnblogs.com/cxhscst2/p/9062107.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值