二模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’组成,X为障碍物’.’为可以通行。求地图上任意两点间的曼哈顿距离之和/空格数的平方 (曼哈顿距离两点对调算不同的)。

一开始想不到怎么解,于是就想拿个50分吧。于是就坑了好久想一个公式啊。经过一番苦解终于解出了n*m的矩阵左上角的点到各点的距离之和为(哈哈哈哈哈)。然而不甘心的我又加了一个四重循环坑坑看后5个点。。。不过最终还是50分

那么怎么AC呢?

可以发现,如果有这样的点阵,那么蓝点到红点都必须绕过一个X,也就是说蓝点到红点的曼哈顿距离比原来多了二,但是到黄点就不用了。

那么如果要解决X的问题,就可以计算出需要加2的点就可以了。可以用x[],y[]数组来记录每列和每行的X(最早的)位置,然后枚举,向两边寻找更小的x[],y[],再用乘法计算增加的数量。

我们可以先假设X是可穿过的,那么就有了

这样子的一段处理代码,可以解决无X的情况。

再配合上面的计算方法就可以解决含X的计算了。

这个可以有代码吧。。。

这一段是处理X的(列上的,行上的自行脑补,稍稍改动一下就好了)

T3.舞蹈课(dancinglessons)

有n个人,每个人有不同价值,每次取相邻的且价值差最小的男女出列,求总数和出列顺序。

打了一个煞笔模拟,每次直接枚举计算最小差然后输出。(总对数直接输出男女中较小的总数)

本来呢,我是想到优先队列来着,但是偏偏想着怎么把不存在的节点取出来而没想到我已经标记过了。。。。QAQ我的天。。。。

那么正解就是优先队列,把每对的差值都算出来存到优先队列里,(要改成小根堆),然后每次取堆顶元素,查看是否标记(直到都没被标记为止),然后在标记,输出,找到左边和右边第一个没被标记的人,查看是否异性,是则入队。如此循环直到队列为空。

时间: 2024-08-03 09:42:29

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

二模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]=

二模07day1解题报告

T1.种树(tree) 有n棵树,各有高度,要求每棵树的高度都小于它到其他树的距离(可能种一起).求砍掉的总高度是多少. Ok,那么可以想到,只要满足每棵树和最近的树满足条件就可以保证和其他树满足了.所以只要按pos排个序,去重,然后一棵一棵砍,就好了. T2.统计方案(count) 有n个数,取出一部分,相乘mod p=c,求方案树. 还是暴力求解.... 正解是非常神的.由于16的数据是可以比较快的解出来的,所以就可以把所有可能达到的值全都算出来. 然后可以用类似的办法求出另一组中的可能积b

二模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两种颜色.给出每个单位的正确颜色,且每个单位只能被刷一次.