| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Python解题 - CSDN周赛第17期 - 拯救公主 -> 正文阅读 |
|
[Python知识库]Python解题 - CSDN周赛第17期 - 拯救公主 |
第一题:判断胜负
分析这题太简单了,但是问哥想复杂了,审题不严,漏看了题目已经限定了只有两个字符串,还引入了Counter类来生成字典,杀鸡用了牛刀。不过由于输入是字符串,用字典来计数应该是最简便的,只要按照输入顺序分别累加A或B的次数,最后再进行比较输出就好了。唯一要注意的地方就是有可能两个字符串出现的次数一样,这时要输出“dogfall”,表示平手。 参考代码
第二题:买铅笔
分析很久之前做过的题了,也没什么可说的。x、y 分别代表了三种包装每包的铅笔数量和价格,然后用总数 n 除去每种包装的铅笔数量,向上取整(因为拆开就得全买),最后比较一下三种情况里哪种用钱最少即可。 代码也就一句话的事: 参考代码
第三题:拯救爱情
分析本期争议最大的题目。除了长期霸榜的某选手(托?),其他人一律只通过70%。 从题面和给出的示例上看,最后答案一定是奇数。做法也有很多种,这里也就不啰嗦了。但让人百思不得其解的就是那30%不通过的数据到底长什么样? 参考代码
有人说可能是因为没有考虑到最终结果得不到奇数的情况,也就是说给的花瓣数只有偶数。但是很可惜,问哥早就测试过了。对于编译型语言可能无法做这样的测试,但是解释型语言如python很简单就可以判断测试数据里有没有特定的值。比如加个判断语句,当最终结果是偶数的时候,执行一条ValueError的代码,如 int("abc")。由于python是逐行执行,如果代码逻辑执行不到这里,就不会检查出这里的Value错误。而问哥加上这句后,代码还是只通过70%的测试用例,并不报错,说明测试用例里不存在只有偶数的情况。只能等官方解释吧(虽然基本没有)。 第四题:拯救公主
分析字符串题,简单概况来说就是,有三行 n 列不断重复的字符串矩阵(三行各自重复字段长度不同),矩阵中的点(.)代表草地,可以通行,星号(*)代表石头,不能通行,而只要石头不在同一列的位置,就可以斜向通行,每一行的重复字段里最多只有一个星号。问勇敢的骑士能不能到达矩阵中的指定位置。 我们画图来看看,以示例为例: 可以看到,在将每一行的字符串循环拼接后,在第8列的位置,出现了三行都是石头的情况,而草药在第10列,这个时候,勇士就无法到达草药的位置了,所以结果输出NO。 接下来,我们来仔细分析一下本题。首先,题目说了入口在左上角,换句话说,如果第一行字符串的第一个字符是星号(“*”),则不用继续判断,答案就是NO。 其次,题目还说了,草药有可能长在石头上(这不坑人么),如果出现这种情况,也不用再去判断其他行,答案也是NO。 再次,题目还说了,每行重复字符串里的星号(*)最多只出现一次,那也有可能不出现啊,如果有至少一行字符串里没有星号(“*”),而草药所在的位置不是星号(在上一步检查过了),则答案就肯定是YES了,因为如果只有两行有石头的情况下,草药必须是下面这样的位置,勇士才无法找到。而无论哪种位置,都是不可能出现的。(中间行的最小长度是2,不可能出现3个星号连在一起的情况) 如果经过上面的判断,还无法得到答案(不管YES还是NO),我们就需要进行终极判断了——找到那堵“墙”的位置,也就是三行一定存在某个相同的列,都是星号。然后再用这个列的位置和草药所在的列的位置进行对比,如果草药在前(还没遇到“墙”呢),答案就是YES,如果草药在后(比如示例),答案就是NO。 连续三个自然数(m,m+1,m+2)的最小公倍数 p 等于三者之乘积(除非m等于2,但题目说了m是奇数),也就是说,三个字符串不管长什么样,一定在第 p+1 列开始重复之前的样子。于是,我们只要找到星号在每一行的初始位置,然后以 p+1 为上界,以 m/m+1/m+2 为步长,进行枚举,找出三者相同的列数,就等于找到答案了(问哥这里用了集合里求交集的办法)。 参考代码
? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/22 18:48:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |