这周打了几场div2,暴露了我很多问题。这几场的div2给了我全新的体会。题目不难,也不是很难理解,但就是通过不了,尤其是这几场的第一题,属实为难到我了,倒不是说题目有多难,答案敲出来的并没有问题,要么是时间过长,要么就是Runtime error on test,后来我查了一下,出现Runtime error on test常见无非就是这几种“数组越界、堆栈溢出、数组过大,除以了0”等等,后来更改以后的确是改对了。
总的来说,这几场div2对代码的要求不高,但是对数学逻辑思维的要求很高,很多时候我都是能敲出代码,但是经常超时,代码不通过。在每次比赛后我看答案时,我会经常突然感受到我和大佬之间思路的差距,就是对运行效率的把控,能学到很多东西。就这几次做题经历来说,又搞懂了几个小知识点,我整理在这,以后忘了不用再去现找了
比如说不用科学计数法和保留小数位数,
cout.setf(ios::fixed,ios::floatfield);//十进制计数法,不是科学计数法
cout.precision(x);
取余公式
(a+b)%c = (a%c+b%c)%c
(a*b)%c = ((a%c)*(b%c))%c
setiosflags(ios::skipws 忽略前导空白
setiosflags(ios::uppercase) 16进制数大写输出
setiosflags(ios::lowercase) 16进制小写输出
setiosflags(ios::showpoint) 强制显示小数点
setiosflags(ios::showpos) 强制显示符号
将一个字符串转化为数
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
template <class T>
inline T fromString(const string &str)
{
istringstream is(str);
T v;
is>>v;
return v;
}
int main()
{
string s="465153";
int a=fromString<int>(s);
cout<<a<<endl;
return 0;
}
这就是我这几场打完、加上查资料总结的知识点,越积越多,希望以后能够有所长进,先争取做出ABC来!!