二模07day1解题报告

T1.种树(tree)

有n棵树,各有高度,要求每棵树的高度都小于它到其他树的距离(可能种一起)。求砍掉的总高度是多少。

Ok,那么可以想到,只要满足每棵树和最近的树满足条件就可以保证和其他树满足了。所以只要按pos排个序,去重,然后一棵一棵砍,就好了。

T2.统计方案(count)

有n个数,取出一部分,相乘mod p=c,求方案树。

还是暴力求解。。。。

正解是非常神的。由于16的数据是可以比较快的解出来的,所以就可以把所有可能达到的值全都算出来。

然后可以用类似的办法求出另一组中的可能积b,使得a*b%p=c,而a可以通过逆元得到,再给ans加上保存好的a的方案数。In this way,就可以算出ans了。

但是,要注意c==1的情况是要-1的,而c>=p当然是无解的啦。

逆元的具体求法如下:

need就是所需要的a了。

T3.魔棒(magic)

初始hp的人将受到n次伤害,他有魔棒(冷却时间为cd)可以回复hp(受到一次伤害积累一点能量,每次使用消耗全部能量,回复15*能量点数的hp)。求cd的最大值。

一开始想到的明显是二分答案,判断可行性,然而判断的方法类似dfs肯定会超时。所以只过了50%

正确的判断方法要用到差分约束,将判断过程转化为求最短路判负环的问题。

就这样吧。。

时间: 2024-10-11 06:42:07

二模07day1解题报告的相关文章

二模01day1解题报告

T1.音量调节(changingsounds) 有n个物品的背包(有点不一样,每个物品必须取),给出初始价值,物品价值可正可负(就是两种选择嘛),求可能的最大价值,不可能(<0或>maxsound)输出-1. 很简单的,f[i][j]表示的是到第i首歌时音量为j是否可能. f[i][j]=f[i-1][j-c[i]]||f[i-1][j+c[i]]  (j-c[i]>=0,j+c[i]<=maxsound) 不贴代码啦. T2.旅行(journey) 有n*m的矩阵由’.’和’X’

二模07day2解题报告

T1.采药(medic) 有n个草药,要在m的时间内获得最大价值. 乍一看像是01背包,然而数据只能过50分. 考虑数据范围,t<=10,w<=10,所以只有121种草药.考虑多重背包的二进制优化,先统计每种草药的数量,然后可以拆成1,2,4,8……个草药(捆绑成一棵)然后就01背包 T2.方格取数(matrix) N*m的矩阵,从左上走到右下,走法不解释,将格子内的数相乘,求末尾0最少的个数. 考虑拆分,0的个数和2,5的个数有关,所以分别dp 2,5的最小值再取最小值即可.F[i][j]=

二模11day2解题报告

T1.修改文章(amend) 给出n个单词和一个长度为m的字符串,求改动多少个字符才能使字符串全由单词组成. 要说这道题还真的坑很坑超坑非常坑无敌坑……不过还是先想到了动规.毕竟要修改的前提是要组成的出来.所以转了一下变成用单词来拼凑字符串. Std的方法(为何70分?):f[k1][k2][k3][k4]表示k1k2k3k4可由现有单词经过几步转化而来.其中k1k2k3k4取值从0~27(原来是-1~26,我改了一下,因为c++数组下标不能为负),0表示该位不存在,1表示是任意字母,其他表示A

二模08day1解题报告

T1.高中运动会(match) N个数的最大公约数. gcd不解释. T2.智力游戏 火柴棒等式形如a+b=c,现在给出啊a,b,c求使等式成立的最小的移动次数. 火柴棒表示数字不用解释了吧,在此提醒一点,1的放法有2种哦. 首先处理出每个数字的火柴棒根数(打表*1),然后用num[11][7]的数组表示每个数用到7个位置中的哪几个(打表*2)(P.S.num[11][]是留给另一种1的). 表示如下: 那么怎么判断呢,由于题目明确指出位数和符号不能变所以可以采用枚举的方法,首先计算出a,b,c

二模10day2解题报告

T1.最多因子数(divisors) 给出范围l,r求其中约数和最大的最小整数. 非常深井冰的题目:如果特判加暴力的话分数低的可怜 AC做法要用到分解质因数和线性筛(这俩好写),然而,一个一个枚举还是不可避免的TLE了(最后一个点1,1000000000可怕). 其实考虑一下,如果n为合数且是x的约数,那么n的约数也是x的约数,所以重复计算了很多.要避免这种情况就要改dfs,在计算过程中保存最多的和最多的约数个数.(然而并不是那么好打的) T2.改造二叉树(bst) 给出n个节点的二叉树,以及每

二模11day1解题报告

T1.树的重量(weight) 给出一棵n个叶节点的树(但是有多组数据)以及n个节点之间的距离(最短距离...然而也只有一条路),求树的所有边权之和. 一开始完全没有思路啊...难道爆搜模拟??狂汗... 然而答案就是构造(枚举啦).因为n个都是叶节点,那么假设已经安排好了i-1个节点的位置,那么第i个点的连边肯定是从已有的边中连出来的. 如下:若1,2距离为4个单位,1,3距离为5个单位,那么试构就是这样的: 所以可以从3开始一个一个枚举,每次枚举从已经放好的节点中找到扩展节点,扩展出的边权是

二模02day1解题报告

T1.淘汰赛制 比赛时的淘汰赛制,给出每两个球队比赛的胜率,求出最终胜率最高的队伍. 这题的概率真的很难算啊感觉...一开始打的代码打下来就是用f[i][j]表示i场比赛后第j人还在场的概率.不难看出这是一棵树形的状态树 那么可以看出,每次比较的区间长度是2n,那么可以通过枚举左端点来确定区间.确定区间后,f[i][j]=f[i-1][j]*sum(f[i-1][k]*a[j][k]) T2.种树(trees) 有长度为n的区间,有h个要求,每个要求为[b,e]内至少标记t个数,求最少标记数.

二模08day2解题报告

T1.引爆炸弹(bomb) N个炸弹构成一棵树,引爆一颗叶节点,会一直引爆到根节点.每颗炸弹有一个价值,求引爆k个炸弹的最大价值. 既然是一棵树,那么自然想到dp.所以先树形dp了一遍(由于可能出现多个根节点所以要预处理).然后考虑到一个节点的最大价值的路径极有可能和另一路径重合导致重复,所以引入标记数组v[i],根据贪心思想,排排序取k个就好了. T2.取石子(stone) 一圈石子,各有分数,得分判断如下: 然后可以贪心,证明取一块或两块权值最大的石头是最优的. 现取lzw大神证明如下: 假

二模09day1解题报告

T1.词编码(word) 给出一些原长为n的01串经过变化后的串求原串.原串的特点是:各个1的位置号和%(n+1)==0 变法(只取其一): 改一个0为1 删一个 加一个 不变. 其中2优先考虑位置靠左的,然后优先考虑0 分类讨论加模拟,但是需要优化.现求出sum[i]为i以后的1的个数,ans[i]为i以后的位置和,这样一个后缀和(姑且这么叫)的优化就可以过了. T2.笨笨粉刷匠(draw) 给出n块m个单位长的木板和t次粉刷,有0,1两种颜色.给出每个单位的正确颜色,且每个单位只能被刷一次.