3.15 模拟赛小结
题目比较简单,1小时40分钟就写完了
但是,比完了我才知道ACM计时是从比赛开始到通过题目的时间算的,我一直都是按顺序一个一个写的啊啊啊啊
没啥算法,记录一下有点忘记的语言方面的东西
保留小数位
cout 的写法,需要头文件 <iomanip>
cout << fixed << setprecision(2); // 设置一次即可
double a = 1.2;
cout << a;
// output: 1.20
用 cout.unsetf(ios::fixed) 可以恢复默认
printf 的写法
double a = 1.2;
printf("%.2f", a);
不定长数据的输入
使用 cin.eof() 会受到末尾空格或者回车的影响,建议这样写
int n;
while (cin >> n) {
cout << n;
}
或者用 C 写
int n;
while (scanf("%d", &n) != EOF) {
printf("%d", n);
}
sort 用法
sort 是头文件 <algorithm> 中提供的排序函数,非常好使
int arr[5] = {5, 1, 4, 2, 3};
sort(arr, arr + 5); // 从小到大排
sort(arr, arr + 5, greater<int>()) // 从大到小排
自定义类型的排序,有两种方法
struct num {
int x;
char *s;
};
num nums[] = {{2, "two"}, {1, "one"}, {3, "three"}};
一个是定义自己的比较函数
sort(nums, nums + 3, [](const num &n1, const num &n2){return n1.x < n2.x;});
或者是重载 < 运算符,然后直接 sort(nums, nums + 3) 即可
bool operator<(const num &n1, const num &n2) {
return n1.x < n2.x;
}
注意: 参数的类型很重要,应该写 const & 否则可能没用

浙公网安备 33010602011771号