水题日记
来填一个坑,每天做做。大概就是各处看看有什么简单题,找简单题做做,没实力选手根本做不动题啊!
因为时间太紧,就保持一天一两题的节奏口胡一下吧。。。
### bzoj1047 理想的正方形
看到2<=a,b<=1000,作为酱油选手,应该要有个常识,暴力。
枚举每个矩阵的答案,然后取最值。优化的话就是把每一行压成max\min,再对每一列求max\min。最后再暴力枚举一下就OK了。$o(a^2b^2)$
### bzoj 2470 股票投资
### BJOI2019
### luogu 1134 有点烦的模拟题。。。。暴力的话就是先把0都消掉,然后取模10000000,注意,这里取模是随便取的,不可以取10等更小的,通过模拟发现。这里提供一个解释:把它看成乘法行列式,最后一位是由几个数相乘再相加的,所以必须要有一定位数的数来相乘。然后我这个模数我是看题解的。。。。鬼知道是多少,以后看到就把数据范围来凑整吧。最后再模10就好啦
### luogu 1982 这题有点烦,对普及组萌新不太友善(虽然暴力分有80)。来来来,看到题目,呀,这不是最大连续子段和吗?但右端点不一定在i就是了。所以$ f_{k} = max \sum_{i=l} ^ {r} a_{i}(1 \le l \le r \le k )$。接下来我们再一遍过$d_{k} = max (f[i]+d[i]) (1 \le i \le k-1)$
啊,多水的一道题啊♂ 然而交上去80pts.......冷静一下,我们看数据范围$ n \le 1e6, \left|a_{i} \right| \le 1e9 $ 也就是说$max f_{k} = 1e15$ .通过模拟可得展开的分数的式子,$ d_{k} = \sum_{i=1}^{k-1}f_{i} + f_{1}$ 将$ n \le 1e6$代入,然后易得等差数列再合上等于$1e4+1e19$,而long long大约存的下9e18,明显不够,也就是会爆long long。吓傻了,怎么办嘛?冷静一下,发现只要多膜(rp++)就可以把数变小。但是max不可膜啊?妈妈啊,我就打80分吧。。。。等等再冷静一下。。。如果我们可以边算边取模不就OK了?
再冷静一下,发现无论序列是什么球球,好像答案都是首或者尾?也就是可以边算边取?于是就ac了。优秀的oier是不需要证明的:“发现无论序列是什么球球,好像答案都是首或者尾”。如果序列中有正数,显然易得。若有负数则一定在首部,负正迭代。
### luogu 3956 就是一个简单的dfs,开头写错了还有50pts数据真水。。。。因为每一次更新都有可能拓展最优值,所以不需要判重(我shabby),然后意识到这个后就发现对于当前值,如果大于最小值,那么不可能成为答案的,所以一个简单的剪枝。
### luogu 5016 一道模拟好题。然而我shabby,一开始没想清晰导致调了很久很久。。。。思路应该是酱紫的:把目前的情况先算出来,然后再枚举每一个编号看哪个符合条件。好,那枚举的过程?其实就是比较差值。然后就是一些细节的问题了。
### luogu 5018 暴力。。。。然而我是沙茶。暴力的思想:枚举每个节点,如果符合条件,就算出节点数。
### luogu 1019 暴力: 枚举每一个给定字母开头的单词依次与所有单词接龙,看是否符合条件,直到不能匹配,再统计长度。
### 机器分配: 区间dp,就是枚举一段区间来dp。。。$f_{i,j} = max(f_{i-1,j-k})$记录的话就把每次更新的值记录下来。
### luogu 2858 先从暴力入手发现只要记录每个块的价值就可以推算,于是就列出方程进行dp。
### luogu 1077 看题目想dp系列。。。。设到了第i种摆时总共摆j盆为状态,显然就是前面摆的再枚举可以摆的数目就好了。
### luogu 1880 设$f_{i,j}$为i到j这个区间内的max\min,再枚举一个k,表示堆的分界点。$f_{i,j} = max min(f_{i,k}+f_{k+1,j})+sum[j]-sum[i-1](i \le k \le j-1)$环状的话就加一倍。
### luogu 4170 设$f_{i,j}$为i到j这个区间内的最少的涂色次数。显然$s_{i}!=s_{j},f_{i,j}=min(f_{i,k}+f_{k+1,j});s[i]==s[j],f_{i,j}=min(f_{i+1,j},f_{i,j-1})$。
### luogu 3146 设$f_{i,j}$为i到j这个区间内完全合并的最大值。显然$f_{i,k}==f_{k+1,j}时,f_{i,j}=f_{i,k}+1$。最后再取个max就好了。
### luogu 1063 题意杀。。。。此题跟合并石子差不多。。。$f_{i,j}=max(f_{i,k}+f_{k+1,j}+h_{i}*t_{k}*t_{j})$
### luogu 1098 模拟,思路清晰点就好了,但一些sb bug调了我快4天。。。。。
### luogu 1056 找规律&感性发现点对在同行或列最多的,价值最优。那么就根据这个排序,大的在前,但是答案还要升序输出。。。那就把id再拍一下吧。。。。
### luogu 1309 暴力sort的话复杂度大概是$o(r*2n*log2n)$一看n有1e5,好像过不了(其实在比赛时肯定写了)。于是发现每一次赢的和输的,都是降序的。就是两个集合都是有序的,那么就模拟归并的操作就OK了。。。
### luogu 2671 noip出数学题系列。。。那就长话短说。考虑不等式,显然x、z同奇偶性。那么就可以根据这个性质建个集合,集合中的数都是同颜色的,那么这个集合可以两两对答案贡献。那么我们就把每个数在集合中的贡献算出来。(本来不想写推导的。。)
集合的贡献:$(num_{i_{1}}+num_{i_{2}})*(i_{1}+i_{2}).......(num_{i_{n-1}}+num_{i_{n}})*(i_{n-1}+i_{n})$
单个元素与别的元素的贡献:$(num_{i_{1}}+num_{i_{2}})*(i_{i_{1}}+i_{i_{2}})........$
单个元素的贡献$i1*numi1+i1*numi2+......i1*numi1+i1*numin$
化简$(n-1)i1*numi1+i1*(numi2+....+numin)$
$i1*(\sum _{1} ^{n})+(n-2)i1*numi1$
再把i1换成任意下标就是通式了。。。公式是乱写的。。自己重推一遍吧。思路就是根据不等式发现奇偶性质,然后把颜色和这个性质分为集合,再算集合的贡献,再化简,就是每个数与其他数的贡献,于是再魔改就是自己单独的贡献了。。。(话说在考场上想出来的很强了)
### luogu 2671 对于每一个xn,ans = (sum_{x1}^{xn} a_{xi} )+ 2*max(s_{xi});显然想让ans最大化,那么就必须让第一项最大。但他们的和最大化,有可能会被长度拖后腿怎么办?因此我们再考虑一下弥补长度。显然挤掉第x个,找个从[x+1,n]找个2*s_{xi}+a_{xi}最大的就好了,这样比较一下。
### luogu 1095 $f_{i}$为时刻i的最远距离,显然i只有三种决策:闪现、跑步、回蓝。然后还发现一个性质:能闪就闪。然后又发现回蓝和跑步在一起算很麻烦。我们就把回蓝和跑步先合并在一起先。然后再进行跑步的决策。
$f_{i}=f_{i-1}+60|m>=10;f_{i}=f_{i-1}|m<10$
$f_{i}=max{f_{i-1}+17,f_{i}}|run$
这是dp;还有就是贪心,贪心是根据上面那个性质能闪就闪,以t为回合,比较闪和炮积累下来的距离,魔法值不够就回蓝,够就闪,跑的话就每次+17,直到闪的大于它就交换。然后判断距离什么的。
### luogu 1417 刚开始一看,这不是sb背包吗?然后就想码,但后来一想01背包是按照一定顺序去dp的,但是价值是会随时间的变化的呀!于是冷静下来想,如果第i件食材,它先转移的价值大,应该先选它。
考虑两件物品是x,y,已经过了p单位时间,比较谁先更优。
$a_{x}-(p+c_{x})*b_{x}+a_{y}-(p+c_{x}+c_{y})*b_{y}$
$a_{y}-(p+c_{y})*b_{y}+a_{x}-(p+c_{y}+c_{x})*b_{x}$
然后推一下是当$c_{x}*b_{y}<c_{y}*b_{x}$时先做x的价值更大。
那我们就根据这个式子排个序再愉快的dp就好了。还有开longlong....
### luogu1004 设$f_{i,j,k,d}$为一条线走到i,j;另一条线走到k,d取的最大和。显然$f_{i,j,k,d}$可以取它四个源点,然后加上这两个点的值。但要特判一下,如果是同一个点只用一个值。
### luogu1006 双倍经验?$f_{i,j,k}$为纵坐标之和为i,两条线纵坐标分别是j,k的最大和。和上题差不多,取四个源点加自身点值。但题目说不可以重合,那就让k一直大于j。

浙公网安备 33010602011771号