zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    6-Python爬虫-分布式爬虫/Redis
    ES 查询时 排序报错(fielddata is disabled on text fileds by default ... )解决方法
    Intellij Idea webstorm 激活
    Intellij Idea 配置jdk
    java 获取(格式化)日期格式
    js 跳转 XSS漏洞 预防
    CSS去掉背景颜色
    js对象无法当成参数传递 解决方法
    Elasticsearch java api
    java多条件查询SQL语句拼接的小技巧
  • 原文地址:https://www.cnblogs.com/cxhscst2/p/9062107.html
Copyright © 2011-2022 走看看