刷题
思维练习,尝遍各大学题目
凌晨小街
别nullptr了
展开
-
HDU1251 统计难题(经典前缀树入门题)
题目大意:给你一系列单词,然后再给你一系列查询,问你每个查询的字符串是哪几个单词的前缀,输出每个单词查询的前缀个数,单词长度不超过10题目思路:这道题目可以用hash来做,但我是学习前缀树来着,看hash干哈(一边去 )首先我们根据已有单词创建一颗前缀树(不知道前缀树是什么?百度吧骚年)创建一个trie数据结构,作为前缀树,前缀树的模板// 字典树(前缀树)struct trie{ int tree[1000008][26],cnt; int color[1000008]; // 插入一个原创 2021-02-26 12:37:38 · 392 阅读 · 0 评论 -
HDU 1846 Brave Game(Bash博弈)
一道裸的Bash(巴什博弈)题目题目传送门题意:有一堆石头,石头数量为n,两个绝顶聪明的人轮流从中抽取一些石头并扔掉,每人每回合最少抽取1个石头,最少m个石头,最后把石头拿完的人胜利,问最终是先手必胜还是后手必胜思路:首先给出结论,如果n%(m+1)==0,后手必胜,反之,先手必胜理由:①如果n%(m+1)==0,拿个小例子,比如n=8,m=3,第一次先手随便取,比如取个1,后手就可以取4,然后先手无论取1/2/3,都不可能将4取完,并且下一次对手一定可以取完,所以这种情况后手必胜。有人可能会说,原创 2021-02-07 22:33:37 · 130 阅读 · 0 评论 -
HDU1013 Digital Roots(简单DFS+模拟)
这题目我人傻了,题目说读入一个整数,然后写了一个简单程序,直接WA后来自己一直调试没问题,再仔细看看题目,输入正数,我想到了大整数,大整数是不能用先有整数类型存储的,所以我换成string,最后成功AC真坑。。。简单DFS一下吧#include <iostream>#include <stdio.h>#include <math.h>#include <string.h>#include <string>#include <原创 2021-02-22 16:33:22 · 140 阅读 · 0 评论 -
HDU 2147 kiki‘s game(博弈+NP状态图+规律)
题目传送门题意:两个人下棋,都绝顶聪明(反正博弈的人都是绝顶聪明的)。棋盘的规模是n*m(n行m列),初始的棋子位于右上角,也就是坐标(1,m)处,游戏的规则是移动这颗棋子,只能将它向左,下,或者左下三种方式移动,最先不能移动棋子的人输。现在先手是老王,问老王是否会赢?若胜利输出Wonderful!,否则输出What a pity!。思路:很明显的博弈题,但是和Bash博弈有点不一样,这题目我们没有办法,只能画NP状态图了,还记得NP状态的如下定义吗N:必胜局,其后继状态必存在一种比比局势PP:必败原创 2021-02-08 23:14:40 · 411 阅读 · 2 评论 -
HDU 1020 Encoding(模拟 + 双指针)
给你一个字符串,连续的子串需要形容为kx,如BBB形容为3B,如果k为1,则输出时忽略k通过双指针枚举即可,简单水题#include <iostream>#include <stdio.h>#include <math.h>#include <string.h>#include <string>#include <iomanip>#include <algorithm>#include <vector原创 2021-02-22 22:18:26 · 209 阅读 · 0 评论 -
HDU2072 单词数(简单字符串处理,去重)
题目让我们统计一行不同单词的个数,用STL的set默认去重就可以注意输入,可以用getline这个函数输入第一次遇见空格就统计一次注意末尾不存在空格,所以要另外统计一下,或者自己手动在原字符串末尾加一个空格也可以#include <iostream>#include <stdio.h>#include <math.h>#include <string.h>#include <string>#include <iomanip&原创 2021-02-22 15:55:39 · 239 阅读 · 0 评论 -
HDU4825 Xor Sum(异或贪心 + 前缀树 + 状态压缩)
这道题搞了我两个小时,hhh,新手崩溃题目贴上:题目大意:A这个人有一个数组,现在B每说出一个数,你都要在A里面找一个数,使得这两个数的异或是最大的,输出在A里面找出的数题目思路:将A这个人所有的数化成二进制进行压缩一下,我们先预存储所有A数组,注意,求二进制数的时候,我们要将得出的二进制字符串反转,因为根据贪心规则,我们每次优先变换高位的匹配数字,这样子可以确保我们得到的结果尽可能符号和尽可能大然后由于数字的二进制位串是不一致的,比如1和4,在经过上面的反转后分别为1和100,所以我们要在十进制原创 2021-02-26 17:29:14 · 272 阅读 · 0 评论 -
HDU2081手机短号(水题)
实实在在的水,不想多说。。。#include <iostream>#include <stdio.h>#include <math.h>#include <string.h>#include <string>#include <iomanip>#include <algorithm>#include <vector>#include <queue>#include <set&原创 2021-02-22 16:00:22 · 266 阅读 · 0 评论 -
HDU1015 Safecracker(模拟+枚举+字典排序)
这道题目有点小恶心哈题目贴上:题目大意:给你一个target值和一个字符串,首先约束以下条件26个大写字母对应的值分别是(A–1,B–2, C–3 …)在给定的字符串中找五个不重复的字母组成一个长度为5的字符串,而且字符串中每个从左到右对应的值是a,b,c,d,e满足 a - b^2 + c ^ 3 - c ^ 4 + d ^ 5 = target如果存在多个这样子的长度为5的字符串,输出字典排序最大的那个,如果不存在,输出“no solution”题目思路首先暴力枚举前四个字母,原创 2021-02-22 21:43:38 · 228 阅读 · 0 评论 -
HDU 1022 Train Problem I (模拟栈进出,送命题)
题目贴上这个题目折腾了有一个小时吧刚开始简单以为用dfs递归可以遍历所有情况,结果被事实狠狠打脸一开始我是知道这个题目是模拟栈的进出顺序的,但是我当时也只会判断这个出队序列是否可以由原序列通过栈来完成(我只会Yes和No的输出)但这个题目偏偏给我整一个进出栈的全过程,人傻了但是我作为一个数据结构学的不咋地的人来说,这个问题我一定要搞懂终于在一个多小时的推演出,顺利AC。(┭┮﹏┭┮)首先说一下这个题目的坑点:①题目说的最多有九个数字,分别不同,而且是 1 ~ n,我就是被这个 1 ~ n坑原创 2021-02-23 13:59:06 · 147 阅读 · 0 评论 -
HDU1023 Train Problem II(卡特兰数 + 模拟高精度大整数运算)
首先这道题目考察的是卡特兰数卡特兰数是什么自行百度,下面贴下公式如果 n在35以内,是可以直接用long long int来完成的如果超出,分两种情况① 题目要求取模的,可以用快速幂 + 费马小定理 + 逆元求组合数 来做② 如果题目不要求取模,那只能写大整数乘法和除法了(这种题目考察较少)本题就属于②这种情况代码如下,套一个大整数的模板类就可#include <iostream>#include <stdio.h>#include <math.h>原创 2021-02-23 15:33:13 · 231 阅读 · 0 评论 -
HDU1003 Max Sum(最大子段和区间 + 动态规划 )
题目贴上题目大意相信应该都知道了这里借助动态规划进行状态转移dp[i] 表示以 a[i] 结尾的最大子段和为了节省空间,可以将dp[i] 当 a[i] 来用最后考虑两种情况如果 dp[i-1] 小于0,说明上一个状态是一个结束状态,那么此时的dp[i],我们需要更新新的左端点索引值如果dp[i] 大于当前最大的子段和,将最大左,右端点索引值和最大有效值更新即可,千万不要写大于等于,因为如果你写了大于等于,而当前测试用例如果有多个解,就会被后面的值覆盖,这样子就不符合题目中输出最开始的左右端原创 2021-02-23 16:14:37 · 316 阅读 · 0 评论 -
HDU1720 A+B Coming(水题)
题目给你两个十六进制数,将他们转换为十进制求和实实在在的水题昂~~#include <iostream>#include <stdio.h>#include <math.h>#include <string.h>#include <string>#include <iomanip>#include <vector>#include <queue>#include <set>#in原创 2021-02-21 21:54:39 · 152 阅读 · 0 评论 -
HDU1062 Text Reverse(简单字符串处理)
思路:将每个被空格隔开的非空格字符串反转输出就可以,注意最后一个反转和读入就可以技巧:可以借助 getline读入带空格的字符串,可以借助STL的反转函数对string进行反转操作#include <iostream>#include <stdio.h>#include <math.h>#include <string.h>#include <string>#include <iomanip>#include <a原创 2021-02-21 22:28:50 · 375 阅读 · 0 评论 -
HDU1247 Hat’s Words(前缀树 + 字符串处理)
题目贴上:题目大意:首先给你一系列字符串,需要你找出是否存在某个字符串由给定的另外两个单词顺序串接而成,存在输出这个字符串,输入直至文件末题目思路:首先将所有单词存入一棵前缀树当中,然后遍历每个字符串,对字符串进行切割(最小长度为1,最大不能等于这个原字符串长度),将切割出来的两个字符串在前缀树中搜索,如果都存在,输出这个原字符串。题目的坑点:我设想了一种情况,比如给定有a,aa,而aa可以分割成两个a,我认为aa不符合情况,因为题目说是“另外两个字符串”,我潜意识认为这另外两个字符串应该不相同,然原创 2021-02-26 14:33:20 · 216 阅读 · 0 评论 -
HDU1017 A Mathematical Curiosity(模拟)
注意输入问题和每一块之间需要输出空行#include <iostream>#include <stdio.h>#include <math.h>#include <string.h>#include <string>#include <iomanip>#include <algorithm>#include <vector>#include <queue>#include <原创 2021-02-22 22:05:03 · 187 阅读 · 0 评论 -
HDU1671 Phone List(前缀树扩展)
题目贴上:题目大意:给你一系列号码,如果存在某个号码是其他号码的前缀,输出NO,否则输出YES题目思路:仍然是前缀树的裸题。只不过这道题目个平常前缀树不一样的地方是,这个题目里面存的全是数字,以前我们做的都是存储小写字母,这是第一个注意点,第二个注意点是,如果这个题目开1e6多空间会MLE,所以适当缩小数组到1e5(链表使用者忽略)如果对于每个字符,其在前缀树上终结点被访问的次数超过一次(肯定是有一次的,因为每个字符串的本身就是本身的前缀),则输出NO,否则输出YES。前缀树预处理一下,时间复原创 2021-02-26 13:32:36 · 184 阅读 · 0 评论 -
A-Left-Party(暴力法求因数个数)
题目传送门A-Left-Party I have an Ifter party at the 5th day of Ramadan for the contestants. For this reason I have invited C contestants and arranged P piaju’s (some kind of food, specially made for Ifte...原创 2020-04-12 15:18:39 · 309 阅读 · 0 评论 -
B-Hacking Cypher(暴力 / 双端余数构造)
题目贴上:题目大意:给你一个长度为一百万内的字符串,再给你两个整数a,b,要求在这个字符串某个位置切一刀(除了首和尾),左边字符串看成一个整数,且可以除尽a,右边的字符串看作一个整数,且可以除尽b,同时该右边字符串构成的整数无前缀0,。要求输出是否存在这样子的切法,存在输出YES,并且输出切开后左右两边的字符串,否则输出NO 大致思路:直接取模判断肯定是不现实的,会爆掉。我们可以开辟两个...原创 2020-04-12 16:48:28 · 310 阅读 · 0 评论 -
Codeforse Round #634(div3)解题报告(A-E2)
第一次达成度这么高(虽然是div3的比赛),相信以后会更好!提交传送门A.Candies and Two Sisiters题目大意:实实在在的水题,给你一个数n,你需要找出两个数a,b使a+b=n,但条件是1.a>b,2.a>0且b>0输出这样子的a,b有多少对思路:直接二半分(n-1)/2.#include<bits/stdc++.h>typede...原创 2020-04-21 14:46:41 · 480 阅读 · 2 评论 -
Codeforces Round #661 C. Boats Competition(贪心算法+暴力枚举)
题目地址: 传送门 题目贴上:1.题意:有n个人,每个人都有自己的重量w,现在n个人中只能每两个人组成一队,且每个人只能在一支队伍中,现在让你组建一支参赛队伍,要求如下:每个队伍的质量都是相等的,现问这n个人怎么组队可以使参赛队伍数量最大?2.思路:我们发现数据最大的w也才50,两个最大的w总和也才100,队伍最大也才100,明显可以暴力枚举解决 #include<bits/stdc++.h> #define f(a,b,c) for(a=b;a<=c;++a)原创 2020-10-06 17:24:13 · 327 阅读 · 0 评论 -
CFS round #618(Div 2)解题报告(A,B,C)
作为一名大一的新生参加这种比赛压力真的大啊,(第一次接触计算机语言),提交人数的那个数字无时无刻都在提醒我现在是废物!!,大佬太多了,革命还得努力啊!所以,我将我自己昨晚比赛的心得写一下:对于A题,难度还是不大的,题目贴上:A. Non-zerotime limit per test1 secondmemory limit per test256 megabytesinputstand...原创 2020-02-10 17:20:27 · 699 阅读 · 0 评论 -
Codeforces Round #674 B. Symmetric Matrix(水题)
题目地址:传送门题目贴上:题意,给你n种 2x2的矩阵,并且每种矩阵可以无限次使用,问你是否能组成mxm的矩阵(新矩阵必须是严格按照主对角线对称矩阵)思路:首先给你的2x2矩阵,很明显我们不能拼成奇数长宽的矩阵,所以如果m为奇数,直接输出no,最后考虑m为偶数的情况,很明显,如果给你n个2x2矩阵当中没有一个矩阵的主对角线对称矩阵,那肯定要无法组成更大的mxm型的对称矩阵代码:#include<bits/stdc++.h>using namespace std;struct Po原创 2020-10-05 22:27:19 · 725 阅读 · 1 评论 -
Educational Codeforces Round 96 (Rated for Div. 2) A. Number of Apartments(模拟+思维)
题目链接: 传送门题目贴上:题意: 给你一个整数n,这个n是否可以写成 a3+b5+c7=n这种形式(a,b,c>=0),如果答案有多种,随便输出一种思路:我们观察一下可以可以对a,b,c大致规划一个范围(因为题目n是<=1000的整数),a最大是333,因为3333=999,和1000最接近,b最大是200,c最大是142。我们先试一下三种循环的暴力方法吧,我试了试,直接在test5,超时了(下面是超时代码) #include<bits/stdc++.h>原创 2020-10-13 17:49:06 · 260 阅读 · 0 评论 -
codeforse比赛:Noobs Round #2 (Div. 4) by Rudro25
菜鸡也就只配打打这种难度的比赛o(╥﹏╥)o两个小时的比赛,我在1:57顺利全部AC!!点这—>题目传送门A题:Directional Move(模拟)题目大意:一个人初始是面向东边,现在给你一个二进制字符串,如果当前字符串是‘0’,则他向右转90°,如果是‘1’,则向左转90°,问最终它朝向哪?题目思路:直接模拟,我们可以设:0东,1南,2西,3北右转就是当前 (当前位置数 + 1)%4,向左转就是 (当前位置数+3)%4,输出最终结果就可以代码:#include<bits原创 2021-02-21 12:41:05 · 503 阅读 · 0 评论 -
Educational Codeforces Round 96 (Rated for Div. 2)C. Numbers on Whiteboard(贪心算法(水题))
题目链接: 传送门题目贴上:题意:,给你 1-n个数,你可以对两个不同位置的数进行合并,比如a和b,合成数变成(a+b)/2,结果四舍五入。放在数组末尾,删除原来的a和b,举例子吧就这样子两两合并,最后合成后数组肯定就剩下一个数字,问你怎么合并使最后一个数字最小,输出最小数,并且输出每次合并的两个数思路: 每次从最后开始,两两合并,肯定最小,而且这样子合并最小值答案是唯一的(不知道为什么的直接手动写几个例子试一试,)而且最小数固定为2.#include<bits/stdc++.h>原创 2020-10-13 19:23:16 · 297 阅读 · 0 评论 -
北京理工大学第七届新生赛(划水)
前天花了一下午(大概四个多小时吧)品尝了一些985高校的新生赛题目,比我们学校的题目难多了(可能是我太菜了hhh),总而言之,发现题目综合性很强,重点考察思维和逻辑,以此写写博客记录一下,以后有时间再补补其他题目(n年后)题目地址点这里B - The Secret of Time题目贴上:真·签到题(比较经典的签到题)题意: 让你找一个数n,其平方数是16位,而且必须满足一下条件(第一位是1,第三位是9,第五位2,第七位6,第九位0,第十一位8,第十三为1,第十五位7),随便输出一个符合条件的n原创 2020-11-07 01:18:44 · 658 阅读 · 2 评论