首页 > 其他分享 >hzx的CSP-J模拟赛题解

hzx的CSP-J模拟赛题解

时间:2022-08-31 21:59:08浏览次数:67  
标签:lfloor frac 硬币 题解 复杂度 rfloor CSP ans hzx

T1

按题意模拟即可,注意不用考虑闰年。

T2

\(30\%\) 的数据:使用 \(Floyd\) 求出图的全源最短路,时间复杂度 \(O(n^3)\)。

\(50\%\) 的数据:对图上每个点使用 \(Dijkstra\) 求出最短路,时间复杂度 \(O(n^2 \log n)\),需要较优秀的常数才能通过。常数十分优秀的 \(Johnson\) 也可获得此部分分,\(SPFA\) 很难取得此部分的全部分数。

\(100\%\) 的数据:任意 \(u_i\) 和 \(w_i\) 互异,\(1 \le w_i \le n\),且图是无向完全图,所以,必然存在一个 \(w_i\) 为 \(1\) 的点与其他点存在连边,所以只需要比较 \(\operatorname{lcm}(w_u,w_v)\) 和 \(w_u+w_v\) 即可,注意判断两点相同,时间复杂度 \(O(T \log n)\)。

\(\text{extra}\):考虑使用 \(\operatorname{lcm}\) 的性质来求解,可将单次询问复杂度降至 \(O(1)\),如果实现常数较大,请使用较快的读写方式。

T3

\(10\%\) 的数据:可以使用随机化算法或单次检查答案。

\(30\%\) 的数据:对随机化进行约束,或者模拟退火,可以获得这部分分。

\(50\%\) 的数据:可以检查所有可能的答案,时间复杂度 \(O(n^2)\)。

\(100\%\) 的数据:看到最小堆的硬币数量最大容易想到二分答案,同时容易发现答案满足单调性。

但是要考虑二分答案的 check 如何书写。

考虑怎么贪心最优秀。

假设现在二分的答案值为 \(ans\) 。

发现对于最后一堆硬币,它不能从别的堆中获得硬币,所以考虑起来比较容易。为了使前面的硬币数量尽可能的多,它应该在满足自己满足 \(\geq ans\) 的前提下给更多的硬币给前面。这个 \(d\) 为 \(\lfloor\frac{h_n-ans}{3}\rfloor\)。

这样子前面的堆的硬币就增加了,假设这时每一堆硬币的个数为 \(b_i\) 。则 \(b_{n-1}=h_{n-1}+\lfloor\frac{h_n-ans}{3}\rfloor\) 则第 \(n-1\) 堆就应该给前面 \(3\times \lfloor\frac{b_{n-1}-ans}{3} \rfloor\) 个硬币。但是由于只能从前往后进行操作,所以最多给 \(3\times\lfloor\frac{h_{n-1}}{3} \rfloor\) 个硬币。

即对于第 \(i\) 堆取 \(3\times\lfloor\frac{\min\{b_i-ans,a_i\}}{3}\rfloor\) 给前面的硬币。

T4

\(10\%\) 的数据:模拟即可。

\(20\%\) 的数据:同上。

\(50\%\) 的数据:题目可以转化为两人同时从左上角走到右下角,考虑 dp,很容易想到设 \(dp[i][j][k][l]\) 表示第一个人在 \(i,j\) 第二个人在 \(k,l\) 能得到的最大值。时间复杂度 \(O(n^4)\)。

\(100\%\) 的数据:我们考虑减少一维,设 \(dp[i][j][k]\) 表示两个人都走了 \(i\) 步,第一个人在第 \(j\) 行,第二个人在第 \(k\) 行的最大值。此时两人的纵坐标是可以算出来的。

第一个人的列为 \(i-j+1\),第二个是 \(i-k+1\)。

时间复杂度 \(O(n^3)\)。

\(zcy\) 的神仙做法我看不懂。

标签:lfloor,frac,硬币,题解,复杂度,rfloor,CSP,ans,hzx
From: https://www.cnblogs.com/hzx-qwq/p/16644635.html

相关文章

  • P1004 [NOIP2000 提高组] 方格取数 题解
    [NOIP2000提高组]方格取数题目描述设有\(N\timesN\)的方格图\((N\le9)\),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字\(0\)。如下图所示(见样例):......
  • iOS自动化真机测试验证环境过程中常见问题解析
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取本章节主要讲解iOS自动化真机配置以及在iOS真机执行自动化时常见问题与解决方法。真机使......
  • LG3565 [POI2014]HOT-Hotels 题解
    P3565[POI2014]HOT-Hotels给定一棵树,在树上选\(3\)个点,要求两两距离相等,求方案数。原题数据范围\(n\leq5000\),可做到线性,空间\(62.5\text{MB}\)。sub1\(n\leq......
  • vue中render中src不生效问题解决
    在vue文件中写html代码的话可以直接用<imgsrc="xxx"/>但是在render中就不能正常工作。原理度娘上有,那render中要使用的话需要加requirerender<imgsrc={required(......
  • luoguP8085 [COCI2011-2012#4] KRIPTOGRAM 题解(KMP)
    /*给定明文和密文,密文与明文的某个字串格式相同,找出密文出现的最早位置。如:明文aaabcdabc 密文xy ans:3解:容易想到KMP算法。可以发现,密文和对应子串的格式相同......
  • 题解 AT5635 Shortest Path on a Line(线段树优化建图)
    题解AT5635ShortestPathonaLineDescription题目传送门题面翻译有一张有\(N\)个点,编号为\(1-N\)的无向图。做\(M\)次操作,每次操作给出三个正整数\(L,R,......
  • Jenkins 踩坑 | job 创建、参数化、定时构建及时区偏差问题解决
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取1)启动Jenkins后在首页点击"开始创建一个新任务"。2)输入任务名称,选择自由风格,点击“确定”。......
  • 【题解】SP8836 SEQ7
    LinkPrologue大大滴诈骗题/ohDescription定义数列\(\{g(n)\}_{n\in\mathbbN^*}\):\(g(1)=1\),\(g(n)\)为\(n\)在数列中出现的次数。给定\(n\)(\(n\le10^{13}\)),......
  • AtCoder Beginner Contest 266 一句话题解
    AandBsbt,不讲。C垃圾计算几何,问是不是一个凸包,搞份板子交就可以了。D简单dp,令\(f(i,j)\)表示第\(i\)个时间在第\(j\)个位置的最大价值,从上一个时间转移,可以......
  • 2021年 西南石油大学超算与并行计算团队南充校区分队 第二届招新赛题解
      2021年SWPU(南充)超算团队招新赛总体难度并不是很大,大部分题目考察的是基本的编程能力,题目中涉及到了一些并行计算相关的名词和知识,选手在参加比赛的同时,既能够展示......