ATM Mechine

E(i,j):存款的范围是[0,i],还可以被警告j次的期望值。

E(i,j) = \(max_{k=1}^{i}{\frac{i-k+1}{i+1} * E(i-k,j)+\frac{k}{i+1}*E(k-1,j-1)+1}\)
这样时间复杂度是\(O(K^2W)\)的。
假如Alice使用的是二分策略,那么在最坏情况下至多被警告\(\left \lceil log_{2}{K} \right \rceil\) 次。
于是W:=min(W,15)就可以了。

然后clar有人问y是不是要整数。由于存款是整数,你取小数的钱没有任何意义啊。

Cycle:

首先A、B两个串循环相同的话,那么A串可以拆成一个前缀和一个后缀,交换下位置就得到了B串。设bs[i]表示所有的k满足子串B[k...k+i]和子串A[0...i]相同,用bitset来存,然后再枚举下后缀的起始位置,利用bitset的位操作可解。复杂度\(O(n^2/64)\)

Divide the Sequence

把长度为n的序列分成尽量多的连续段,使得每一段的每个前缀和都不小于0。保证有解。
从后往前贪心分段即可。

How Many Triangles

数一数锐角的数量A和直角+钝角的数量B,那么答案就是(A-2B)/3。
暴力算的话是\(O(n^3)\)的。使用极角排序+two pointers就可以做到\(O(n^2log\ n)\)。

这边钝角指代范围在90度到180度之间的角(不包括90和180)。

Interesting:

用manacher算法O(n)求出所有的回文半径。有了回文半径后,就可以求出cntL[i]表示以i结尾的回文串的起始位置的和cntR[i]表示以i起始的回文串的结尾位置的和,然后就可以求出答案了,这里要注意奇偶长度回文串的不同处理。复杂度O(n)

Interval:

首先考虑区间覆盖几个(大于1个)序列的,设ans[i]表示区间gcd为i的倍数的区间数,那么除了两端的序列,中间的所有序列的gcd都为i的倍数,于是搞出每个序列的gcd和所有的前缀gcd和后缀gcd,对于ans[i]就可以利用所有的前缀gcd和后缀gcd和完整序列gcd来求,需要好好处理细节。复杂度为O(n*(最大因子个数))。
然后考虑区间在一个序列中的,由于对于每个位置结尾的不同gcd数最多是log个,所以\(O(n\ log\ n\ log\ n)\)可以解决。

K-wolf Number

数位dp,状态里一下前K-1个数位上的数字即可。标程是std::map<std::vector,long long>这样记的状态。

Level Up

当第i个人的能力值从A_i变成100000时,会导致他在树上的祖先中原本中位数不小于A_i的部分发生变化,从\(\left \lceil \frac{t}{2} \right \rceil\ th\) 变成\((\left \lceil \frac{t}{2} \right \rceil + 1)\ th\)。所以如果知道每个节点的这两个值,就可以dfs一遍用树状数组求出答案了。
考虑如何求\(\left \lceil \frac{t}{2} \right \rceil th\) 和\((\left \lceil \frac{t}{2} \right \rceil + 1) th\)。
一种做法是使用CCPC-WFinal 1008的线段树方法,为每个节点维护一棵权值线段树,然后合并两棵线段树时,如果一棵是空的,就返回另一棵,否则递归合并。然后就是求线段树第K大这样的经典问题了。这个做法时间复杂度O(nlogn),空间复杂度O(nlogn)。
另一个做法是每个节点维护两个堆,第一个堆放前一半元素,其他放在第二堆里。然后合并堆时使用启发式合并的策略即可。这样时间\(O(nlog\ n^2)\),空间O(n)。
然而实测第二个做法跑得比第一个快。

Permutation:

首先求出dp[i][j][k]表示i子树中j在第k个位置的合法排列情况数,然后对于某一个u子树,枚举下u子树下的两个不同子树的v1,p1,v2,p2,表示v1结点在第一个排列第p1个位置,v2结点在第p2位置,再枚举下v1结点插入到v2排列的第k个位置,这样子的复杂度是\(O(n^5)\)。由于v1和v2有大小关系,可以处理出前缀和的东西来优化下,可以达到\(O(n^4)\)的复杂度。实际上努力下好像也可以达到\(O(n^3)\)的复杂度,但这题只要求\(O(n^4)\)。

Prefix:

将字符串一个个的插入字典序,在字典序中维护好有该前缀串的最大编号字符串,用一个线段树维护好,每个字符串控制了多少个前缀串,由于询问是在线的,所以用主席树来维护。于是对一个询问(l,r),在第r个线段树求一下区间(l,r)的和即为答案。复杂度\(O(n\ log\ n)\)

Two:

水题。dp[i][j]表示A序列前i个数和B序列前j个数的相同子序列对有多少个。复杂度\(O(n^2)\)

World is Exploding

给一个长度n的序列A,问有多少四元组(a,b,c,d)满足:4个数两两不同,1 <= a < b <= n,1 <= c < d <= n,A_a < A_b,A_c > A_d。
定义:
\(rg(x) = \left | \{ y | x < y <= n, A_x < A_y \} \right |\)
\(lg(x) = \left | \{ y | 1 <= y < x, A_x < A_y \} \right |\)
\(rs(x) = \left | \{ y | x < y <= n, A_x > A_y \} \right |\)
\(ls(x) = \left | \{ y | 1 <= y < x, A_x > A_y \} \right |\)
\(allg = \sum_{i=1}^{n}{rs(i)}\)
以上都可以通过树状数组在\(O(n\ log\ n)\)的时间内求出(需要先对A序列进行离散化处理)。
然后,
\(answer = \sum_{a=1}^{n}{rg(a) * (allg - lg(a) - rs(a))} - \sum_{b=1}^{n}{ls(b) * (lg(b) + rs(b)}\)

2016 Multi-University Training Contest 5 solutions BY ZSTU的更多相关文章

  1. 2016 Al-Baath University Training Camp Contest-1

    2016 Al-Baath University Training Camp Contest-1 A题:http://codeforces.com/gym/101028/problem/A 题意:比赛 ...

  2. 2015 Multi-University Training Contest 6 solutions BY ZJU(部分解题报告)

    官方解题报告:http://bestcoder.hdu.edu.cn/blog/2015-multi-university-training-contest-6-solutions-by-zju/ 表 ...

  3. 2016 Multi-University Training Contest 10 solutions BY BUPT

    1001. 一个数组上的两个区间求中位数,可以通过分类讨论直接找到中位数,复杂度O(1).不过本题数据较小,优美的log(n)也可过. 1002. 直接求得阴影面积表达式即可. 1003. 二分完成时 ...

  4. 2016 Multi-University Training Contest 9 solutions BY 金策工业综合大学

    A Poor King Tag: Reversed BFS Preprocessing is needed to calculate answers for all positions (states ...

  5. 2016 Multi-University Training Contest 8 solutions BY 学军中学

    1001: 假设有4个红球,初始时从左到右标为1,2,3,4.那么肯定存在一种方案,使得最后结束时红球的顺序没有改变,也是1,2,3,4. 那么就可以把同色球都写成若干个不同色球了.所以现在共有n个颜 ...

  6. 2016 Multi-University Training Contest 7 solutions BY SYSU

    Ants 首先求出每个点的最近点. 可以直接对所有点构造kd树,然后在kd树上查询除本身以外的最近点,因为对所有点都求一次,所以不用担心退化. 也可以用分治做,同样是O(NlogN)的复杂度. 方法是 ...

  7. 2016 Multi-University Training Contest 6 solutions BY UESTC

    A Boring Question \[\sum_{0\leq k_{1},k_{2},\cdots k_{m}\leq n}\prod_{1\leq j< m}\binom{k_{j+1}}{ ...

  8. 2016 Multi-University Training Contest 4 solutions BY FZU

    1001 Another Meaning 对于这个问题,显然可以进行DP: 令dp[i]表示到i结尾的字符串可以表示的不同含义数,那么考虑两种转移: 末尾不替换含义:dp[i - 1] 末尾替换含义: ...

  9. 2016 Multi-University Training Contest 3 solutions BY 绍兴一中

    1001 Sqrt Bo 由于有\(5\)次的这个限制,所以尝试寻找分界点. 很容易发现是\(2^{32}\),所以我们先比较输入的数字是否比这个大,然后再暴力开根. 复杂度是\(O(\log\log ...

随机推荐

  1. AJPFX关于java中可访问控制符和非访问控制符的详细总结

    1.类的修饰符分为:可访问控制符和非访问控制符两种. 可访问控制符是:公共类修饰符 public 非访问控制符有:抽象类修饰符 abstract :最终类修饰符 final 1 )公共类修饰符 pub ...

  2. 命令模式和php实现

    命令模式: 命令模式(Command Pattern):将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化:对请求排队或者记录请求日志,以及支持可撤销的操作.命令模式是一种对象行为型模 ...

  3. sql server 2012 从删库到跑路

    问题: 向sql server 2012单个数据库中导入1500万+条数据的时候,报错: 错误 0xc0202009: 数据流任务 1: SSIS 错误代码 DTS_E_OLEDBERROR.出现 O ...

  4. 洛谷P2742 【模板】二维凸包

    题意 求凸包 Sol Andrew算法: 首先按照$x$为第一关键字,$y$为第二关键字从小到大排序,并删除重复的点 用栈维护凸包内的点 1.把$p_1, p_2$放入栈中 2.若$p_{i{(i & ...

  5. JS进阶-闭包的几种常见形式

    作用域链: //作用域链 var a = 1; function test() { var b =2; return a; } alert(test());//弹出1: alert(b);//不能获取 ...

  6. Github-Client(ANDROID)开源之旅(三) ------ 巧用ViewPagerIndicator

    接上篇博文:Github-Client(ANDROID)开源之旅(二) ------ 浅析ActionBarSherkLock 文中结合了网易新闻客户端讲解了开源库ActionBarSherklock ...

  7. (转)新手学习System Verilog & UVM指南

    从刚接触System Verilog以及后来的VMM,OVM,UVM已经有很多年了,随着电子工业的逐步发展,国内对验证人才的需求也会急剧增加,这从各大招聘网站贴出的职位上也可以看出来,不少朋友可能想尽 ...

  8. ssm框架搭建(下) 简单案例

    前言 这段时间没有更新博客,一直想做一个基于ssm的简单的项目.经过多次的尝试,终于实现了简单的增删查改功能了. 正文 由于前端的技术不是很熟悉,经过多方的查阅,使用了bootstrap的样式,来使界 ...

  9. iTOP-iMX6开发板Android系统下LVDS和HDMI双屏异显方法

    迅为iMX6 开发板 android 系统下 LVDS 和 HDMI 双屏异显的使用过程. 注意,iTOP-iMX6 开发板的 android 系统想要实现对 LVDS 和 HDMI 双屏异显功能的支 ...

  10. 激活函数:Swish: a Self-Gated Activation Function

    今天看到google brain 关于激活函数在2017年提出了一个新的Swish 激活函数. 叫swish,地址:https://arxiv.org/abs/1710.05941v1 pytorch ...