OJ题解
文章平均质量分 73
gmh77
这个作者很懒,什么都没留下…
展开
-
高中OJ3056【NOIP2012模拟10.27】数字
【问题描述】 一个数字被称为好数字当他满足下列条件: 1. 它有2*n个数位,n是正整数(允许有前导0) 2. 构成它的每个数字都在给定的数字集合S中。 3. 它前n位之和与后n位之和相等或者它奇数位之和与偶数位之和相等 例如对于n=2,S={1,2},合法的好数字有1111,1122,1212,1221,2112,2121,2211,222原创 2016-09-09 18:49:24 · 999 阅读 · 0 评论 -
高中OJ3057【NOIP2012模拟10.26】电影票
问题描述 笨笨当了很久的道路调度员,笨笨也开始想体验生活,从生活中发现数学问题,锻炼自己思维。最近《变形金刚3》,《哈利波特7》同步放映,明显是决战雌雄,已知王府井中一共有n人买了《变形金刚3》的票,m人买了《哈利波特7》的票,并且n>=m,并且电影院中现在只有两种票,每次只有一个人买,(共有n+m次),这n+m次组成一个排列,为了保证每一个人买票时,《变形金刚3》票房都不少于《哈利波特原创 2016-09-10 15:39:39 · 693 阅读 · 0 评论 -
高中OJ3059【NOIP2012模拟10.26】雕塑
(依然毫无PS痕迹)这题刚看起来是很吊,并卵后来问了某刘方法,正在理解中。。。正解:先用深搜计算出F数组,F[i]表示放i座雕塑时的方案数。之后计算出1~n的阶乘,记为JC[i]。 /N! (i≥1)JC[N] | \1 (i之后直接计算答案: m ∑F[i]*JC[n-i]*(0-原创 2016-09-10 17:44:03 · 499 阅读 · 0 评论 -
初中OJ1996【2015.8.3普及组模拟赛】WZK旅游(seek)
【题目背景】 WZK喜欢旅游,因此,WZK去过很多很多美丽的地方,西双版纳,大理,九寨沟,黄龙,张家界,天涯海角„„ WZK发现,旅游景点普遍都有山水,山水萦绕,或朦胧悠远,或壮丽秀美,山水交织,总能有一翻绝伦的景致的! 不过WZK也发现,在这个虚假宣传泛滥的年代„„很多地方并不是像宣传画上说的那么漂亮的——比如——我可以把常原创 2016-09-14 19:37:43 · 689 阅读 · 0 评论 -
初中OJ1997【2015.8.3普及组模拟赛】WZK打雪仗(war)
按照国际惯例,不发题目。。。表示这道题我也是想了一段时间后才想出来。假设有这样6个人在打雪仗:这样是一种情况。这样又是一种情况。但是这样就不行。为什么呢?因为第1个人和第5个人相连,导致左右两边只有奇数个人,无法构成方案。所以我们DP的时候,每次就要把左右两边的方案数相乘再加起来就是最后方案。方程:原创 2016-09-14 20:01:50 · 591 阅读 · 0 评论 -
初中OJ1994【普及组模拟赛】小口口矩阵
题目被我吃了。。。这道题直接暴力递归枚举矩阵。。。。当然是会超时的。。。。所以我们要想一下优化。因为枚举的顺序是这样的:所以我们就可以很轻松(?)的发现一个规律:当枚举一个位置时,被改变的只有当前位置,当前位置的上一格和左一格。这时问题来了:右下两格怎么枚举?当我们枚举到红圈处时,可以更新到左边。当我们枚举到蓝圈处时,可以更新到上边。原创 2016-09-14 20:10:51 · 531 阅读 · 0 评论 -
初中OJ1998【2015.8.3普及组模拟赛】饥饿的WZK(hunger)
题目自行脑补。。。表示这就是一道十分水(he)比(he)的DP题。先按照开始区间为第一关键字,结束区间为第二关键字快排。之后直接来一发DP(F[i]表示从1到i的区间能获得的最大结果)在两个区间不重叠的情况下:F[i]=max(F[j]+k) (i=1~n j=1~i-1 k表示第j个区间的长度)初始化:F[i]=第i个区间的长度原创 2016-09-14 20:08:21 · 634 阅读 · 0 评论 -
高中OJ3033【NOIP2012模拟10.17】石子游戏
表示这是一道坑比的博弈题。。。尽管这道题实现起来很简单,但是思考的过程很有意义。先从K=1的情况入手:因为对方每次拿的数量都不能超过你上次拿的数量,所以可以得出必败结果都是2^i思考:可以把N转成二进制,例如N=25则N(2)=11001那么我们每次拿掉最末尾的一个1,则对方不能拿更高层的1。拿完后N=24 (11000)这样我们原创 2016-09-24 13:45:26 · 376 阅读 · 0 评论 -
初中OJ2043【2016.5.21普及组模拟】约数国王(A king)
当初从30分做到50分后用DP做50分然后WA50分最后终于AC(T^T)设F[j,i]表示有i个质因数,有j个因数的最小数。初始化:F[1,i]=2^(i-1) (i=1~n)用F[j,i]去维护F[j+1,i*(k+1)] (i=1~n j=1~trunc(ln(i)/ln(2)) k=1~n div i-1 且 F[i,j]>0)即F[j+1,i*(k+1原创 2016-09-24 16:49:34 · 495 阅读 · 0 评论 -
高中OJ3012. 【NOIP2012模拟10.6】购买
感觉这是这次比赛中最水的一题了(不过话说为毛还爆了0)估计很多人一看到题都认为这是一道用DP或者是什么更WS的方法去做事实证明:你们想太多了。。。先举个栗子:假设有ABCD四个数,且这四个数的大小是这样的:A则我们可以很神奇的得出这样一个式子:BC+AD也就是说,最小数乘以较小数加上最大数乘以较大数得出的结果是最大的。所以,我们想要得到最原创 2016-10-05 15:54:45 · 374 阅读 · 0 评论 -
高中OJ3046. 【NOIP2012模拟10.23】游戏
这道题就是一道简单(?)的DP为了方便计算,一开始先把A和B序列里的所有数字都减1,这样就不用计算个数,方便了以后的计算。之后我们多测试几组数据,可以发现最优的结果不是一次性取一大堆数,而是一个一个数去取。SO我们设F[I,J]表示A序列还剩前I个数,B序列还剩前J个数。根据上面的结论我们可以列出这样一个方程: / F[I+1,J]原创 2016-10-05 21:03:05 · 540 阅读 · 0 评论 -
高中OJ3013. 【NOIP2012模拟10.6】填充棋盘
这道题的最终结果其实不难,难点在于如何退出这个结果。因为题目说每一个2*2的方格里的字母都不相同,所以可以得出N和M必定是大于等于2的。字母不太好写,所以用1~4来代替。2*2的方格中有24种不同的方案(具体可以自己去试一下)我们假设把一个2*2的方格像右延长一格:再把它先按照2*2填上数字(字母)因为红色格子左边的两个格子填上了2和3,所以原创 2016-10-05 16:42:21 · 757 阅读 · 1 评论 -
高中OJ1771. 【NOIP动态规划专题】烽火传递
题目大意:在一个长度为N的序列当中选出任意个数,使得其中任意连续M个数中至少有一个数被选,求选出数之和的最小值。题目分析:显而易见的DP。设F[i]表示序列中从1~i位置满足条件且第i个位置必选的最小值(初始化自己想)先假设M=3 0表示未选 1表示选0 1 0 0 1 0 0的情况也是可以的。所以可以得出方程:F[i]=F[i-j]+a[i]原创 2016-11-09 19:02:45 · 994 阅读 · 0 评论 -
高中OJ3783. 【NOIP2014模拟8.19】签到题
题目大意:其实这题描述不清楚,正确的应该是这样:有N个数,求出一个连续的序列,序列之和÷N没有余数。题目分析:因为它是求连续的一个序列,所以可以用前缀和前缀和就不多说了。时间复杂度:O(n^2)重点(呵呵):找到满足要求的序列后一定要BREAK!!!!时间复杂度:大概O(200n)左右(不要质疑,数据真的很水)原创 2016-11-09 19:30:22 · 605 阅读 · 0 评论 -
高中OJ3784. 【NOIP2014模拟8.19】邮局选址
题目大意:有N个村庄,其中要在不同的村庄里建M个邮局,求每个村庄到最近邮局的最小距离。有如下4种情况:①该村庄有邮局 距离为0②该村庄在第一个邮局之前 距离为到第一个邮局的距离③该村庄在两个邮局之间 距离为到最近村庄的距离④该村庄在最后的邮局之后 距离为到最后的邮局的距离题目分析:这是道稍难的DP,原创 2016-11-09 20:25:49 · 917 阅读 · 0 评论 -
3785. 【NOIP2014模拟8.19】分数
题目分析:先把所有的分数化成最简,最后把分母分解质因数,把相同的质因数乘起来,最后化成16进制就行了。当然,如果只是这样的话也不可能放在C组的第四题。。。因为最后结果可能会很大,所以全部都要用高精度。刚开始先用线筛(不懂就BDFS)求出2~110000中的质数(一共有10453个),之后不停的分解质因数就可以了。因为数据会很大,所以有可能会出现一个很大的质数。所原创 2016-11-09 20:37:53 · 350 阅读 · 0 评论 -
高中OJ 3792. 【NOIP2014模拟8.20】分队问题
这题刚开始是想用贪心,结果因为数组少打了1个0所以少了40分。。。先说说贪心的思想。因为组数要尽量分多,所以我们可以从大到小排序,就是把大的数放在一堆组成一队,剩下的较小数就可以组成更多的队伍。反例:1 2 4 5 5 5 5 5如果我们从右往左找,把5个5分成一队,之后就不足4人,所以无法成立。所以正解应该是这样:(1 2) (4 5 5 5 5 5)原创 2016-10-29 15:32:02 · 501 阅读 · 0 评论 -
高中OJ 3794. 【NOIP2014模拟8.20】高级打字机
T3题解:100分(总分200):根据数据范围可以知道,100%的数据撤销操作不会撤掉之前的撤销操作。所以撤销操作能撤掉的只有插入操作。而插入操作每次都是在最末尾,所以每次把后X个字母删掉就可以了。 180分:设a[i]表示第i次出现的结果,每产生一个新的结果后,就把i的值增加1,把新出现的结果放到a[i]中。从数据得知,UNDO操作是可以撤掉UNDO操作的。所以我们不原创 2016-10-29 16:30:14 · 635 阅读 · 0 评论 -
高中OJ 3793. 【NOIP2014模拟8.20】数字对
这道题刚开始做时一脸懵逼,知道正解后发现竟是如此之水。。。60分:BFS枚举,设D[i,1]表示当前的a,D[i,2]表示当前的b,D[i,3]表示当前进行了D[i,3]次操作。之后再加优化:①:如果当前算出的a或b超过了N,就已经不成立了。②:如果当前进行的操作已经超过了之前算出的最小值,无论对错都可以不用继续进行了。BFS因为数据量过于庞大,所以要么数组爆炸要么原创 2016-10-29 16:56:08 · 331 阅读 · 0 评论 -
初中OJ1573. 【提高】下棋
题目大意:有N个不相同的数,每个数可以和一个比自己大的数组成一对,也可以和一个比自己小的数组成一对。求当组成K对数之后的每队数差之和的最小值。 方法1: 递归枚举每队数,取最小值。 预计得分:20 方法2: DP,具体自行脑补 预计得分:原创 2016-12-10 15:49:05 · 314 阅读 · 0 评论 -
初中OJ1572. 【提高】分发糖果
题目大意不讲 方法1: 暴力模拟,一个个加 预计得分:30左右然后优化一下,就变成了如下: 方法2:模拟,每次一段段跳 预计得分:80然后我们在枚举一下N,就会发现一个很神奇的规律: 当N为2^x时(x为正整数),答案为YES,否则为NO。 方法3: 判断每个读入的数是否为2^x。原创 2016-12-10 15:42:04 · 343 阅读 · 0 评论 -
初中OJ1574. 【提高】X-因子链
题目大意:给出一个数X,求一个最长的序列Xi,其中X(i+1)要能整除Xi,求最长符合条件的序列长度和达到该长度的序列。第一步:要想求出的序列长度最长,那么每一项都要尽量最大。 例如样例的100,能被100整除的最大数是50,之后是25、5、1。 不难看出,其实这就是分解质因数的过程。 把题目修改一下:给出一个数X,求X的质因数个数。第二步:100=2*2*5*5 =2*5*2*原创 2016-12-10 16:28:20 · 449 阅读 · 0 评论 -
初中OJ1575. 【提高】二叉树
题目大意:给出一颗二叉树的前序遍历和后续遍历,求符合要求的二叉树的个数。根据二叉树的性质,我们知道通过前序遍历和中序遍历,或后序遍历和中序遍历可以求出整棵唯一的二叉树。但是如果不知道中序遍历,可能就会有多颗符合要求的二叉树。 方法1: 暴力构造二叉树,在判断是否符合要求。 预计得分:10左右 方法2: 直接输出样例 得分:30 方法3(正解1): 根据前序遍历和原创 2016-12-10 17:05:40 · 333 阅读 · 0 评论 -
初中OJ2105【NOIP2016普及组复赛】魔法阵
这是这次NOIP比赛中的第四题,感觉有些难度。题目大意:有四个数A、B、C、D,满足以下条件:①A②(B-A)=2(D-C)③3(B-A)先说说80分的方法。设CD之间的距离为i,则AB为2i,BC为6i+k (k>0)所以,我们可以先把同一数值的数用一个数组存个数,然后枚举i、A和C。重点是如何统计方案数。设Wi表示数值为i的数出现原创 2016-11-26 08:39:16 · 1878 阅读 · 0 评论 -
初中OJ1836. 【NOIP2009TG】最优贸易
正解:假设要在一个地方卖出水晶球,那么要购买水晶球的价格尽量小才能卖出更高的价格。 设一个数组F,F[i]表示从1~i能携带的最小价格的水晶球。 先用一遍SPFA算出从节点1到每个节点携带水晶球的最小价格。 但是有可能会出现这样一种情况: 如果按照每一个节点的价格直接去减F[i],那么得出节点2卖得的价格是最优的,为99。 但是很明显我们可以看出,从节点2根本到不了终点。所以我们可以想原创 2016-12-21 19:58:15 · 359 阅读 · 0 评论 -
初中OJ1834. 【NOIP2009TG】潜伏者
题目分析: ① 两个字符串中必须出现全部的26个字母。 ② 有可能会出现重复多次的一对字母。 ③ 每一个原字母所对应的新字母都必须是独立的。 例如: MN和AA两个字符串就是不成立的,因为M和N都对应了A。 正解: 设两个数组A和B,表示当前字母对应的另一个字母。 之后判断一下重复,如果没有重复就把字符串转换成新的字符串再输出。难度:★原创 2016-12-19 19:22:14 · 337 阅读 · 0 评论 -
初中OJ1835. 【NOIP2009TG】Hankson 的趣味题
题目分析:给出4个数,设数X满足gcd(x,a0)=a1且lcm(x,b0)=b1,求X的个数。正解:根据b1是b0和x的最小公倍数,所以可以得知,b1一定能整除x。 所以我们可以把b1分解质因数,之后通过枚举质因数来构造x。 之后用快拍把算出的x排序,去重并判断是否符合要求。难度:★★☆原创 2016-12-19 20:22:20 · 419 阅读 · 0 评论 -
高中OJ3810. 【USACO2014 3月】Watering the Fields
题目大意:有N个点,每两个点之间的费用为(xi-xj)^2+(yi-yj)^2,其中费用小于C的路径不能建造,求再每两个点都能相互到达时的最小建造费用。正解:很明显看出这是一道最小生成树。 因为N≤2000,如果用Prim会超时,所以我们用Kruskal 算法。 因为费用小于C的路径不能走,所以再输入时处理一下就可以了。提示:克鲁斯卡尔算法要用并查集优化,像这样: 优化前:可以再递归回来时把原创 2017-01-14 15:27:29 · 480 阅读 · 0 评论 -
高中OJ3811. 【USACO2014 3月】The Lazy Cow
题目大意:有N*N个数,每一个格子的值就是其它能在K步以内走到当前格子的格子之和。 求最大的值。正解:很容易想到n^4的方法,但是因为N≤400,所以尝试用N^3过。 两重循环枚举点,再来一重从上往下枚举行。 接下来用个前缀和计算值,求最大值。原创 2017-01-14 15:51:28 · 433 阅读 · 0 评论 -
高中OJ3812. 【USACO2014 3月】Mooo Moo
题目大意:有N个草地,B种牛,其中每个草地的声音会从左传到右,求最少有多少头牛。正解:因为每个草地的音量值最大只有100000,所以可以先预处理出不同声音需要最少的牛的数量。 设F[i]表示音量值为i时最少需要牛数。 当F[i]>0时,F[i+v[j]]=min(f[i+v[j]],f[i]+1) 之后根据题目算出每个草地的音量值,代入计算。原创 2017-01-14 16:16:54 · 404 阅读 · 0 评论 -
高中OJ3502. 【NOIP2013模拟11.4B组】方格游戏(game)
这题不算很难。 通过找规律不难发现,设F[i]表示走i步时的方案数。 F[0]=1 F[1]=3 F[i]=F[i-1]*2+F[i-2] (i>1) 因为答案较大,所以要用高精度计算。原创 2017-02-10 20:45:09 · 426 阅读 · 0 评论 -
高中OJ3503. 【NOIP2013模拟11.4B组】粉刷(paint)
神奇的水法。。 因为要刷的次数最少,所以每一次刷掉的污点就要尽量最多。 每次刷掉最大污点数区域,这样过不去样例2。。 其实可以发现样例2全部竖着刷就可以最少。 所以再计算出全部横着刷和全部竖着刷的最少次数,在这三个答案中取一个最小值。。。 然后。。AC。。原创 2017-02-10 20:52:28 · 287 阅读 · 0 评论 -
初中OJ1837. 【NOIP2009TG】靶形数独
题目分析: 给你一个未完成的数独,数独内的每个格子都有一个分值,数独的分值就是每个格子乘以当前的分值的和。求能获得的最大分值。正解:这题一眼看下去就是一道回溯。只不过如果按照普通的回溯来做,肯定会超时。 以下为思考过程:既然正方向搜会超时,那我就反方向来搜索。 于是我试了四种方向: 结果发现,不管怎么搜都是会超时。。。 BUT—— 机智的我发现了,每次超时的数据都不同!!!原创 2016-12-19 20:07:10 · 318 阅读 · 0 评论 -
高中OJ3504. 【NOIP2013模拟11.4B组】运算符(calc)
这道题有些难度。 先列个表来看一看。 很明显,这可以用递推实现。 但是由于答案过大,而且不好求约数,所以我们要把这个方法优化。 计算一个数约数个数公式: N=a1^p1*a2^p2*a3^p3…ax^px(a为其质因子) 约数个数:(p1+1)(p2+1)(p3+1)…(px+1) 通过这个公式可以知道,我们没有必要计算出最终结果是多少。只需要计算出最终的质因子个数的情况就可以了。原创 2017-02-10 21:14:01 · 373 阅读 · 0 评论 -
树状数组(oj1978 & 1979)
树状数组的使用方法原创 2017-06-16 18:50:17 · 266 阅读 · 0 评论 -
网络流Sap+Gap(【USACO题库】4.2.1 Drainage Ditches草地排水 )
网络流的使用方法原创 2017-06-17 17:19:56 · 620 阅读 · 0 评论 -
单调队列(oj1771)
单调队列的使用方法原创 2017-06-23 20:51:03 · 264 阅读 · 0 评论 -
高中OJ5231. 【NOIP2017模拟A组模拟8.5】序列问题
内网链接 外网链接少见的思维难题。30%N^2暴力解决。60%各种神奇乱搞。100%分治。 假设我们分到的区间为[l,r],中点为mid,可以考虑计算l~mid和mid+1~r的方案,加上穿过mid和mid+1的方案,就是整个区间的方案数。枚举左端点i,如果直接枚举右端点就又是N^2。 所以不能直接枚举。左边=l~mid 右边=mid+1~r设u、v,分别表示右边第一个比左边最大值大的位置,原创 2017-08-08 16:23:48 · 404 阅读 · 0 评论 -
高中OJ3733. 【Usaco2014Open银组】照相 (非线段树算法)
这题可以用线段树去做,但是比较麻烦。根据题目可以知道,当一个序列可以成立时,该序列长度必须为偶数且该序列中W的个数要不小于S的个数。 ∵总W个数-左W个数-右W个数≥总S个数-左S个数-右S个数 ∴总差-左差-右差≥0 ∴总差-右差≥左差 右边的差很好求,只要从后往前累加一个前缀和。 为了让结果最大,所以就要尽量往左扩展。 根据上面的公式,设sum[i]表示从左第1位开始累加前缀和小于等原创 2017-03-22 19:45:57 · 504 阅读 · 0 评论 -
高中OJ3735. 【Usaco2014Open银组】里程计
无原创 2017-03-22 18:26:07 · 547 阅读 · 0 评论