ACM入门题目
文章平均质量分 63
太弱了, 没有力量
EdwinAze
退役ACMer,打游戏,半二次元
有问题评论必回,博客内容喝醉了写的,欢迎指正
展开
-
一次函数 T1744 963字符写法
首先判断k, 当`k==0`时, 应输出 `y=0`k不为0时: - 判断是否应该在k之前加`-` - 判断k是否为1, 若为1则需省略1, 只输出 `y=x` - 判断k是否为分数, 若不为分数, 则输出 `y=kx`, 否则输出 `y=k*x`(多个*) - 若是分数则判断分母是否为1, 若为1则只输出分子(接下来处理m) - 判断m之前应加什么符号 - 判断m的分母是否为1, 若为1则只输出分子判断符号可以直接根据之前算出的小数结果来判断......原创 2022-07-16 13:40:06 · 150 阅读 · 0 评论 -
X问题 中国剩余定理
求在小于等于N的正整数中有多少个X满足:思路跟[[中国剩余定理#模板 | 中国剩余定理]]一样的结构, 那么就转化一下:先看前两个式子如何合并:移项得:因为正负无所谓, 所以这里直接把 变成负数通过扩展欧几里得定理得出 k1, k2 的值, 然后化为通解带入x中得:故合并后x的式子中:a 为 b 为 则更新时这样更新:最后的答案 其中 b1 就是最小的x, 求在N之下有多少个x成立, 则将 k 变成1, 2, 3 … 直到 x 超出n即可。根据扩展欧几里得定理可原创 2022-07-13 16:17:13 · 141 阅读 · 0 评论 -
Prime Path
这题是枚举数字且要求是求出最短路径, 搜索算法中能求出最短路径的当然是我BFS广度优先搜索。建议还是看英文题面, 字多显得更详细。大意就是从质数a每次只变一位变成质数b, 求最短变化次数, 且每次变化后的数必须也是质数。理解好题意之后马上就能发现, 该题需要很多次判断质数的操作, 不能沿用上一题的简单判断。这里我使用欧拉筛来实现素数判断:对这方面不太熟悉的去做下[素数专题]...原创 2022-07-07 12:52:03 · 287 阅读 · 0 评论 -
最少拦截系统
每一个导弹系统能拦截的导弹序列, 都是一个严格下降子序列。从头遍历, 刚开始 389 自己算一套导弹系统对于 207, 有两个选择:1. 选择加入到之前结尾大于等于207的最小的序列中2. 如果现有序列结尾数都小于207, 则创建新序列**为什么是最小的大于等于207的序列, 而不是任意一个都行呢?** 假设存在两个序列结尾为 a和b 且 a > b >= 207 207既可以接在 a 后面, 也可以接在 b 后面 若207接在a后面, 那么b序列只能再占一个系统...原创 2022-07-07 12:48:20 · 70 阅读 · 0 评论 -
Corn Fields
蒙德里安那道题的一种应用, 依然是用二进制来表示该列上哪个位置种草。总思路就是枚举所有可行状态, 然后计算转移, 最后得出结果方案数。原创 2022-07-07 12:41:25 · 90 阅读 · 0 评论 -
单词接龙 DP解法 状态压缩
说着 n原创 2022-07-07 12:38:54 · 125 阅读 · 0 评论 -
饭卡 HDU2546
饭卡 - HDU 2546 - Virtual Judge (csgrandeur.cn)电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。Input多组数据。对于每组数据:第一行为正整数n,表示菜的数量。n......原创 2022-06-28 17:19:22 · 168 阅读 · 0 评论 -
开餐馆
解题策略为什么能用DP解题?其子问题是第 i 个餐馆是否开, 当前餐馆开了之后的利润加上 0-i 之间餐馆开的利润就是总利润状态表示: 第i个原创 2022-06-21 14:45:09 · 154 阅读 · 0 评论 -
知山知水,树木树人
k叉树问题题目:知山知水,树木树人 - 计蒜客 A1211 - Virtual Judge (vjudge.net)有一个完全k叉树,每个节点有 k 条边,权值一次为1~k。求从起点1号开始,走到过的边权值总和为n,且有一边权 >= d的路线数。对于线性DP问题,我们需要得到最终符合要求的结果,即 满足权值为 n,至少经过一边权值 >= d 的路线数。类似于背包,公共子序列等等,状态的设置可以根据 最终结果所需要满足的条件来设置。例如:对比可发现,k叉树问题不需要找到状态的属性,原创 2022-05-04 23:49:16 · 206 阅读 · 0 评论 -
Channel Allocation 别用四色定理
题目Channel Allocation - POJ 1129 - Virtual Judge (vjudge.net)分析这道题很多博客说用四色定理但如果所有区域都重叠在一起,即各个基站之间都连一条边时其需要的频段数便是基站数(下图为AC代码测试的结果)至于为啥他们四色也能过…本题思路首先建一个图记录关系,接着从第一个点开始dfs搜索到最后一个点。因为本身就是无向图,所以我们也没必要管是否跟之前的父节点颜色重合。直接遍历子节点,若有重合颜色则再将当前要染的颜色加一,最后的颜色便是应该染原创 2022-04-19 22:01:52 · 212 阅读 · 0 评论 -
It‘s not a Bug, it‘s a Feature
所以,目标就是把起始 111(全bug) 的串应用一些补丁使其变为 000。要求求出最短的耗时(路径),因为每个补丁耗时不同,可以看做 正权最短路问题,这里我用 dijkstra 来写。正常来说 dijkstra 是从起始节点经过一条条边到达最终节点,那么对于这个问题,当前串的状态便是一个个的节点,每个补丁看作一条条边。具体怎么写呢?得解决以下几个问题:当前节点的状态如何存储?使用字符串嘛?原创 2022-04-04 12:03:45 · 1327 阅读 · 0 评论 -
小 B 的魔法 并查集
链接:小 B 的魔法 - 计蒜客 T3106 - Virtual Judge (csgrandeur.cn)小 B 的魔法 - 题库 - 计蒜客 (jisuanke.com)题面:分析:定义26个字母的并查集,起始集合中只有自己。碰见不同的一位a z,假设把所有的 z 都换为 a,便是将两个字母 a z 合并为一个集合。当再碰见 z -> ? 时,若还是 a 则步数不把++,若为 z -> b,则再去将 z b 合并,同时加一步。代码:#inc...原创 2022-04-03 23:15:39 · 363 阅读 · 0 评论 -
商汤科技的行人检测(简单) 求众数
边输入边处理用 cnt 来统计一个数的出现次数,当下一个数跟自己相同是 cnt++, 当不相同时 cnt-- 抵消当 cnt 为 0 时更新当前的众数最后的众数一定会让 cnt 为正数原创 2022-03-27 17:03:27 · 1094 阅读 · 0 评论 -
数制转换
秦九韶算法求出十进制再从十进制转到其他进制十转其他我根据栈的思想用递归来写,简洁舒服原创 2022-03-03 20:01:10 · 75 阅读 · 0 评论 -
鸣人和佐助 非三维数组解法
很多博客都用的三维数组,感觉那实在过于繁琐,参考了别人的思路才整了个check数组用结构体来保存坐标比用pair保存坐标更加简洁些,能把附加信息直接绑定上check数组的话没法绑定,需要提前获取下一步的信息原创 2022-02-08 20:50:24 · 518 阅读 · 0 评论 -
最短前缀 简单暴力循环
弄清两个概念前缀:子串能完美的从父串的起始位置匹配到子串最后最短前缀:子串不能成为除此之外其他字符串的前缀所以,我们需要两个操作- 求出一个字符串的所有前缀- 判断一个子串是否为该字符串的前缀当字符串的一个前缀不是其他字符串的前缀时,便为最短前缀如何求前缀呢?从前往后遍历字符串,每经过一个元素就加进子串数组即可为了方便可以用 string,能直接用 + 链接如何判断是否为前缀呢?遍历字符串和子串,看每一位上是否相等即可原创 2022-02-02 10:59:37 · 1028 阅读 · 4 评论 -
选数 计蒜客 T2116 解释如何取得唯一解
这题素数判断之类的其他博客都写过了我主要尝试解释如何保证数据不出现重复解如题目所说,每个数据不能重复选择这样的话,我们定义一个布尔数组来标记是否被选择过3+7+19=29,它交换一下位置相加也是29而样例的答案为1,所以不能出现重复解那么可以再加个数组,表示结果是否出现过行吗?原创 2022-01-30 18:27:23 · 890 阅读 · 0 评论 -
八皇后问题 计蒜客 - 381
八皇后问题的小变形在8x8的矩阵中找到数字之和最大的八个位置,同时每个位置上两个对角线和一列中只有一个旗子依然是全部深搜遍历所有可能性,找到最大的那一种如何判断当前位置能不能放呢?一列很好判断,定义一个列 数组 保存那一列中有棋子就行至于对角线,我们需要找到用于标识每个点对角线之间区别的特点先以由左下往右上的对角线为例,画画可以很明显发现,每个对角线之间都是平行的也就是说,他们的斜率不需要考虑,只需要考虑偏移量原创 2022-01-30 17:18:55 · 524 阅读 · 0 评论 -
Cabric Number Problem 堆(优先队列)版本
模拟一下就行,主要题目范围要求,不能小于四位也不能多于四位原创 2022-01-27 14:42:33 · 6284 阅读 · 0 评论 -
实数加法 小数高精度加法 c++ vector实现
之前学过整数的高精度加法,小数的话只需要一些变通即可实际相加时,小数部分跟整数部分是各加各的,如果小数部分加满了再向整数部分+1那么就把小数部分也看做整数来加,最后将进位加到整数部分问题就又化为了整数的高精度原创 2022-01-19 20:28:05 · 1999 阅读 · 3 评论 -
马走日 dfs回溯搜索 清晰简单
棋盘最大就10*10大小,很明显可以走dfs当我们到达一个点之后,下一个点可以走8个方向分别是左上2,左下2,右上2....这里的2指的是向上或者向下的高度,用于区分横着的日跟竖着的日再写个check函数在每次新一层dfs开始时判断是否满足,满足则把结果+1原创 2022-01-13 17:00:52 · 212 阅读 · 0 评论 -
HDU 考试排名 题解 by Aze
G - 考试排名 题解 by Aze1. 要点 结构体 struct 数组的应用 排序 的应用 多重条件排序 %-10s 格式化输出 比较复杂的输入处理 2. 前置知识 结构体数组 struct的声明,使用 跟数组的区别 冒泡排序(sort也行,我用的快排但思路不太好讲) 3.题目C++编程考试使用的实时提交系统,具有即时获得成绩排名的特点。它的功能是怎么实现的呢?我们做好了题目的解答,提交..原创 2021-11-23 22:51:58 · 351 阅读 · 0 评论