Loading

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 & 否则可能没用

posted @ 2026-03-19 10:33  Antibiotics  阅读(14)  评论(0)    收藏  举报