C++刷题笔记

1、关于大整数问题

1
2
3
long long a;
unsigned long long b;
cin>>a>>b;

2、关于输出精度问题

1
2
3
4
5
6
#include <iomanip.h> 
int main()
{

cout.setf(ios::fixed);
cout<<<<setprecision(6)<<endl; //固定小数点后6位
}

3、关于vector的二维数组

1
2
3
vector<vector<int> >dp(n);//定义n维的数组,每一维列数未定(初始为0),GCC
vector<vector<int> >dp(n,0);//与上相同,但是在GCC中编译不过,VS2010可以通过
vector<vector<int> >dp(n,vector<int>(m,0));//n行m列数组,初始都为0;GCC,VS2010

4、关于std::assign用法

1
2
3
vector<int> a(10,9);
vector<int> b;
b.assign(a.begin(),a.end());//The range used is [first,last)

5、关于字符串截取

1
2
string str("abcdf");
str.substr(0,3); //函数原型string substr (size_t pos = 0, size_t len = npos) const;

6、关于三角函数

1
2
3
#include <cmath>
const double pi = acos(-1); //获取pi的值
double thea = angle * pi / 180; //angle的弧度制

7、关于幂

1
2
#include <cmath>
pow(double x, Int y); //x^y,x必须是浮点数,不能为整数

8、关于int最大值,最小值的表示方法

1
2
int a = 1<<31;            //32位int最小值
int b = int(1<<31) - 1; //32位int最大值

9、关于大数

1
2
typedef long long LL;
const LL Inf = (LL)1e18;

10、个人出WA后,犯的错误总结
(1)、逻辑错误(例如:微软员工福利,把结果放在了循环里面)
(2)、题意理解错误(仔细读题)
(3)、容易被样例误导(例如,腾讯的简单游戏,样例只有两组护卫队,其实实际数据有n支护卫队,导致逻辑错误)
(4)、几何题(把数学公式推导完毕后,再写)
(5)、关于图、树的问题(建树,建图比较重要)
(6)、对于小规模的题,一般暴力枚举可以搞定。

11、重定向输入输出流

1
2
3
4
freopen("in.txt", "r", stdin);
freopen("out.txt", "W", stdout);
fclose(stdin);
fclose(stdout);