让cin变快
std::ios::sync_with_stdio(false);//这条语句可以使用cin,和cout几乎和scanf和printf一样快
cin.tie(0),cout.tie(0);//解除cin和cout的绑定
ACM中的无穷大常量 0x4个3f
const int INF=0x3f3f3f3f;//*2依然不会溢出
const int INF=0x7fffffff;//真正的无穷大量
避免浮点数的缺少
double bielv=1.5;
原来:money*100*(beilv-1)
后来:money*10*(beilv*10-10)
或者:将小数变成相似的小数
原来:min(10000,(int)(money*100*(beilv-0.1))//另外min函数的使用需要两边你都为同类型的
变成:min(10000,(int)(money*100*(beilv-0.999999999999))
auto代替长长的迭代器进行容器遍历
vector<int >vec;
vector<int >::iterator it =vec.begin();
auto it =vec.begin;
sign main()主函数
这样的代码是因为上面有人
#define int long long
所以下面用int main()会变成long long main()
又因为int main等价于signed main 所以不会影响
读入二维字符串
可能因为题目给的输入数据不规范scanf()读到了'\n',那么需要cin>>就可以安全通过
或者
for(int i=1;i<=n;i++){
scanf("%s",a[i]+1);//不管m列,直接读入每一行
}
温馨提示,对于多组侧是样例t的题
记得将队列的定义,数组的定义放在这不然就超时
结构化绑定
typedef pair<int, int> PII;
vector<PII> v;
for(auto & [x,y] : v)//[]里面自动找到v的两个元素
{
cout<<x<<' '<<y<<' ';
}
位运算
for (int i = h[u]; ~i; i=ne[i]) {
dfs(e[i],depth+1);
}
//等价于 因为~a =-a+1,所以当i==-1 ,~a会等于0,for循环退出
for (int i = h[u]; i != -1; i=ne[i]) {
dfs(e[i],depth+1);
}
----
if(dep&1)
++ans;
//当dep==奇数的时候 ans++
等价于 if(dep%2!=0) ++ans