csp记录

做了一些csp基础题,记录了结题过程中自己没有考虑的地方以及一些技巧。

求中位数
1
2
3
4
5
6
7
8
9
/*
* 求n个数的中位数
*
* 对于一组有有限个数的数据来说,它们的中位数是这样的一种数:这群数据里的一半的数据比它大,而另外一半数据比它小。
* 计算有限个数的数据的中位数的方法是:把所有的同类数据按照 **大小的顺序排列** 。
* 数组的排序可以使用c++ algorithm里面的sort()和reverse()
* 如果数据的个数是奇数,则中间那个数据就是这群数据的中位数;
* 如果数据的个数是偶数,则中间那2个数据的算术平均值就是这群数据的中位数。
*/

数组赋初值
1
memset(arr, 0, sizeof(arr[0])*n);

格式化输出(常用)
  • setw(n)

    预设宽度,setw只作用于紧随其后的部分,当输出宽度大于n时,setw不生效

  • setfill(char c)

    就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充

  • dec/hex/otc

    进制转换

  • setprecision(long f)

    • 使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。
    • 如果setprecision(n)setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。

setiosflags(ios::fixed)是用定点方式表示实数。


常用函数
函数 描述
double pow(double, double); 假设第一个参数为 x,第二个参数为 y,则该函数返回 x 的 y 次方。
double sqrt(double); 该函数返回参数的平方根。
int abs(int); 该函数返回整数的绝对值
double fabs(double); 该函数返回任意一个十进制数的绝对值。
double floor(double); 该函数返回一个小于或等于传入参数的最大整数