- 博客(57)
- 收藏
- 关注
原创 AtCoder Beginner Contest 397 D - Cubes
最后通过二分求解即可,直接公式计算可能会导致溢出。思路:设 d = x - y,
2025-03-16 02:52:13
182
原创 AtCoder Beginner Contest 396 E - Min of Restricted Sum
思路:首先找到建双向边,通过 dfs 找连通块,将第一个进入连通块位置的临时值设为 0 ,这个连通块里的其他位置的临时值就按照建边的异或条件赋值,若不满足,直接输出 -1;若满足,将这个连通块里的每个位置的临时值进行按位统计,统计每位为 1 的数量,若 1 的个数比 0 多便将第一个进入连通块位置的临时值的当前位的 0 改为 1 ,这样就能保证序列元素和最小,第一个值的改动会影响连通块里的其他所有临时值,将他们与第一个临时值异或便能得到结果值,最后输出答案即可。
2025-03-09 02:53:41
220
原创 CodeForces - 1073C
这个长度可以通过以下方式计算得到:maxID−minID+1,其中maxID是改变操作的最大索引,minID是改变操作的最小索引。例如,如果Vasya将RRRRRRR改变为RLRRLRL,那么索引为2、5和7的操作被改变了,所以改变的子段长度为7−2+1=6。思路:先用前缀和记录前 i 次移动后的位置 ( x ,y ),然后再二分需要改变字符串的长度求最短长度即可,若不可能输出 -1。告诉他需要改变的最小子段长度,这样机器人就可以从(0,0)到(x,y),或者告诉他这是不可能的。
2025-02-25 18:54:36
302
原创 第十九届黑龙江省赛 F. Photography
为简单起见,哈尔滨可以被表示为一个具有 无向图,有 n 个节点和 m 条边,其中每个节点代表一个不同的地标,每条边代表连接这些地标的道路。一旦他在一个地标拍完照片,他将沿着边前往他下一个地标继续他的旅程。由于时间限制,他最多可以访问 5 个不同的地标。当然,Paulliant不希望重复访问,因此这些地标必须是不同的。在旅行之前,Paulliant为每个地标分配了一个“幸福值”,其中第 i 个地标的幸福值为 ai。可以通过先枚举2-3-4这三个点,然后从2开始找1,从4开始找5,边找边求最大值即可。
2025-02-25 12:28:55
133
原创 HDU Go Running(最小点覆盖 + 网络流优化)
每个人可以从东往西跑,也可以从西往东跑,所以相对应的在这个坐标系上每个点的斜率可以是 1 ,也可以是 -1。网络流建图就是在二分图的基础上,加上一个源点和一个汇点,然后分别建立源点和汇点到二分图的边。(网络流和二分图建图的区别是二分图两边建边的时候,可以有重复的编号,例如:1 -> 1。但是,网络流建图的时候两个相连的点不能是重复的,例如:1 -> 2。所以在网络流建边的时候每个编号都要保证不相同!最后从监控人员哪里得到了n个报告,每个报告给出了某人在某一时候所在的位置,问跑步的最少可能人数是多少。
2024-11-26 20:09:18
368
原创 HDU The Accomodation of Students(二分图最大匹配+黑白染色)
现在,您将获得彼此认识的所有学生对。您的任务是将学生分成两组,以便同一组中的任意两个学生彼此不认识。请记住,只有出现在前一组中的 paris 才能住在同一个房间里,这意味着只有已知的学生才能住在同一个房间里。他们中的一些人可能彼此认识,而另一些人则不认识。例如,A 和 B 彼此认识,B 和 C 彼此认识。计算可以安排到这些双人房的最大对数,如果无法将这些学生分为两组,请打印“否”。思路:第一步先建边,然后用黑白染色判断这是不是二分图,若不是则输出“No”,不然开始套二分最大匹配值的模板即可。
2024-11-26 11:41:43
158
原创 HDU-1695 GCD
思路:先将 gcd ( x , y ) = k 两边同时除以 k ,得到 gcd ( x / k , y / k ) = 1,这时问题就变成了 1
2024-10-30 00:20:41
175
原创 HDU - 2588 GCD
思路:假设(X,N)= y,那么(X / y,N / y)= 1。因为 X <= N,所以 X / y <= N / y ,所以这道题目就变成了求 N / y 的欧拉函数之和。题目大意:两个正整数 a 和 b 的最大公约数 GCD(a,b),有时写成 (a,b),是 a 和 b 的最大公约数,例如,(1,2)=1,(12,18)=6。(a,b) 可以很容易地通过欧几里得算法找到。给定整数 N 和 M,有多少个整数 X 满足 1<=X<=N 和 (X,N)>=M。
2024-10-28 23:51:34
205
原创 HDU Calculation
题目大意:假设 f(0) = 1 且 0^0=1。f(n) = (n%10)^f(n/10) 对于所有大于零的 n。请计算 f(n)%m. (2 ≤ n , m ≤ 10^9, x^y 表示 x 的第 y 次方)。思路:f(n) = (n%10)^f(n/10)通过这个公式开始递归,会发现指数会特别大,所以我们要用到欧拉函数的降幂公式:当 x >= p 时,a ^ b。a ^ ( b % euler( p ) +euler( p ) ) ( mod p ) ,当 x < p 时,a ^ b。
2024-10-27 23:58:27
204
原创 HDU Detachment
思路:举几个例子可以得到一个大致的结论:将 n 拆开的数越多,乘积越大。由结论可得 n 应该会拆成类似 2 * 3 * 4 * 5 * ... 这个形式(为什么不是从 1 开始?题目大意:给你一个正整数 n ,你可以分成若干个不同的正整数 ,求这几个正整数乘积的最大值是多少。首先假设 n 能被拆成连续的 k 个数,依次放入数列 a 中。结论:2 * 3 * 4 * 5 * ... *结论:2 * 3 * 4 * 5 * ... *结论:2 * 3 * 4 * 5 * ... *是第一个加 1 的数,
2024-10-23 23:26:19
176
原创 HDU The Boss on Mars(容斥原理)
ACM 有 n 名员工,现在是他们从老板那里拿薪水的时候了。所有员工都从 1 到 n 编号。原因不明,如果员工的工作编号是 k,他今年可以获得 k^4 Mars 美元。所以为 ACM 工作的员工非常富有。思路:先求出1~n的每个数的四次方的求和,然后再减去n的因子的四次方的求和。把n的因子的质因子找出来,然后使用容斥原理(我容斥原理用的方法是二进制)去做。因为员工人数太多,ACM 的老板必须分配太多的钱,他想明年解雇工作号与 n 共质的人。现在老板想知道解雇后他会节省多少钱。
2024-10-23 00:37:56
186
原创 HDU Happy 2004
以 X = 1 为例。2004 ^ 1 的正整数约数是 1、2、3、4、6、12、167、334、501、668、1002 和 2004。因此 S = 4704 且 S 模数 29 等于 6。考虑一个正整数 X,设 S 是 2004 ^ X 的所有正整数除数之和。您的工作是确定 S 模数 29(S 除以 29 的其余部分)。思路:找出 2004 的质因数 有 :2,3,167。,易得 S = ( 1 + 2 + 4 + ... +) ,用等比求和公式(或错位相减)可以得到 S =
2024-10-22 12:16:48
361
原创 HDU Sum
无论 n 为何值 ,都有 m * ( p - 1) + k = n ,m 和 k 都为整数。思路:这题要用插空法,一共 n 个数字,所以一共有 n - 1 个空可以插入,所以这道题目的答案就是。但是输入的这个 n 可能会很大(需要字符串输入),导致这个指数会特别大,所以我们要用费马小定理(%p=1 , 即当指数是模数-1的时候值为 1 ,所以我们可以把。题目大意:给你一个数字 n ,n 个数字能分成多少组分类情况。,由二项式定理易得这个式子的和为。当 x=y=1 时,
2024-10-22 00:33:21
236
原创 HDU RSA
思路:由题易得,d * e +y * f ( n ) = 1 ,且gcd ( e , f ( n ) ) = 1,所以用扩展欧几里得求出 d ,但要保证 d 是非负的,最有用快速幂求出每个字符即可。
2024-10-19 01:32:33
376
原创 HDU RealPhobia
若 A 和 B 的最大公约数不为 1 时,有一种特殊情况就是当 A = 1 时,又因为 D < B ,所以 D = B -1 ,C = 1;= 1 时,由条件 2 可以得到 | A*D - B*C | = 1 (注意这个式子中间是负号),这时保证了分子最小,但我们还要让分母尽可能的大,即 D 要 大一些。我们用扩展欧几里得可以求出两对{ C , D },取 两个 D 里大的那对{ C , D } 即可。你的任务是帮助 Bert 编写一个程序,减少有理数的分母,同时引入尽可能小的误差。
2024-10-19 00:42:15
361
原创 HDU Romantic
题目大意:现在告诉你两个非负整数 a 和 b。找到满足 X*a + Y*b = 1 的非负整数 X 和整数 Y。如果没有这样的答案,请写 “sorry”。思路:这是一道扩展欧几里得模板题,唯一容易错的就是 x 有可能是负数,要把它改成非负数。
2024-10-17 23:56:55
271
原创 HDU Ignatius‘s puzzle
题目大意:f(x)=5*x^13+13*x^5+k*a*x,输入一个无负整数 k(k<10000),要找到最小的非负整数 a,将任意整数 x ,65|f(x),如果不存在该 a,则打印 “no”。f(x)=x*(5*x^12+13*x^4+k*a)%13=0 , 即 (5*x^12+13*x^4+k*a)%13=0。f(x)=x*(5*x^12+13*x^4+k*a)%5=0 , 即 (5*x^12+13*x^4+k*a)%5=0。1.当 x = 0 时,f ( 0 ) = 0 ,能被65整除。
2024-10-17 23:49:08
476
原创 ZJYYC2360. 圆球的最大得分
思路:这是一道区间dp的题目。最大的数放在最远处会更优,所以每个小孩可以放在 l 处或 r 处,即这段区间的最左边或最右边。这题可以用记忆化搜索来写,用dp[l][r]来记录 i ~ j 之间调整位置后的最大得分。注:本题原题来自于AtCoder Beginner Contest 163 E - Active Infants。
2024-10-07 00:49:31
292
原创 HDU Sit sit sit (区间DP+组合数)
在长度为 1 的时候,排列数肯定为 1,在长度为 2的时候排列数肯定为 2,当长度大于等于 3 的时候就要开始分裂类讨论了。第一种情况最有一个人坐在两边的情况,第二种情况最后一个人不坐在两边的情况。dp[i][j] : 记录在 i ~ j 之间满足题目要求的排列数。C[i][j] : (组合数)在 i 个人中挑选 j 个人。如果当前学生没有椅子可以坐,他就会离开。1.椅子上有左右两张相邻的椅子。2.左右相邻的椅子不是空的。3.左右相邻的椅子颜色不同。思路:区间dp+组合数。
2024-10-06 17:04:23
231
原创 __int128 的输入输出 ( 模板 )
_int128属于高精度,__int128最大可以表示39位数,可以进行+,-,*,/,&,^,| 等基本运算,可以用快读快写输入输出。
2024-09-04 22:22:27
854
原创 2024“钉耙编程”中国大学生算法设计超级联赛(7)1004 战争游戏
若游戏轮次耗尽的时候防守方操纵的人物仍未死亡,那么防守方获胜,游戏结束。首先,进攻方会选择一个节点 p ,作为轰炸中心,并对防守方进行“轰炸预告”,如果在回合结束时防守方所在的节点 t 与轰炸中心 p 的距离。作为袋鼠中的精英,坎格鲁斯普雷和袋鼠将军都是绝顶聪明的(即他们做出的操作都是当前盘面下的最优操作),那么在游戏结束时,谁将获胜?坎格鲁斯普雷和袋鼠将军在游玩一款名叫“战争游戏”的游戏,在这款游戏中,坎格鲁斯普雷是进攻方,袋鼠将军是防守方。(1≤ui,vi≤n)初始时,防守方的人物在 s 号节点。
2024-08-21 23:11:21
338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人