首页 > 其他 > 详细

JLOI2015试题大意及部分题解

时间:2015-04-20 15:04:16      阅读:187      评论:0      收藏:0      [点我收藏+]

================Day1===============

T1:求(b+d2)n的整数部分对p取模后的值
其中bmod2=1,dmod4=1,b2d<(b+1)2,n1018

思路:
构造数列an=b?an?1+d?b24?an?2
其中a0=2,a1=b
然后我们求出这个数列的通项公式,得到an=(b+d2)n+(b?d2)n
由于b2d<(b+1)2,因此b?d2是个小数,当n足够大时对答案的影响可以忽略不计(n较小时直接暴力)
因此得到(b+d2)nan
由于bmod2=1,dmod4=1,因此d?b24一定是个正整数,故我们可以利用矩阵乘法来求出这个数列的第n
时间复杂度O(log2n)

TMD我居然看错题了= = 我居然没有看到【整数部分】这四个字= =
当我反应过来这道题的意思时只剩20min了。。。20min。。。
我只能把b100,n5的40分交上去了QwQ
跪95pts的KuribohG……

T2:给定一棵树,每个节点是一座城池,有一个坚固程度hi,和两个参数aivi,其中ai{0,1}
m个骑士,每个骑士有一个初始攻击力xi,从某个节点出发,沿该节点向父亲节点一路攻克
当骑士到达某个节点时,若骑士的攻击力小于城池的坚固程度,骑士将会牺牲在这个城池,否则骑士的攻击力将会发生一个变化并继续攻略这个节点的父亲节点。攻击力变化如下:
若该节点的ai=0,那么骑士的攻击力将会增加vi
若该节点的ai=1,那么骑士的攻击力将会乘上vi
数据保证当ai=1vi>0
注意不同骑士的攻击是相互独立的,你可以认为这m个骑士存在于m条不同的世界线中。
最后输出每个骑士牺牲在了哪座城池(未牺牲输出0),以及每座城池中牺牲了多少骑士

思路:由于攻克一个城池之后骑士之间的攻击力大小关系不变,因此我们可以维护一个可并堆来维护每个城池中的骑士
对于每个节点,首先将所有儿子节点上的可并堆合并过来,然后将<hi的堆顶弹掉,然后搞一搞标记就好了

这题不难啊= = 似乎只有我一个AC的= =?(不知道聂恺辰Rejudge之后的细分= =
18357写了个Splay启发式合并调了3h然后爆零。。。
wyfcyx写了倍增不知道为什么也爆零了。。。
【wyfcyx:等代码发下来之后你们看看我代码就知道怎么回事了】
= =

T3:给定n个武器,每个武器有m个属性和一个价格,如果一个武器的属性可以被其它几个武器线性表示,那么B君就不会购买这个武器,求最多买多少武器以及买最多武器的前提下最少花多少钱
n,m500

思路:
裸拟阵……
维护线性基,将武器按价格排序,从小到大塞进去,如果能塞进去就买,塞不进去就不买

精度问题?卡了10pts
其他人最高30分……
这是裸题啊……

于是230分拿到Rank1= = 第二150。。。

================Day2===============
T1:求有多少个nm列的矩阵满足每个数都在[0,m]之间且ai,j<ai,j+1,ai,j<ai?1,j+1

思路:
把互相有大小关系的点对连上一条有向 容易发现任意一条边都在至少一条长度为m的链上 而取值最多有m+1个,因此任意一条链上最多有一条边两端的点相差2
然后转化一下就变成了这样一坨东西:
技术分享
如图,只能向右和向上走,求从左下角走到右上角不跨越两条对角线的方案数

……很不幸我只会处理nm的情况= = n>m的情况貌似很复杂?
反正搞到了50分= = 暴力60= =

T2:给定一张n1000,m3000的图,每条边有边权,有p10个关键点,每个关键点有一个颜色,现在要求一个边权和最小的生成子图,使同种颜色的关键点互相连通

思路:
fS表示颜色S的所有点构成的最小斯坦纳生成森林(其中S是颜色的集合)
那么我们首先我们先求出每个状态的所有点构成的最小斯坦纳生成树
然后跑DP
fS=max{fS,fT+fS?T|T?S}
复杂度上界似乎是(3p?n+2p?SPFA(n,m))?2p2+3p2?
不过分析一下可以得到更好的上界
如果一种颜色只有一个点 那么这种颜色显然对答案没有贡献
因此极限情况应该是p2种颜色 每种颜色有两个点
那么我们做斯坦纳树的时候 其实复杂度应该是这样的(下面以3p项为例)
3p+C(p2,p2?1)?3p?2+C(p2,p2?2)?3p?4+...+C(p2,0)?30
=10p2
因此最终的复杂度是10p2?n+5p2?SPFA(n,m)+3p2
大概1E的复杂度……尊口怕呀尊口怕

考场上判掉每种颜色都只有一个点的情况,然后无视颜色,斯坦纳树裸跑可以拿到90分
(我写的不好只拿到80分

T3:给定一棵满二叉树,每个点有AB两种状态,你可以任意指定,若某个节点和子树中的某个叶节点同时选择A状态会产生一个贡献,若同时选择B状态会产生另一个贡献,要求选择A状态的人不超过m个,求贡献总和最大
二叉树深度10

题解戳这里
AC爷就是屌

我没写这题= = 没时间了

Day2就这样130滚粗了= = 然后我居然Rank2(3)?
18357凭借第三题的Accepted怒拿Rank1 跪跪跪跪跪

题目、数据、标程和题解应该会下发= =
大家耐心等待吧= =

JLOI2015试题大意及部分题解

原文:http://blog.csdn.net/popoqqq/article/details/45148309

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!