一个 ACM 蒟蒻的掉坑手册

  • 如何控制每两个数之间有空格,而最后一个数之后没有空格?解决方法之一是:第一个数之前不加空格,而其后每个数之前加空格。而通过一个标识变量可以判断出是否是第一个数。
  • 初做多实例测试,要注意变量赋初值的位置。
  • 流可以加速,方法是关闭和 stdio 的同步,即调用
ios::sync_with_stdio(false);
  • 未指定输入量的输入框架
while(scanf("%d",&a)!=EOF){} 
//或 
while(cin>>a){}
  • 能写成函数尽量写成函数,解耦、复用、易于定位错误,不要把 main() 写的又臭又长,出错了改都不好改。
  • memset 函数可以初始化数组。这条命令这在你已经修改了数组之后又想将它重置为全 0 特别有用(然鹅它是操作字节,也就初始为 0 /- 1 比较有用)。
#include <cstring>
int arr[100]={0};
memset(arr,0, sizeof(arr));
  • CPP int&string 互相转换
#include <iostream>
#include <sstream>

using namespace std;

int main(){
    int x=10000,y;
    stringstream ss;
    string s;
    ss<<x;
    s=ss.str();
    cout<<s.length()<<endl;
    ss>>y;
    cout<<y/2<<endl;
}
  • 重定向:
freopen("test.in", "r", stdin);
freopen("test.out", "w", stdout);

不能用在 C ++ 里。