自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 Covering(HDU 6185)(矩阵快速幂)

想规律的时候可以从题目的一些小提示入手,题目给的行固定是4,可以想到递推式应该从4之后才满足某种规律,纸上比划一下就可以发现f[n] = f[n-1] + f[n-2]*5 + f[n-3] - f[n-4]因此直接矩阵快速幂就好了,有个细节需要注意的是f[n]取模之后再减去f[n-4]可能为负数,所以答案要变为正数才行,还有矩阵构造的一些细节在代码注释上。给定一个4*n大小的矩形,将1*2或2*1的矩形往里面填,有多少种能填满的方法。可以看到n很大,肯定不能dp求解。

2024-09-20 14:50:16 190

原创 E - Lunch(博弈论,推sg函数)

典型的博弈论问题,先分析一下每个石子的sg函数,首先很明显的,质数的sg函数值都是1,对于非质数,拿6举例,可以这么分,分为6个1,分为3个2或者分为2个3这三种状态,每种状态的sg值其实就是他们各自的sg值的异或和,比如2 2 2 这个状态,因为sg(2)=1,所以三个2的异或值为1。所以sg(6)=mex{0,1}=2。给了n堆石子(蛋糕),每个石子的个数为ai,可以将石子分为k份,其中ai%k==0,没得分的人算失败,问先手必胜还是必败。如果像这样正常求sg值肯定会超时,考虑别的方法。

2024-08-29 18:56:27 173

原创 F - 见面礼

给定一个 n 个点 n 条边的无向图,你需要求有多少种选择图上的一个点 p 和一条边(x,y) 的方案,使得删去(x,y) 后图变成一棵树,且这棵树以 p 为根时每个节点的儿子个数均不超过 3。如果点的连边数量等于4并且这个点是环内的点,那么会多两种合法方案。如下图所示会多出1-2 选1的方案和1- 3 选1 的方案。如果点的连边数量等于5,那么能选的边的数量就永远只有两个,就是这个点连接环的那两条边。这点看题目给出的样例应该可以理解。所以答案就是合法的边数*合法的点数加上连边==4的点的合法方案。

2024-08-25 20:11:27 201

原创 D - Lucky Coins(概率)

需要注意的是,(1-f[i][j])表示这种硬币在第j轮至少还剩下一个硬币的概率,但是他不能表示仅在第j轮有剩的概率,因为他可能包含了后面轮数还有剩的概率,所以我们要想表示他仅在第j轮有剩的概率还要减去(1-f[i][j+1])给出n种硬币和他们的数量还有他们掷出正面朝上的概率,每一轮会投掷场上的所有硬币,只有正面朝上的硬币会留在场上,反面的硬币会被淘汰。求对于每种硬币只有他们最后能留在场上的概率。对于每种硬币,设他们数量为c,正面朝上的概率为p,那么他们在第n轮就全部淘汰的概率为。

2024-08-12 21:44:53 257

原创 C - Empty Convex Polygons

枚举O点是o(n)时间复杂度,dp枚举i,j是o(n^2)时间复杂度,总时间复杂度是o(n^3)对于每一个点O,dp[i][j]表示以Oi和ij为凸包最后两边所构成凸包面积的最大值。然后因为题目给的都是整数坐标点,那么答案的小数点要么是.0要么是.5,直接输出一位就行。,求一个面积最大的凸多边形,凸多边形中是空的没有其他点。

2024-08-03 09:19:20 126

原创 E - Resistors in Parallel

也就是分子一定是6,那么分母就是12。其实不难看出除1外这些数字都是前几个素数的乘积,并且这个乘积小于等于n,因为毕竟策略数本身就是前n个中数选的。给定n个电阻,第i个电阻的阻值是i,如果i是平方数的倍数,那么阻值是正无穷大。而且可以看出n越大,能选的策略数就越多,最佳电阻就越小,后面更多的策略数对应的最小电阻肯定是小于等于前面策略数能选出的最小电阻的。n最大是10^100,因为答案是素数乘积,其实很快就能乘爆这个数,我们打印前1000个素数肯定够用了,因为涉及到大数运算,用python更加方便。

2024-07-28 00:45:30 329

原创 D - Country Meow

每次找到距离p点的最远点,设p点到当前最远点的距离为len,更新p点,让p点走len的一部分长度逼近当前最远点,然后让这个部分越来越小,比如第一次走len的三分之二,第二次走len的三分之一。以这个点为圆心,这个点到最远点的距离为半径的球就是最小的能够覆盖所有点集的球。也就是找最小覆盖球。考虑一种逼近算法,我们想要从原点坐标p开始逼近,逼近到我们想要的圆心坐标。给定三维坐标中的n个点,求一个点使得其到最远点的距离最小。第三次逼近:最远点是2,走更小一部分长度。第一次逼近:最远点是1,走一部分长度。

2024-07-25 14:21:53 389

原创 F - Tournament(构造)

可以发现他们之间的每一行由上一行而来的变化规律,当k为奇数的时候,相邻之间两两交换,把当k为2的时候,第一个元素和第四个元素交换,第二个元素和三个元素交换,当k为4的时候,第一个元素和第八个元素交换,第二个元素和第七个元素交换..可以发现是由区间长度从外向内交换的。知道原理代码就好实现了,我们创建一个二维mp数组,对第0行赋值1-n,后面每一行都由上一行交换得来。可以发现这个性质对行数为奇数时也成立,因为奇数的最低位1就是最后一个。可以dfs暴力打表找出规律或者在纸上写也可以,n=16的时候是这样子的。

2024-07-23 21:39:41 310

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除