菠萝🍍の刷题记录2
完全平方数
这道题挺有意思的(★ ω ★)。事情是这样的:拿到题目先分析一波,发现完全平方数的所有质因数的指数全部都是偶数。那么我们就遍历\(1-n\)中的素数看\(n!\)的质因数分解。如果是奇数就减一,偶数就直接塞上去。
但是注意到\(n!\)很大且不能随便取模(不然算出的素数指数全都是错的)。所以我们考虑使用神奇的勒让德公式,进行一些乱搞加一点\(long long\)就过了。这是代码。
我实在是不想做数学。好难好难qwq qwq。我们班的几个大手子在出题玩耍,有实力任性。
寒风农场
这道题推了一段时间,推挂了。直接来看一下怎么做。
第一年的总收成为\(a\),第二年的收成就是\((a \bmod n)+a\)。
\(r_1=\) 第一年的余数 \(=(a \bmod n)\)
第二年收成的余数就是:
第三年收成的余数就是:
最后总结出来就是:
每次操作,\(r=2r\bmod n\)。最后我们需要让\(r=0\)。
所以问题最终转化成有没有一个\(k\)使得:\(2^k*r_1=0(\bmod n)\)
代码实现方面,先去掉所有\(n\)的偶质因子,最后看\(r1\)能不能被\(n\)整除。如果能够整除,那么就输出\(Yes\),如果不能够整除,就输出\(no\)。
其实我原本的思路是把所有的奇质因子全部都枚举出来,现在看来只要把\(n\)不断地除以\(2\)就好了。
我不想写数学了。我打算写一点深广搜休息一下。
01迷宫
这道题还是挺有意思的。开头的时候没有想出来正解,先拼了个暴力拿了\(70pts\)。然后开始想正解,关注到了\(01\),因为前面做过一个\(01\)状态压缩有关的题目,所以往这个方面上稍稍想了想,但是无果。去看了题解发现在同一个连通块内的点都能够互相到达且最终能够到达的点的数量是相同的,马上会做并且切了出来。
封锁阳光大学
这道题也很有意思。我又没想出来。真好。感觉自己的水平还处在一个只能切下位黄的地方,惶恐。
这道题应该这样想:先从随便哪个点开始BFS,注意到一条边的两个端点要么有河蟹要么无河蟹,这让我们想到了可以用\(01\)将顶点标记。我们将开头塞进队列的那个点标记为\(1\),然后遍历它的边:如果它的边的另一端已经被标记了,那么就检查它是否与当前节点的颜色是否相反,如果相反就跳过不管,相同就直接输出\(Impossible\)。如果当还没有被标记,那么我们就将它标记上相反的颜色。最后我们挑一个较少的颜色最为答案即可。
并且注意到图不一定连通,所以我们需要遍历多次。
笔记穿插
必考问题:
贪心,动态规划,二分,树上问题。
选考问题:
图论,数学,数据结构,字符串。
上完课之后就不再练搜索了。先去练练动态规划(严肃)。
横跨左右边界的话去求取某些东西,用分治是个比较好的想法。
sakura!
看起来像是一个很多背包拼在一起的题目。不过现在的问题是我已经忘记了多重背包是怎么做的,我还得去复习一下。
跑去观摩了一下以前写代码,发现似乎是可以用二进制拆分玩耍的,所以马上来试试看(不过这边的二进制拆分和传统意义上的其实不太一样。)其实我觉得这题已经下为绿了,但是洛谷把它评黄我也没什么好说的。
输入好麻烦(晕),遂去翻题解中有没有简便的输入方式。发现题解和我用的是同一种输入,为什么我的错了?
哦。原来我是\(shaber\)。
写到一半发现忘记了滚动数组怎么整的,又跑回采药复习。
最后不小心把\(dp[Time]\)输成了\(dp[n]\),改掉后就过了。
星云
感觉好像。不太难。懒洋洋地打完了\(AC\)了,结果回看代码发现自己已经忘记了当时的逻辑。那我是怎么写代码的?请神上身吗?
我打算练上十道黄色动态规划。我不想弄分治。但是我不写老师就会来找我。
那我还是先写逆序对吧。写完逆序对再学分治。
算了,还是先写动态规划。
投资
稍微写了一点,认为比较简单。但是目前状态相当差,打算先调整一下再重新写一遍。
这道题目如果是实现的比较好会很简单,实现的差就会很炸裂。
注意到题目给出\(a\)是\(1000\)的倍数这个条件,所以可以利用它去优化时间和空间。
\(dp[i]\)的定义为:在有\(i\)的本金的情况下能够获得的最大利益。
\(s\)也是可以直接除以\(1000\)的,因为小于\(1000\)的钱能够直接忽略掉。
扑克牌
混入一道贪心。之前似乎已经做过一次了。不过三倍经验何乐而不为。
惊喜发现三倍经验不了了。原来我的初始经验样例太水导致实际上我的解会\(Tle\)但是\(AC\)了。
惊恐地发现自己实际上并不会这道题目,看完题解,发现都说这是一道简单的贪心,汗流浃背了。我是\(shaber\)。
现在来重新写一下这个题目的做法:(以坑那题为例)第\(i\)个坑挖掉一些土就可以连带第\(i+1\)个坑的一些土,所以我们每次只需要加上\(max(0,a[i+1]-a[i])\)即可,注意到第一个坑无法连带,所以得把它也加上。
赦免战俘
苦哈哈来学分治了。
感觉没有想象中的那么难,就是一个比较关注边界的递归。每次将一个大正方形分成四个板块,左上角的板块全部复制为零,左下、右上、右下继续分……
不过我今天把分治学掉啦~还是认真学的!没有敷衍!夸夸自己!♪(^∇ ^ *)
会议
看到长度为\(1\)就觉得\(bfs\)也能做了。先尝试一下\(bfs\)的做法,再尝试一下\(dp\)的做法好了,一题两吃,好美味Ψ( ̄∀ ̄)Ψ。
唔。从\(bfs\)的角度来说,我觉得这道题有点像医院建设那题。但是我惊讶地发现我已经把它怎么做忘记了,所以又回去看。
发现医院建设和这道题目的数据范围完全不一样,套用似乎并不可行。
^^本文来自博客园,作者:Baltic,转载请注明原文链接呀喵☆*: .。. o(≧▽≦)o .。.:*☆:https://www.cnblogs.com/Baltic/p/21886807
浙公网安备 33010602011771号