10 2020 档案
摘要:其实原本是想用贪心去做的,但是因为涉及到负数乘法,麻烦一些,只好暴力了 #include <iostream> #include <algorithm> #include <cmath> using namespace std; bool cmp(int x, int y) { return x >
阅读全文
摘要:这个题目感觉和贪心关系不是很大,思路也很好理解的哦! 其实n >= 37就会无解 不然n为偶数全输出8 不然输出n / 2个8和一个9 代码,452ms: #include <iostream> using namespace std; int main() { long long n; cin >
阅读全文
摘要:CF的题意真是令人看不懂哇!谢谢 @lfc20070515 在题解中的题目翻译 本体的主要思路是贪心,先把每一位加起来,如果已经 >= k直接输出0 不然sort一遍,因为把小的数变为9会比大的数变为9好得多,如果这是每位的和 >= k,输出 代码,1.05s: #include <iostream
阅读全文
摘要:这题比较简单,套用公式就好了,不用转int,直接用double算就OK的,677ms,目前第3 代码: #include <iostream> #include <algorithm> using namespace std; double m[10], w[10], score[10]; doub
阅读全文
摘要:本题难度不大,就像第一篇题解,就是暴力算,但这个数据类型是个坑,还真只能用long double。 unsigned long long long long double unsigned int 都会WA 害得我就这水题WA了几次 那么,代码: #include <iostream> using
阅读全文
摘要:我这不知道什么时候做的了……思路和大家应该是一样的了,不说多的了,就贴个代码吧: #include <cstdio> #include <iostream> using namespace std; char a[1005][1005]; int cn[1005], cm[1005]; int ma
阅读全文
摘要:这道题目是最简单的贪心问题啦!用STL的二元结构体pair或者用struct,class都可以解决的! 那么我用的是pair,比struct似乎是慢了一点,1.27s,自定义排序 + sort #include <iostream> #include <utility> #include <algo
阅读全文
摘要:这题一开始我还想着暴力,结果暴力刚刚打出来,TLE: #include <iostream> #include <cstring> using namespace std; char s[200005]; int main() { int n, ans = 0; cin >> n >> s; n--
阅读全文
摘要:这道题目有意思!dalao都用着hash,表示不懂,只好跟着第一篇题解的思路喽!代码量比hash少得多得多啊! 其实只要将n先除以2,前半段匹配后半段,后半段匹配前半段,注意n % 2 == 0要特判,不然会WA 3个点,0分! #include <iostream> #include <cstri
阅读全文
摘要:摆明的递归题目,先来看看解题思路 首先while读入char类型的ch 如果是]那么就break 如果是T就读入空格然后再构造char类型的字符和string的字符串,每次读入一直到[停止读入,并且随时将字符串加上这个字符,再递归结果乘以这个字符串转成数字的结果 另外的前进后退就简单了 代码,20m
阅读全文
摘要:这是个集合的题目,因为大家都知道set可以自动去重,我们就借助这个特性去做。 for循环n次,每次读入这个字符串然后遍历每个字符,是'/'就insert,因为一开始也是'/'那就输出size() - 1,还要注意的是因为最后不是'/',循环完要再insert一次: #include <iostrea
阅读全文
摘要:这个题目的难度似乎有点难啊!!! 提示1很简单,只需要把字母转为.,空格以及其他字符还是其他字符 提示2的难度稍稍增加,但也难不过我们!我们先找到三分之一,四舍五入用round 提示3是最坑人的,难啊!先要在提示2记录下来三分之一的最后一个字符所在的下标,提示3从下表这里开始往后找元音,找得到那就先
阅读全文
摘要:这个题目处理不难,但是这个读入真是坑爹啊! 说说我的经历: 代码没问题,scanf提交,MLE。下载数据,什么玩意1.20s,1ms都不用就出结果了,这…… cin提交,WA3个点,\n出的乱子 cin.get以及getchar提交,MLE…… 终于,AC喽: #include <iostream>
阅读全文
摘要:本题是练习递归的好题目!!! 先说下思路吧: 首先,用scanf(%c, ch) != EOF一直读入 如果是'a'的话ans + 1 如果是左括号那么就将ans加上再次递归的结果,最后可以得到括号中全部的结果 如果是右括号就返回ans,因为括号匹配,不可能突然返回答案的 如果是|那么就返回ans和
阅读全文
摘要:这题目有点意思!一开始一定要读清楚题意,第一天看到题,第二天才想到其实吧,这个t,也就是移动的位数一定是要使结果的E最多的,所以其实我们可以在原串中找到出现次数最多的字母,然后往回减(因为是密文转明文)需要用到mapAC此题,12ms: #include <iostream> #include <m
阅读全文
摘要:这个题目主要是怕TLE,不用hash之类的东西,map就轻松搞定,但细节值得留意 首先先分析一下算法,每次读入一个字符,如果是间隔符就把ans加到前面这个单词上,否则我们创造一个字符串去累加这个单词 (很多细节导致WA) 底下AC代码: #include <iostream> #include <m
阅读全文
摘要:是个模拟题目,每次将a * 10并且把a %= b,判断a÷b是否为c就好了,代码如下: #include <iostream> using namespace std; int main() { int a, b, c; cin >> a >> b >> c; for(int i = 1; i <
阅读全文
摘要:模拟即可,只需要把输入的字符串中WUB删掉,但重点是要处理空格! 首先通过样例2可以发现,如果两个字符串中有WUB,那么会产生一个空格。 那如何处理呢?很简单,遍历一遍,发现前面那个是WUB就输出一下".",代码如下,1.63ms,有注释: #include <iostream> #include
阅读全文
摘要:说要‘c’少,c可以一个都没有,水 首先只要顺序输出bbaa就永远不可能有3位的回文,比如: 输入: 15 输出: bbaabbaabbaabba 代码如下: #include <iostream> #include <cstring> using namespace std; string ans
阅读全文
摘要:STL大法好哦! 本题我采用的是unordered_map+string+暴力(n <= 200,限时2s暴力挺快的,不会TLE的) 那怎么做呢? 首先,我们读入一个字符串,用我们双重循环,枚举自区间,注意每次map都要clear,每次读取map的size并和maxn(max好像定义过,再定义成变量
阅读全文
摘要:其实我们只需要按照程序模拟即可,读入一个字符串,在前面加前导0,同时做一个判断回文函数: bool huiwen(string s) { string x = s; reverse(x.begin(), x.end()); return x == s; } 接下来511ms的简单代码来啦: #inc
阅读全文
摘要:有些人直接找规律,我是不知道的qwq,于是只好模拟,反正不会超时哈哈哈 代码(long long,用不用无所谓,代码有注释): #include <iostream> using namespace std; int main() { long long a, b, x = 1, w = 1; ci
阅读全文
摘要:简洁的题意: 读入一个字符串,将是大写的字符所在的英文字母表的索 引加到a中,将是小写的字符所在英文字母表的索引加到b 中,输出a-b STL!! 首先,a索引是1,A也是1,我们需要通过map或者速度更快的unordered_map(unordered_map496ms,比map528ms快!)来
阅读全文
摘要:水题! STL大法好! 先来分析一下,可以得知,只要有一种字符出现过两次以上,就可以和别的字符合并,就是Yes,注意字符串长度为1也是Yes 那怎么统计呢?对了,map!!! 代码如下(char[]和unordered_map和string都有哦): #include <iostream> #inc
阅读全文
摘要:水发题解,求过 好,来看看哈! 首先abs(a)和abs(b)都小于1000 a,b都有可能是负数,那么x其实就是-abs(b) ~ abs(b) 代码如下,用long double,double现在似乎过不去qwq: #include <iostream> #include <cmath> usi
阅读全文
摘要:STL大法好,来一个map + string吧 其实很简单,每次用6次for循环读入一个string,然后和一个y,每次读入把读入的加到y后面,循环变量大于等于2就加空格!,然后通过map <string, int>类型每次加一,代码如下: #include <iostream> #include
阅读全文
摘要:这题我用的是string 首先横着竖着都好弄!重点在于斜的 于是我想到了个方法,只要找到一个不为".",就判断是否有斜线三个,20ms,代码: #include <iostream> #include <cstring> using namespace std; string s[35]; int
阅读全文
摘要:这题感觉没有省选-吧,我要去入门的都能AC。 我采取的是递归读入+map判断重复,具体代码如下: #include <cstdio>//比cin快 #include <map>//map头文件 using namespace std;//标准命名空间 map <int, bool> mp;//创造m
阅读全文
摘要:原来SPOJ都一个测试点啊? 好吧,这题大家while啊?我用的是递归! 首先因为大小写都一样,所以我写了个全换成小写的函数: char tounder(char x) { if(x >= 'A' && x <= 'Z') { return x - 'A' + 'a'; } else { retur
阅读全文
摘要:这个题目一看就是大的对小的,所以要从大到小排序,因为已经有人用sort了,这里就来一发map+桶排吧! 先来解释一下桶排为什么用map,首先这道题目限时2s,正常桶排是要从1~MAXai,这里ai≤10^9,1s就用掉了,加上两遍n次遍历,2s可能会TLE。 而map有个好处: map <int,
阅读全文
摘要:这个题目先要仔细审题,特别注意是“重测”,不是“再测”。 先想想,如果我们要将平均分变为5,肯定把越少的分先重测变为5好对吧? 那么既然要排序,那么STL久登场喽,用sort轻松解决。 第二个问题,四舍五入: 在cmath库中,有个叫round的函数,可以实现四舍五入 round是四舍五入函数,头文
阅读全文
摘要:首先我写了个判断是否回文的函数: bool huiwen(string x)//判断是否回文 { string y = x; int z = y.length(); for(int i = 0; i <= z / 2; i++)//reverse速度不行,不至于TLE,不过自己写好 { swap(y
阅读全文
摘要:我这个写法可能跟大家有些不同 我是这样想的 每次读入的这个字符串先判断是否是回文,如果是,那么直接输出,所以我构造了一个回文函数: bool huiwen(string x) { string y = x; reverse(y.begin(), y.end());//翻转 return y == x
阅读全文
摘要:其实代码挺简单,不过用了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;//
阅读全文
摘要:STL大法好,数组不也能用吗…… 模拟题目,我使用的是vector,跑的还挺快的,772ms,目前最优解! 代码里有注释 #include <cstdio> #include <vector>//vector头文件 using namespace std; vector <int> vec;//定义
阅读全文
摘要:代码很简单,逆推其实也很简单,和加密方法一样,其实也是一样的,速度还是挺快的,不知怎么回事cin240ms排第三,快读竟然变成272ms……: 快读代码: #include <iostream> #include <algorithm> #include <cstring> using namesp
阅读全文
摘要:STL!!! 最近做题喜欢上了STL,来一发map 因为: 找出现次数最多的长度为2的子串 所以说map需要为 <string, int>,每两位加一次,类似桶排序 但是问题来了,string的某一下标的数据是char类型,如何转换成string呢? 告诉你吧: 在c++中有一个函数 string
阅读全文
摘要:STL大法好,602ms,速度第4 代码来了,用的是STL库的string和布尔类型flag的搭配 代码有注释 #include <iostream> #include <cstring>//string头文件 using namespace std; int main() { int n; boo
阅读全文