2020.05.23【NOIP普及组】模拟赛C组34 总结

2020.05.232020.05.23NOIPNOIP普及组】模拟赛CC3434 总结

这次比赛我考了330330分,第55名,还可以。

第一题:readread

题目

2020.05.23【NOIP普及组】模拟赛C组34 总结

解题方法

这道题目的解题方法是直接模拟。
题目要求出mini=1nj=1i86400ajt\begin{aligned}\min_{i=1}^n{\sum_{j=1}^{i}{86400-a_j}\geq t}\end{aligned}
我们直接每一次减去86400aj86400-a_j就行了。
或者可以设sis_i表示j=1i86400aj\begin{aligned}\sum_{j=1}^{i}{86400-a_j}\end{aligned},则si=si1+86400ais_i=s_{i-1}+86400-a_isi=86400ij=1iaj\begin{aligned}s_i=86400i-\sum_{j=1}^{i}{a_j}\end{aligned}
其中j=1iaj\begin{aligned}\sum_{j=1}^{i}{a_j}\end{aligned}可以用前缀和维护。

得分情况

比赛时满分。

第二题:gungun

题目

2020.05.23【NOIP普及组】模拟赛C组34 总结
2020.05.23【NOIP普及组】模拟赛C组34 总结

解题方法

这道题目的解题方法是斜率和贪心。
我们知道一个直线的斜率为yiyjxixj\frac{y_i-y_j}{x_i-x_j},这里我们用aia_i表示斜率,ai=yiy0xix0a_i=\frac{y_i-y_0}{x_i-x_0}
其实在同一条直线的所有*可以直接消灭。
那么每一次我们就对aa进行排序并找到有多少个不同的斜率即可。
不懂斜率的可以看这里

得分情况

比赛时3030分。
改题后满分。

第三题:peanutspeanuts

题目

2020.05.23【NOIP普及组】模拟赛C组34 总结
2020.05.23【NOIP普及组】模拟赛C组34 总结

解题方法

这道题的解题方法是贪心。

贪心策略

每一次我们选择数量大的进行采摘,然后看一下是否可以摘,如果可以就摘掉,不可以则不摘。

具体实现

把所有花生存到一个数组里边,然后以数量为关键字排序,这里设aia_i为行,bib_i为列,cic_i为数量。
然后用一个ss数组存最少时间,则
si={ai+1i=1si1+aiai1+bibi1+1i>1s_i=\begin{cases} a_i+1&i=1\\ s_{i-1}+|a_i-{a_{i-1}}|+|b_i-b_{i-1}|+1&i>1 \end{cases}
接着我们看一下si+ais_i+a_i(加上回去的时间)是否小于等于kk,如果小于等于,则答案加上数量,否则不加。

得分情况

比赛时满分。

第四题:lovelove

题目

2020.05.23【NOIP普及组】模拟赛C组34 总结
2020.05.23【NOIP普及组】模拟赛C组34 总结
2020.05.23【NOIP普及组】模拟赛C组34 总结

解题方法

这道题的方法是动态规划。
fi,jf_{i,j}表示一种颜色用了ii,另一种颜色用了jj的方案。

fi,j=fi1,j+fi1,j1×jf_{i,j}=f_{i-1,j}+f_{i-1,j-1}\times j
初始化f0,i=1,fi,0=1f_{0,i}=1,f_{i,0}=1
然后我们可以发现答案为fa,b×fb,c×fa,cf_{a,b}\times f_{b,c}\times f_{a,c}
注意要开longlonglong\:long,然后要边乘边模。

得分情况

比赛时满分。