随笔分类 -  ACM / 题源:hdu

摘要:题意: 紧密排列的方块因为摩擦力一个一个稳定地挤在一起,但当一个方块的四个邻居中,上下两个至少空缺一个,左右两个至少空缺一个,则这个方块也将掉落。 每次锤掉一个方块,求多少个方块受牵连落下。 题解: 可能掉落的方块总在刚刚掉落的方块上下左右四个方向出现,暴力bfs的话一个方块最多被访问4次,此复杂度 阅读全文
posted @ 2019-08-25 22:04 Isakovsky 阅读(205) 评论(0) 推荐(0)
摘要:题意: 有许多物品,每个物品有一定概率让女朋友开心。你想让女朋友开心且只开心一次,让你挑一些物品,使得这个只开心一次的概率最大,求最大概率。 题解: 设物品i让女朋友开心的概率为$p_i$ 若你挑选了1-k共k个物品,则可记女朋友一次都开心不了的概率$w_0=\prod _{i=1}^k (1-p_ 阅读全文
posted @ 2019-08-25 21:57 Isakovsky 阅读(233) 评论(0) 推荐(0)
摘要:题意: 有一些1毛,2毛,5毛,1块的钢镚,还有一些价格不同的商品,现在要求你带一些钢镚,以保证这些商品中任选一件都能正好用这些钢镚付账,问最少带多少钢镚。 题解: 对于最优解,1毛的钢镚最多带1个,带两个就还不如带一个2毛的,同理2毛的最多带四个,5毛的最多带1个,一块的没有限制。 因此,预处理出 阅读全文
posted @ 2019-08-19 20:41 Isakovsky 阅读(249) 评论(0) 推荐(0)
摘要:题意: 在一块长方形蛋糕上切若干刀,每一刀都是从长方形某条边开始,垂直于这条边,但不切到对边,求把长方形切成了多少块。 题解: 块数=交点数+1 因为对于每个交点,唯一且不重复地对应着一块蛋糕。 就是产生这个交点的相互垂直的两刀,以及这两刀分别上次经过的刀痕或边缘,这四条边确定的长方形。 则问题转化 阅读全文
posted @ 2019-08-19 19:53 Isakovsky 阅读(284) 评论(0) 推荐(0)
摘要:题意: 给一个小写字母组成的字符串,每回合轮到某人时,此人可以选择让某位+1(如果是z则变回a),或者直接结束游戏。 先手希望游戏结束时字符串字典序尽量小,后手希望游戏结束时字符串字典序尽量大,求游戏结束时的字符串。 题解: 定理0:先手只能操作z 证明:如果先手操作非z元素,后手直接结束游戏,对于 阅读全文
posted @ 2019-08-19 19:07 Isakovsky 阅读(247) 评论(0) 推荐(0)
摘要:题意: 有若干个班,每个班有些人要喝奶茶,也提供一些奶茶,一人喝一杯,但是自己班的人不能喝自己班的奶茶,求最多能有多少人喝上奶茶。 题解: 典型的二分图匹配问题,学生在左,奶茶在右,学生和非自己班的奶茶连边。 因为班级数1e6,每个班级有1e9个奶茶或学生,直接按照上述建边跑匈牙利算法会T 考虑霍尔 阅读全文
posted @ 2019-08-14 22:44 Isakovsky 阅读(427) 评论(0) 推荐(0)
摘要:题意: CCPC前10%能得金牌,给定队伍解题数和罚时,问你有没有一个队伍如果向上取整就金了,四舍五入就银了。 题解: 排序后按题意求解即可。 阅读全文
posted @ 2019-08-14 22:29 Isakovsky 阅读(307) 评论(0) 推荐(0)
摘要:题意: 对于某数k,若数字d在1-k中出现次数恰好为k,则称k为好数。 给定d,x,求x以内,对于d而言最大的好数。k范围1e18. 题解: 打表二分即可。 但是,1e18的表是没法打出来的,只能在oeis.org上查出来 下面补充关于此题的一个定理证明。 好数不会超过1e11 证明:记f(d,k) 阅读全文
posted @ 2019-08-14 22:02 Isakovsky 阅读(375) 评论(0) 推荐(0)
摘要:题意: 给定两个矩形,输出这两个矩形把平面分成了多少块。 题解: 本来是道计算几何的大讨论,被我生生写成了bfs。 离散化边,注意不重合的边中间要空出来一格,四周也要空出来一圈,然后暴力bfs计算一共有几块即可。 不这么暴力的方法倒也不是没有,观察下图,点与长方形的关系存在如下25种,那么两点确定一 阅读全文
posted @ 2019-08-14 20:07 Isakovsky 阅读(278) 评论(0) 推荐(0)
摘要:题意: 有n道题,这n道题共m分,要求你至少做出k道才能及格,你可以自由安排复习时间,但是只有某道题复习时间严格大于题目分配的分值时这道题才能够被做出来,求最少的,能够保证及格的复习时间。复习时间和分数都是整数。 题解: 为什么给这道题一个博弈的标签呢?因为这道题其实是这样一个博弈过程: 第一回合, 阅读全文
posted @ 2019-08-14 00:07 Isakovsky 阅读(279) 评论(0) 推荐(1)
摘要:题意: 一个游戏,有许多关,到下一关要花费金钱,做出尝试,有概率成功,若成功则到达下一关,若失败则停在此关或退回到前面某关,询问第l关到第r关的期望费用 题解: 显然,第r关到第l关的费用是dp[r]-dp[l] 那么如何算出dp数组呢?首先dp[1]=0,利用期望方程正推 假设i点,成功率为p,失 阅读全文
posted @ 2019-08-13 23:38 Isakovsky 阅读(166) 评论(0) 推荐(0)
摘要:题意: 给定一个矩阵,矩阵上有若干点,每个点有正或负的权值,找一个方框框住一些点使得方框中点权值最大。 题解: 离散化横纵坐标,容易将这个问题转化为在矩阵上求最大和子矩阵的问题。 普通的n*n的矩阵的子矩阵最大和正解为$O(n^3)$,枚举上下端点后dp 然而此题是一个稀疏矩阵,n*n矩阵中只有O( 阅读全文
posted @ 2019-08-08 19:13 Isakovsky 阅读(249) 评论(0) 推荐(0)
摘要:题意: 设f(n,m)为比n大的第m个和n互质的数,给定一个k=(f(n,m)-n)xor n和m,求最小的n 题解: 对于给定的m而言,一个k周围合法的n分布的很密,因此在k的邻域暴力搜索即可。 阅读全文
posted @ 2019-08-08 15:55 Isakovsky 阅读(222) 评论(0) 推荐(0)
摘要:题意: 给你一个小根堆,从根开始拿,拿走子节点被拿完后才可以拿走父节点,两个人依次拿,谁拿的节点总和大谁获胜,问你谁有必胜策略。 题解: 小根堆中,每个点的权值总是不小于父亲节点的权值。所以无论怎么取,先拿走的数一定 不小于后面拿走的数。 此时双方的最优策略就是:贪心选择能取的数字之中最大的数。 阅读全文
posted @ 2019-08-08 15:49 Isakovsky 阅读(367) 评论(0) 推荐(0)
摘要:题意: 给你两个序列a,b,序列c的某位是由序列a,b的此位异或得来,让你重排序列ab,找出字典序最小的序列c。 题解: 如果能找到a,b序列中完全一样的值当然最好,要是找不到,那也尽量让低位不一样。 因此,将两个序列中元素的二进制视作字符串,建字典树。 在两棵字典树上,贪心地找让当前位一样的。 每 阅读全文
posted @ 2019-08-06 17:16 Isakovsky 阅读(493) 评论(0) 推荐(0)
摘要:题意: 给你一个C,再给你n组a,b,让你求x取什么值的时候,$ \sum_{i=1}^n |a_i*x+b_i| =C $,要求求出解的个数,并用最简分数从小到大表示,如果有无穷多解,输出-1. 题解: 其实这些方程就是在平面上的一组曲线,都是V形的,最低点都在x轴上,求出所有的零点,以这个零点从 阅读全文
posted @ 2019-08-06 15:21 Isakovsky 阅读(255) 评论(0) 推荐(0)
摘要:题意: 给你一个暴力匹配字符串公共前缀后缀的程序,为你对于某个字符串,暴力匹配的次数是多少。 题解: 使用扩展kmp构造extend数组,在扩展kmp中,设原串S和模式串T。 extend[i]表示T与S[i,n-1]的最长公共前缀。 在本题中,只需要将S,T均设为题目中输入的字符串即可,这样,ex 阅读全文
posted @ 2019-08-06 14:56 Isakovsky 阅读(333) 评论(0) 推荐(0)
摘要:题意: 给你n个数,求如下限制条件下的排列数:1,第一位必须是x,2,最后一位必须是y,3,相邻两位之差小于等于2 题解: 如果x<y,那么考虑把整个数列翻转过来,减少讨论分支。 设dp[n]为限制1和n在两边,相邻的数之差小于等于2的排列方案。 dp[0]=1 dp[1]=1 dp[2]=2 dp 阅读全文
posted @ 2019-08-05 23:13 Isakovsky 阅读(263) 评论(0) 推荐(0)
摘要:题意: 定义一个排列的差分为后一项减前一项之差构成的数列,求对于n个数的排列,差分的字典序第k小的那个,n<=20,k<=1e4。 题解: 暴力打表找一遍规律,会发现,对于n个数的排列,如果想找到差分的字典序第k小的,如果k<=(n-1)!,那么对应的那个排列就是把第一位赋值为n,后面的是1~n-1 阅读全文
posted @ 2019-08-05 22:20 Isakovsky 阅读(443) 评论(1) 推荐(0)
摘要:题意: 给你重量分别为1到n的n个石头,让你分成重量相等,数量也相等的k组,保证k是n的约数。问你能不能分配,如果能,输出具体的分配方案。 题解: 首先,如果1到n之和不能整除k,那么一定不能如题意分配。 否则一定能。 设m=n/k。m是每组分到的石头块数。我们把n块石头排成这样m*k的矩阵,假设1 阅读全文
posted @ 2019-08-01 12:00 Isakovsky 阅读(585) 评论(0) 推荐(1)