2017.11.1~11.2模拟题

2017.11.1

T1文件改名

这道题是一道比较简单的题目,可以把名字视为点,用深搜找环,输出点数+环数-自环数即可找到答案,可惜考试的时候字符串hash写炸了,只拿了70分的数字分。

T2怪物猎人

这道题难处理的点就是怪物死了之后会给其他怪物加生命值和攻击力,不能简单的将两者乘积排序依次做(这样能拿到d=0的分)。可以用dp做,如果用f[i]表示消灭i个怪物的最小生命值花费,写出状态转移方程就可以发现可以用单调性来做,只要按照a+b的生命值从大到小排序,外层循环枚举怪物就可以了。

T3魔术帽游戏

这题考试的时候因为浪费太多时间在字符串hash上,最后只有10分钟写了一个24分的代码。(暴力瞎搞)考完后发现这道题骗分还是比较好骗的。7~9的点xj=lj=1,那么我们只要预处理出所有rj的答案,就可以O(1)的查询答案了。10~13的点n=2 也就是说只有两个帽子,那么他的操作也只有换和不换,用个sum数组也能预处理出来 然后O(1)的查询答案。
对于14~19的点因为n很小,也可以玄学瞎搞搞出来。
下面给出标准算法:

线段树的做法似乎没有什么前途,我们换一种思路。

建立一个 (m+1)n(m+1)n 个结点的图,每个结点为一个二元组 (i,j)(i,j),1≤i≤m+11≤i≤m+1,1≤j≤n1≤j≤n,表示时刻 ii 魔术球在魔术帽 jj 中。对于每个操作 ii,连边 (i,ai)→(i+1,bi)(i,ai)→(i+1,bi)、(i,bi)→(i+1,ai)(i,bi)→(i+1,ai) 以及 (i,j)→(i+1,j)(i,j)→(i+1,j)(j∉{ai,bi}j∉{ai,bi}),这样每个结点的出度不超过 11。

那么每局游戏 ii 的答案就是从点 (li,xi)(li,xi) 出发一直走,走到第一个满足 y>riy>ri 的点 (y,z)(y,z) 时 zz 的值。

2017.11.2

这天的三道题比较简单,被称为NOIP信心题。。

T1合并集合

这道题和合并石子很像,数据量很小,n<=300,所以只要预处理出两个点之间的元素有多少,暴力dp就可以得出答案了。O(n^3)(因为是环,所以可以倍长 然后玄学操作就行了。)

T2带权平均数之和

这道题暴力O(n^2)能拿到50分,同时另30%的数据W【i】=i的分数也很好拿 只要预处理一下就行了,如果你不要梦想的话 到这就好了,但是这道题的100分程序也不是特别难想。
思考一下,处理好前缀和之后,每个前缀和在作为右端点的时候会被累加,作为左端点的时候会被不停的减,那么只要再预处理一个W的前缀和数组就可以AC了。然而考试的时候我莫名WA了两个点。

T3最小值

这道题的话一种做法O(n^2)是用dp的思想,对于一种状态f[i]到f[i+1],可以理解为把i+1插入到f[i]的所有状态这样的话能构建出一个神奇的三角形“阵”,因为只有插在最后会使这个值+1,不然就不会有影响,那么传递的时候向下传递是*i,向右下传递是 *1,构建出一个神奇的三角形。然后考试的时候我找到了一个神奇的规律,(瞎搞瞎凑)然后就得到了答案与前一行以及这个三角形阵的第二纵行的关系,然后就过了。(后来我来理解这个方程是纵的一行斜向下扩展展开的迭代式。 本来我的理解是竖的往下扩展直接 *i,斜向下扩展的量是解析式剩余的那一部分,但我发现我并不会清楚证明…..但是代几组值进去好像就是斜向扩展的展开?)

标准做法是概率与期望(惊呆了)
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值