2019 China Collegiate Programming Contest Qinhuangdao Onsite

(模拟赛)勉强拿了个铜牌,以为还能写结果还是太年轻了。

D. Decimal

​ 题意:给定n,判断1/n是否是有限位数的数

​ 题解:显然,只有当n是2和5的倍数才是有限位数的。

F. Forest Program

​ 题意:给一个仙人掌图(每条边都只在一个环内),要去掉一些边使得所有连接的部分都是树

​ 题解:对于一个环,必须去掉一条边,其他随意;对于非环内的边,去不去掉都行。

I. Invoker

​ 题意:。。。太长了不想写链接

​ 题解:一个dp。\(f[i][j]\)表示处理到第i个招式,使用第j种表示方法,显然

\[f[i][j]=min(f[i-1][1],f[i-1][2],...,f[i-1][k]) \]

​ 显然可以再压一维。

J. MUV LUV EXTRA

​ 题意:给出小数的前几位,找出最可靠的循环节,其中可靠度的值等于\(a*p-b*l\),a,b为给定参数,p为循环节长度,l为循环节在已知小数出现总长度。

​ 题解:这里有一个很重要的贪心:给出小数的前几位的最后一位显然一定是循环节中的一部分。因此我们可以反向从最后一位开始枚举循环节长度,用kmp来匹配最长循环节长度。(我是云玩家,代码队友写的)

A. Angle Beats

​ 题意:给出2D平面上的n个已知点,现在q组询问,每组给出一个点,问包括这个点的直角三角形有多少个。

​ 题解:可以分为给出点为直角顶点和非直角顶点两种方案。直角顶点可以通过双指针来寻找两条垂直边,非直角顶点可以把向量用极角排序后二分获得。用向量点乘等于零来实现。

​ 最无语的就是这题告诉我一件事,不要用map存double,否则精度问题给拿捏的死死的。

posted @ 2021-11-16 19:39  云云云玩家  阅读(73)  评论(0)    收藏  举报