随笔分类 -  题解

摘要:简洁的题意: 读入一个字符串,将是大写的字符所在的英文字母表的索 引加到a中,将是小写的字符所在英文字母表的索引加到b 中,输出a-b STL!! 首先,a索引是1,A也是1,我们需要通过map或者速度更快的unordered_map(unordered_map496ms,比map528ms快!)来 阅读全文
posted @ 2020-10-11 11:45 HappyBobb 阅读(8) 评论(0) 推荐(0)
摘要:水题! STL大法好! 先来分析一下,可以得知,只要有一种字符出现过两次以上,就可以和别的字符合并,就是Yes,注意字符串长度为1也是Yes 那怎么统计呢?对了,map!!! 代码如下(char[]和unordered_map和string都有哦): #include <iostream> #inc 阅读全文
posted @ 2020-10-11 11:10 HappyBobb 阅读(8) 评论(0) 推荐(0)
摘要:水发题解,求过 好,来看看哈! 首先abs(a)和abs(b)都小于1000 a,b都有可能是负数,那么x其实就是-abs(b) ~ abs(b) 代码如下,用long double,double现在似乎过不去qwq: #include <iostream> #include <cmath> usi 阅读全文
posted @ 2020-10-09 17:38 HappyBobb 阅读(6) 评论(0) 推荐(0)
摘要:STL大法好,来一个map + string吧 其实很简单,每次用6次for循环读入一个string,然后和一个y,每次读入把读入的加到y后面,循环变量大于等于2就加空格!,然后通过map <string, int>类型每次加一,代码如下: #include <iostream> #include 阅读全文
posted @ 2020-10-08 22:07 HappyBobb 阅读(9) 评论(0) 推荐(0)
摘要:这题我用的是string 首先横着竖着都好弄!重点在于斜的 于是我想到了个方法,只要找到一个不为".",就判断是否有斜线三个,20ms,代码: #include <iostream> #include <cstring> using namespace std; string s[35]; int 阅读全文
posted @ 2020-10-08 09:16 HappyBobb 阅读(13) 评论(0) 推荐(0)
摘要:这题感觉没有省选-吧,我要去入门的都能AC。 我采取的是递归读入+map判断重复,具体代码如下: #include <cstdio>//比cin快 #include <map>//map头文件 using namespace std;//标准命名空间 map <int, bool> mp;//创造m 阅读全文
posted @ 2020-10-05 20:49 HappyBobb 阅读(4) 评论(0) 推荐(0)
摘要:原来SPOJ都一个测试点啊? 好吧,这题大家while啊?我用的是递归! 首先因为大小写都一样,所以我写了个全换成小写的函数: char tounder(char x) { if(x >= 'A' && x <= 'Z') { return x - 'A' + 'a'; } else { retur 阅读全文
posted @ 2020-10-05 19:22 HappyBobb 阅读(18) 评论(0) 推荐(0)
摘要:这个题目一看就是大的对小的,所以要从大到小排序,因为已经有人用sort了,这里就来一发map+桶排吧! 先来解释一下桶排为什么用map,首先这道题目限时2s,正常桶排是要从1~MAXai,这里ai≤10^9,1s就用掉了,加上两遍n次遍历,2s可能会TLE。 而map有个好处: map <int, 阅读全文
posted @ 2020-10-04 10:44 HappyBobb 阅读(15) 评论(0) 推荐(0)
摘要:这个题目先要仔细审题,特别注意是“重测”,不是“再测”。 先想想,如果我们要将平均分变为5,肯定把越少的分先重测变为5好对吧? 那么既然要排序,那么STL久登场喽,用sort轻松解决。 第二个问题,四舍五入: 在cmath库中,有个叫round的函数,可以实现四舍五入 round是四舍五入函数,头文 阅读全文
posted @ 2020-10-03 17:10 HappyBobb 阅读(10) 评论(0) 推荐(0)
摘要:首先我写了个判断是否回文的函数: bool huiwen(string x)//判断是否回文 { string y = x; int z = y.length(); for(int i = 0; i <= z / 2; i++)//reverse速度不行,不至于TLE,不过自己写好 { swap(y 阅读全文
posted @ 2020-10-02 19:25 HappyBobb 阅读(8) 评论(0) 推荐(0)
摘要:我这个写法可能跟大家有些不同 我是这样想的 每次读入的这个字符串先判断是否是回文,如果是,那么直接输出,所以我构造了一个回文函数: bool huiwen(string x) { string y = x; reverse(y.begin(), y.end());//翻转 return y == x 阅读全文
posted @ 2020-10-02 18:28 HappyBobb 阅读(8) 评论(0) 推荐(0)
摘要:其实代码挺简单,不过用了1.67s,呜啊 代码有注释 #include <iostream> using namespace std; int main() { int n, m, sum = 0; cin >> n; for(int i = 1; i <= n; i++) { sum = 0;// 阅读全文
posted @ 2020-10-02 18:05 HappyBobb 阅读(5) 评论(0) 推荐(0)
摘要:STL大法好,数组不也能用吗…… 模拟题目,我使用的是vector,跑的还挺快的,772ms,目前最优解! 代码里有注释 #include <cstdio> #include <vector>//vector头文件 using namespace std; vector <int> vec;//定义 阅读全文
posted @ 2020-10-02 18:03 HappyBobb 阅读(11) 评论(0) 推荐(0)
摘要:代码很简单,逆推其实也很简单,和加密方法一样,其实也是一样的,速度还是挺快的,不知怎么回事cin240ms排第三,快读竟然变成272ms……: 快读代码: #include <iostream> #include <algorithm> #include <cstring> using namesp 阅读全文
posted @ 2020-10-01 21:05 HappyBobb 阅读(8) 评论(0) 推荐(0)
摘要:STL!!! 最近做题喜欢上了STL,来一发map 因为: 找出现次数最多的长度为2的子串 所以说map需要为 <string, int>,每两位加一次,类似桶排序 但是问题来了,string的某一下标的数据是char类型,如何转换成string呢? 告诉你吧: 在c++中有一个函数 string 阅读全文
posted @ 2020-10-01 18:04 HappyBobb 阅读(11) 评论(0) 推荐(0)
摘要:STL大法好,602ms,速度第4 代码来了,用的是STL库的string和布尔类型flag的搭配 代码有注释 #include <iostream> #include <cstring>//string头文件 using namespace std; int main() { int n; boo 阅读全文
posted @ 2020-10-01 17:17 HappyBobb 阅读(10) 评论(0) 推荐(0)
摘要:这题是个暴力题目,挺水 代码来了,2重循环,1.06s #include <cstdio> inline int read()//快读 { int x = 0; char ch = getchar(); while(ch >= '0' && ch <= '9') { x = (x << 1) + ( 阅读全文
posted @ 2020-09-30 21:45 HappyBobb 阅读(9) 评论(0) 推荐(0)
摘要:分析题目,其实就是求非0值且不同的数的个数,用的是set,花了5秒多,这…… 先看代码: #include <iostream> #include <set> using namespace std; set <int> st; int main() { int n, x, y = 0; cin > 阅读全文
posted @ 2020-09-30 17:57 HappyBobb 阅读(14) 评论(0) 推荐(0)
摘要:如果用循环应该会超时,所以这里用数论比较好 先分析题意得知,可以加上去,也可以减下来 减下来是 n mod m (n % m) 往上加是 m - n mod m (m - n % m) 为什么呢? n % m的结果就是多出的,减掉整除 m - n % m的结果就是少的,加起来也可以整除 代码: #i 阅读全文
posted @ 2020-09-30 17:18 HappyBobb 阅读(15) 评论(0) 推荐(0)
摘要:这题其实不需要真得按照题意模拟,经过研究,其实我们发现,如果两个数之间绝对值大于等于2,就不行,否则可以 代码,不用数组: #include <iostream> #include <cmath> using namespace std; int main() { int n, a, b; cin 阅读全文
posted @ 2020-09-29 21:48 HappyBobb 阅读(9) 评论(0) 推荐(0)