
题解
文章平均质量分 66
SSH_oj
这个作者很懒,什么都没留下…
展开
-
【题解】Zoj3547 The Boss on Mars
这道题题意很简单,就是每次给你一个 n,让你求所有小于 n 且与 n 互质的数的四次方之和。好吧,这题看着好像不是很难耶。。。然后我就看到了 n<=1088^8,t<=100。。。怎么还是多组数据啊QwQ那这道题该怎么解呢?首先肯定有很多同学想到了一个东西:分解质因数。但是看上去好像又没什么卵用,因为当 n 是一个质数的时候,小于它的所有数都与它互质,你的复杂度一点没变。那...原创 2018-08-22 21:47:25 · 220 阅读 · 0 评论 -
【题解】洛谷2081 [NOI2012]迷失游乐园
题外话这道题很久之前听教练讲过,当时觉得太麻烦就没写,后来拾起来的时候就发现自己不会了 QwQ (可能是因为我太菜了吧) ,于是怒肝了两个下午把它弄了出来,中间还出了一次大锅,所以留个博客以作纪念吧题面题面异常简单,就是求一颗基环树上的任意一点往某个方向走到头的路径期望长度。这个一看就是要用某种类似treeDPtreeDPtreeDP 的方法处理的(但是我一开始没看出来),所以我们可以先...原创 2019-02-09 14:00:28 · 433 阅读 · 0 评论 -
【题解】洛谷3285方伯伯的OJ (SCOI2014)
不想写 SplaySplaySplay 的请看这里!首先,先对楼上那位用线段树解决此题的dalao l_h_j致敬——因为这个思路我们是同时想到的,但他只用了一次就搞定了,我却写了足足两个晚上(最后还因为把 202020 写成 272727 调了一个小时)。。。接下来就是题解了:(华丽的分割线)在看这个做法之前,请各位神犇先略微参考一下2017年 NOIPNOIPNOIP 的 day2T3...原创 2018-11-10 16:33:06 · 218 阅读 · 0 评论 -
【题解】洛谷1314聪明的质监员(NOIP2011)
说实话,这题其实应该放到普及+/提高。思路其实就是简单的快速查找(其实你用二分或三分均可)+前缀和。首先我们分析一下题面的式子,其实 YiY_iYi 就等于该区间内大于等于 WWW 的数字数量与大于等于 WWW 的数字之和的乘积。也就是说,我们需要将重量排序后快速查找出一个与 SSS 的答案差距最小的地方。那么,差距最小?肯定第一个想到的就是三分。所以我们的做法就出来了(下面附上思路):s...原创 2018-10-27 22:27:46 · 321 阅读 · 0 评论 -
【题解】洛谷1600天天爱跑步(NOIP2016)
在这里给大家提供一种非常简单的方法。我们先来转化一下题面:题目要求我们求每一个点在某个时间能看到的人数,那我们也可以分别计算每一个人对于他跑步的那条路径上的贡献。那么我们可以发现一个显而易见的事情:这条路经一定由一段上行和一段下行组成。而且有且只有这两条路径。所以我们分开来看这两条路径:如果这条路径是上行的,那么我们设这个人跑了 TTT 秒,起点深度为 depstdep_{st}depst...原创 2018-10-28 17:00:08 · 2432 阅读 · 0 评论 -
【题解】Apio2007 动物园
首先,仔细观察题面就会发现,数据范围略微偏小。然后再仔细的观察一下就会发现一个关键性的问题,不难发现 “每个小朋友只能看到五个动物”。这就应该是本题的切入点。我们先考虑一下如果拆环成链该怎么做。那么很显然,我们用 dp[i][S]dp[i][S]dp[i][S]来表示当前考虑到了第 iii 个位置,[i−4,i][i-4,i][i−4,i] 这段区间的移除情况是 SSS 的最大答案,dp[i...原创 2018-10-19 23:11:33 · 327 阅读 · 0 评论 -
【题解】CF758D Ability To Convert
这道题本来是可以贪心的,贪心思路楼下也讲过了,不过因为部分细节原因,这道题的贪心我打挂了(惨不忍睹连续 WA 10 次),所以这道题我还是可怜地打 dp 去了(神犇勿喷)…言归正传,这道题的区间 dp 思路是这样的:我们先用一个 f[i][j] 表示从第 i 位到第 j 位组成的十进制数是多少。比如对于一个数 1235 来说,f[2][4]=235; 在此基础上,dp[i][j] 表示从第 i...原创 2018-08-24 08:49:02 · 256 阅读 · 0 评论 -
【题解】 CF417A Elimination
这道题真心是特别特别水的,就一 n=2 的完全背包。我们分析一下题意(我当初看了三遍居然把题都没看懂QAQ):就是有两种比赛,第一种花费 c 道题,晋级 n 个人,第二种花费 d 道题,晋级 1 个人;并且可以直接晋级的人数<=k。那么想都不用想,直接转移就行了:dp[i]=min(dp[i],dp[i-n]+c){i>=n}; dp[i]=min(dp[i],dp[i-1]+d...原创 2018-08-24 08:30:15 · 295 阅读 · 0 评论 -
【题解】 CF730J Bottles
这道题的思路其实就是转化题意+01背包。首先 k 应该是最好想的,随便乱搞都能求出来(自己想一想,肯定能想出来)。这里就提醒一句:按照容积从大到小排个序,之后暴力往前倒水就行了。其次,倒来倒去,t 实际上就是移动了的部分的总体积和,t 最小就意味着没有移动的部分体积最大。那么 t 就完全可以用01背包求出来了。dp[i][j] 表示当前选了 i 个瓶子,总容积为 j 时的最小总体积和。那么...原创 2018-08-24 08:28:30 · 421 阅读 · 0 评论 -
【题解】CF490E Restoring Increasing Sequence
这道题其实就是一道代码能力神题,其实说是贪心也没错,不过暴力就能过。说到暴力,大家想到的肯定有很多思路,什么从后往前扫一遍然后逐个判断啊,什么**_蛇皮_**搜索每一个问号啊。。。其实这些方法有很多优化优化说不定就能过,不过我采用的是一种写政治作业时想出来的玄学算法,打了 30 分钟就过了,这个算法具体思路如下:首先,我们先看当前要构造的第 i 个数字的长度和上一个数字的长度。如果 s[...原创 2018-08-24 08:26:18 · 238 阅读 · 0 评论 -
【题解】洛谷 2704炮兵阵地(NOI2001)
这道题是一道状压 dp 的特别毒瘤的基础题(虽然我打了整整一个早上),但是因为每一个炮兵都会影响到之后的两行的放置,所以用状压去压两行,按行处理每一行的情况即可。每一行放置的时候也很简单,只需考虑这个位置前两行有没有放置炮兵以及这个位置是不是山丘即可。那么首先,dp 方程可以很快推出来,dp[L][S][i]表示当前状态是 S,上一行的状态是 L,当前考虑到了第 i 行:dp[L][S][...原创 2018-08-22 21:54:27 · 4807 阅读 · 6 评论 -
【题解】codevs2800 送外卖
这道题就是一个状压 dp 的模板题,用 dp[i][k] 表示当前位置在 i ,当前状态为 k(一个二进制数,1 表示这个地方走过了,0表示没走过) 的最小总路程。首先肯定要先做一遍 floyd,然后进行简单的转移就行了:dp[i][now]=min(dp[i][now],min(dp[j][now],dp[j][now-(1<#include<iostream>#in...原创 2018-08-22 21:53:01 · 417 阅读 · 0 评论 -
【题解】CF1000C Covered Points Count
我在做这道题时,乍一看,诶,这不是一个前缀和扫一遍吗?于是我就非常愉快的打了一遍。。。然后就 GG 了。RE 完之后,我再去看了一遍数据范围 – WOC,为什么 l,r 是 1e18?好吧,那这道题还没有想象中的那么水。。。不过很快大家就能注意到:n 只有 20 万。这说明了什么呢?说明前缀和改变的节点最多只有 40 万个。那么我们把这些节点存起来再一排序,然后扫一遍不就得了?那么我们...原创 2018-08-22 21:50:37 · 358 阅读 · 0 评论 -
【题解】洛谷2831[NOIP2016] 愤怒的小鸟
拿到题目就知道肯定是道状压(n<=18,T<=5),直接能够推出正解复杂度为 O(2n×n)O(2^n\times n )O(2n×n) ,这个想必不用多说了吧。。。我们直接进入正题——我们知道,确定一条抛物线需要三个点(数学部分在后面)。所以朴素的暴力做法是:枚举每一个猪的集合 SSS ,代表这个集合里的猪已经全部被击杀,再枚举两只活着的猪和原点组成一条抛物线。当然我们在这里还...原创 2019-07-22 23:17:31 · 350 阅读 · 0 评论