- 博客(14)
- 收藏
- 关注
原创 C - Perfect Toyota Programming Contest 2024#12(AtCoder Beginner Contest 384)
题目的意思是给你五个数分别对应ABCDE, 你任意组合(可选1个, 2个, 3个, 4个,5个) 共有31中情况(其实是2^5 = 32种情况, 有种全是0的情况),你任意选择按从大到小的顺序输出选的数的和输出对应的字母,如果选的数字大小的和相同的话,按照字典序输出.最简单的就是最无脑的做法写几个for循环,全部暴力加上去.当然有2 ^ 5 = 32可巧用二进制的思想来做,二进制中1表示所选 0表示不选.
2024-12-15 11:30:40
466
原创 B-宝石手串 (牛客周赛 Round 71)
环形字符串问题.题目的意思找到相同两个字母中间隔最少的个数.对于环形字符串,我们可以知道答案一定是小于字符串长度的一半的,因为如果答案大于字符串的一半,我们完全可以从另一头来找.所以我们可以直接暴力枚举答案表示间隔,然后比较字符串的位置是否相同来确定答案,
2024-12-09 19:10:43
490
原创 学生成绩查询系统(期末程序课程设计 有源码)
代码700多行,有如下的功能:1. 基础信息管理:包括学生、教师和管理员信息的管理。2. 成绩信息管理:涵盖成绩的输入、删除、修改,以及学生和教师对成绩的查询,还包括成绩的排名功能。3. 用户权限管理:分为管理员、教师和学生三个子模块,每个子模块下有相应的权限设置。4. 学生权限管理:允许学生输入和修改个人信息,以及修改密码。5. 教师权限管理:允许教师输入和修改个人信息,以及管理教师信息。6. 管理员权限管理:允许管理员输入和修改个人信息,以及管理管理员信息。7.密码修改:提供学生、教师和管理员修改密码
2024-11-18 21:41:51
508
3
原创 C - Move Segment(AtCoder Beginner Contest 380)
题目花里胡哨的。翻译为人话就是:首先知道题目中的“1块”,就是连续的1(长度可为1)。要求把第k个连续的“1块”(长度可为1)接到第k-1个“1块”的后面。可从第一个字母到倒数第二个字母找到每个"1块"的最后一个位置,再特判最后一个字母是不是1,然后把第k个“1块”的位置与第k-1个“1块”之间的数字翻转一下。话不多说,直接上code
2024-11-18 09:38:11
513
原创 分成互质组 (信息学奥赛一本通)
依次枚举每个数能否加到前面的某一个组中,(当然枚举第一个数的时候,前面没有组),如果能的话,则加入到某一个组中,但总的组的个数不变。如果不能的话,则新建一个组,此时总的组的个数加1,然后把这个数加入到这个新建的组中。直到枚举的这n个数全部在组中。当然从第一个数开始时,此时没有组,所以从dfs(1, 0)开始。
2024-11-11 20:24:18
351
原创 D题 :K (牛客周赛 Round 67)
做题一定要认真读题,认真再认真。根据题意可知:极大不同区间的数量是k,但是长度并不一定是k。我看了示例1后,正好3个区间,区间长度都是3,于是认为极大不同区间的长度也是k了。但是题目中没有明确要求,所以极大区间长度不一定为k,只是数量恰好为k。
2024-11-10 22:44:31
299
原创 单词接龙 [NOIP2000 提高组]
数据给的是20,由数据范围可知应该用爆搜。想着想着还有贪心的成分。首先,遍历所有单词,找出开头字母是给定字母的单词,它们都有可能是第一个单词然后,逐个查看每个单词(也包括第一个选过的单词)看是否可以拼接在当前单词的后面,也就是是否存在相同的子串。如果存在不同长度的子串,比如abdcd与dcdab,那么我们需要选择最短的子串,因为这样才能保证最后拼接的长度最长(贪心)最后,每次DFS更新最大的答案
2024-11-10 17:34:52
550
原创 C - Repeating (AtCoder Beginner 378)
题目的意思是,给你n个数,如果第i个数没有在前面的i-1个数中出现过则输出-1,如果出现过,输出离i最近的那一个,也就是最晚出现的这个数的位置。题意很简单,如果暴力的话,肯定会TLE的,所以可以想到STL中的map容器。我们可以不用统计这个数出现的次数而是直接给它赋值为它最后出现的位置。
2024-11-02 22:31:18
384
原创 C Avoid Knight Attack (TOYOTA SYSTEMS Programming Contest 2024(AtCoder Beginner Contest 377))
可用总的方格数减去这个棋子和它能攻击到的位置就是正确答案。但是要注意,不同的棋子攻击位置可以相同,并且攻击位置要在棋盘内,为了避免重复计算,我们可以用c++STL库中的set进行去重。把每个棋子和它能攻击到的位置全部加入到set中,用总的方格数减去set的大小就是答案了。
2024-10-26 22:54:15
595
原创 C - Word Ladder (Toyota Programming Contest 2024#9 (AtCoder Beginner Contest 370))
最主要的是要搞清每次更换的是哪个字母,特殊的,当s中的每个字母都是大于等于t中对应的那个字母时更换的次序是从左往右依次更换的,当s中的每个字母都是小于等于t中对应的那个字母时更换的次序是从右到左依次更换的。由特殊到一般,s中字母既有大于还有小于t中对应的字母时,首先是大于的从左往右,然后是小于的从右往左。当然也可以用双向队列deque来做,从后往前扫描,s中哪个字母>t中对应的字母是时插入队列的头部,小于时插入队列的尾部,这一套下来后可也得出大于的是从左往右的,小于的是从右往左的。
2024-10-16 10:44:16
707
4
原创 C - sum(牛客小白月赛102)
这题典型的贪心问题,是求最小的操作次数。首先我们可以先算出这n个数的和s,s和sum的大小有三种情况。当s = sum时,一个数字也不用修改,答案为0。而剩下的两种情况可以合为一种情况来做。首先我们要知道如果把这n个数都变为相反数, 则s也会变为s的相反数,当把sum也变为sum的相反数时,所需的次数是一样的。(因为题目中修改后的某个数的值x是在[-10000,10000]之间,是对称的。)知道这接下来就好办了
2024-10-15 12:01:18
851
原创 B-小红的好数组(牛客周赛 Round 63)
这是一个双指针类型的题。经过分析可知,只要长度为k的一个数组中相对称的只要有一对的值是不同的,其他对的值都是相等的则为好数组。首先我们可以通过一层循环枚举一个长度为k的数组的最左边的位置,然后利用双指针的想法看这个长度为k的数组左右对称不同的位置有几个,如果仅有一个则满足题意为好数组,否则不是好数组。GAME OVER
2024-10-14 12:49:16
390
原创 D - ABA (AtCoder Beginner Contest 375 )
仔细想想发现这个长度为3的回文串中间那个字母可以为任意字母,于是乎,我们可以想到通过移动中间字母的位置,依次统计每个中间字母它左边每个字母出现的个数和它右边每个字母出现的个数,依次相乘再相加即可得出答案。
2024-10-13 21:59:29
1356
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人