2017CodeM初赛B场
A、合并字符串价值(loj6174)
分析:
普通暴力:枚举两个分界线,那么ans=Σmin(Al(c)+Bl(c),Ar(c)+Br(c)),这样是O(n^2),会TLE
考虑枚举a的分界线,b的答案根据之前的答案进行转移
显然,4个字母A G C T可以单独考虑
假设当前a分界线下,a的左部分该字母有p个,右部分该字母有q个(p,q显然为已知数)
我们来考察b分界线,假设b分界线左边有k个该字母,右边有t-k个该字母(k为未知数,t为已知数,t是b字符串该类字母的总数)
那么现在该分界线对答案的贡献就是min(p+k,q+t-k)
遇见min就分类讨论:
k<=(q-p+t)/2时,贡献是p+k
k>(q-p+t)/2时,贡献是q+t-k
分析完了状态,我们去考虑快速转移答案
假设p,q,k,t-k情况下的答案我们已经知道了,现在我们分析a分界线向右移动的情况
这个时候,p=p+1,q=q-1
k<=(q-p+t)/2-1时,贡献是p-1+k
k>(q-p+t)/2-1时,贡献是q+1+t-k
这个很明显,某一段区间集体-1,某一段区间集体+1,某一段区间集体更改成一个值,用线段树去维护
具体地:设m=(q-p+t)/2
首先k<m这些,贡献全部-1;k>m这些,贡献全部+1
k=m这些,贡献全部变成q-1+t-m
(这里我本想偷懒一下,用区间加减来代替覆盖,就是求上一次该位置的贡献,是p+m,但是这有细节……等下再提)
所以直接线段树维护就行了,询问就是max
时间复杂度O(nlogn)
细节:
1、注意线段树下标从0开始,表示b数组取左边0个的最优值
2、注意初始值的构造
3、注意m=0,m=负数的时候,k的取值不一定就是m了,比如k<-3,实际上就是k<0,不需要修改,k>-3,实际上是k>=0,全部都要修改
4、注意m正负还不够,还要注意m<=0的时候,某位置上一次的贡献不一定是p+m了,因为会出现两个区间重叠,有个好办法就是min(p+m,q+t-m)
B、黑白树(loj6175)
分析:
贪心,按照拓扑结构,从叶子节点向上涂色,遇见一个未染色节点的时候,那么就在这个节点的子树中,选择一个能上升到离根节点最近的点,让这个点涂色。
具体实现的时候树形dp就可以了
dp[u]表示以u为根的子树全部涂完,能额外上升到最小的深度
dp[u]=min(dp[u],dp[v],dep[u]-a[u]+1)
f[u]表示实际上以u为根的子树,把颜色涂到了哪个深度
f[u]=min(f[u],f[v])
如果当一个点u,所有的子树都做完了
发现f[u]==inf,就说明u不能涂到,这时候就要启用一个子节点涂色了
很明显这时候我们用dp[u]保存的那个最优值
也就是f[u]=dp[u],并且因为多启用了一个子节点,所以ans++
C、模(loj6176)
占坑
D、送外卖(loj6177)
分析:
n和q都十分小,所以自然考虑状态压缩dp
那么很容易列方程dp[S][now]表示现在q个订单状态为S,我现在在now点,花费的最少时间
仔细想想订单有3个状态:未领、已领、已送达
所以S要是三进制
一重循环枚举S,一重循环枚举now,一重循环枚举一个订单作为转移,时间复杂度O(3^q*n*q)
转移的时候发现需要知道从一个点走到另一个点的最短路,所以事先flyod预处理最短路就ok了
E、景区路线规划(loj6178)
分析:
首先h1,h2明显独立,可以分开考虑,做两次即可
最直观的想法是dp[now][time]表示我已经玩完了now点的游乐设施,还剩下时间time
那么dp[now][time]=Σdp[u][t]/u点此时的出度 + h[now]
这样会发现结果明显大很多,为什么呢?
实际上,加的应该是h[now]*p[now][time],p[now][time]表示该种情况发生的概率
因为h[now]发生是有概率的,如果直接加上h[now],那就是默认这事件发生概率是1了
有个更简单的方法,就是直接dp[now][time]表示概率,不表示期望
那么转移就是dp[now][time]=Σdp[u][t]/u
期望怎么统计?
ans=Σdp[now][time]*h[now]
在time时间,我游完now,这可以当作所有事件,对应事件的权值就是我刚游完的那个设施的价值,所以这样求期望是可行的
F、子串
分析:
直接kmp
2017CodeM初赛B场的更多相关文章
- 2017CodeM初赛A场
A.最长树链(loj6159) 分析: 对于每个质因数,取出所有是它倍数的点组成一个树,然后找最长路径 每个数操作次数是其质因数的个数 所以总的复杂度不超过O(nlogA) B.二分图染色(loj61 ...
- 2018 计算之道初赛第二场 阿里巴巴的手机代理商(困难)(反向可持久化Trie)
阿里巴巴的手机代理商(困难) 阿里巴巴的手机代理商正在研究 infra 输入法的新功能.他们需要分析单词频率以改进用户输入法的体验.于是需要你在系统内核里面写一个 API. API 有如下功能: 添加 ...
- # 「银联初赛第一场」自学图论的码队弟弟(dfs找环+巧解n个二元一次方程)
「银联初赛第一场」自学图论的码队弟弟(dfs找环+巧解n个二元一次方程) 题链 题意:n条边n个节点的连通图,边权为两个节点的权值之和,没有「自环」或「重边」,给出的图中有且只有一个包括奇数个结点的环 ...
- 动态规划-hdoj-4832-百度之星2014初赛第二场
Chess Problem Description 小度和小良近期又迷上了下棋.棋盘一共同拥有N行M列,我们能够把左上角的格子定为(1,1),右下角的格子定为(N,M).在他们的规则中,"王 ...
- 计蒜之道 初赛第一场B 阿里天池的新任务(简单)
阿里“天池”竞赛平台近日推出了一个新的挑战任务:对于给定的一串 DNA 碱基序列 tt,判断它在另一个根据规则生成的 DNA 碱基序列 ss 中出现了多少次. 首先,定义一个序列 ww: \displ ...
- 2019 计蒜之道 初赛 第二场 B. 百度AI小课堂-上升子序列(简单) ( 实现)
题目背景 91029102 年 99 月 22 日,百度在 X 市 XX 中学举办的第一场 AI 知识小课堂大获好评!同学们对矩阵的掌握非常棒. 今天的 AI 知识小课堂的第二场开讲啦.本场 AI ...
- 2019 计蒜之道 初赛 第二场 A 百度AI小课堂-矩阵问题 ( 等差数列求和公式)
题目背景 91029102 年 99 月 11 日,百度在 X 市 XX 中学举办了一场 AI 知识小课堂,本场 AI 知识小课堂老师教授了一些矩阵的相关知识,因为矩阵在 AI 人工智能中也有相当的 ...
- 2014百度之星初赛第二场hdu 4831 Scenic Popularity
Scenic Popularity Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 【AStar】初赛第一场
1. All X1.1 基本思路k和c的范围都不大,因此可以考虑迭代找循环节,然后求余数,判定是否相等.这题还是挺简单的.1.2 代码 /* 5690 */ #include <iostream ...
随机推荐
- Javaweb学习笔记4—Reuest&Response
今天来讲javaweb的第四段学习. Request和Response还是比较重要的 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣 ...
- Redis学习笔记(五)散列进阶
HEXISTS key_name key(检查键key是否存在) HKEYS key_name(获得散列的所有键) HVALS key_name(获得散列的所有值) HINCRBY key_name ...
- [转载]ant和maven的区别
Ant是软件构建工具,Maven的定位是软件项目管理和理解工具.Maven除了具备Ant的功能外,还增加了以下主要的功能: 1)使用Project Object Model来对软件项目管理: 2)内置 ...
- Python 学习日志9月21日
9月21日 周四 今天是个特殊的日子吗,总感觉9月21这个日子听着怪怪的. 今天早晨看<Head First HTML and CSS>第13章节“表格和更多列表”,内容不多,看完并做了详 ...
- Android(java)学习笔记163:开发一个多界面的应用程序之界面间数据传递
1.界面跳转的数据传递 (1)intent.setData() --> intent.getData(): 传递的数据比较简单,一般是文本类型的数据String:倘若我们传递的数据比较复 ...
- js 逻辑运算符、等号运算符
1 逻辑运算符 逻辑运算只有2个结果,一个为true,一个为false. 1.且&& ★ 两个表达式为true的时候,结果为true. ------------------------ ...
- uva1628 Pizza Delivery
fixing great wall 的变形dp(i,j,k,p)不考虑i-j的客人,还要送k个人,目前位置在p起点i和总数量k都要枚举dp(i,j,k,p)=max(dp(m,j,k-1,p)+val ...
- vue 数组对接字符串 传值时候,join(',') 一下 watch
vue 数组对接字符串 传值时候,join(',') 一下 watch watch: { 'tFill.otherDescArr': function (newVal, oldVal) { this. ...
- 解决WampServer窗口界面乱码问题
软件版本:WampServer 3.1.4 问题描述:Wamp安装完成.点击图标,发现导航界面乱码,也可能使用中没遇到这种问题.如下: 用记事本打开 wampmanager.ini 和 wampman ...
- 1.入手树莓派之linux环境搭建
最近刚刚买了一款 树莓派3代B型 raspberrypi 板载蓝牙和WIFI 英国版本,没玩过,觉得很好奇,生怕记性不好哈,把自己玩的过程记录一下,以备不时之需: 需要材料: 1) 树莓派: 2)sd ...