摘要: 基本模板 int k;char c;while(c>='0'&&c<='9'){ k=k*10+c-'0'; c=getchar();} 优化版 int k;char c;while(c>='0'&&c<='9'){ k=k<<1+k<<3+c^48; // 相当于k*10,相当于c-‘0’; c= 阅读全文
posted @ 2023-05-23 16:57 尼古丁不真 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 在记忆化搜索中,dfs的参数需要尽可能的少。 不应该把没有影响边界的参数放进去。 想要剪枝,就要尽可能的把能剪枝的参数加进去。 阅读全文
posted @ 2023-05-14 18:01 尼古丁不真 阅读(16) 评论(0) 推荐(0) 编辑
摘要: min和max中比较的两个参数必须是相同类型的,比如a是一个string类型的变量, min(a.size(),3)这样就是不合法的,因为size()返回的是一个无符号整型, 阅读全文
posted @ 2023-05-03 17:52 尼古丁不真 阅读(15) 评论(0) 推荐(0) 编辑
摘要: # Quasi Binary ## 题面翻译 **题目描述** 给出一个数n,你需要将n写成若干个数的和,其中每个数的十进制表示中仅包含0和1。 问最少需要多少个数 **输入输出格式** 输入格式: 一行 一个数 n(1≤n≤10^6) 输出格式: 最少的数的个数,并给出一种方案。 ## 题目描述 阅读全文
posted @ 2023-04-23 14:57 尼古丁不真 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 关于gets函数和scanf函数,都会在末尾上加‘\0’的,要不然字符串就无法结束了。 他们的不同在于,scanf在碰到缓冲区的空字符时(TAB,空格,换行,回车)时会自动截断并添加0. 而gets函数是在碰到回车键才会截断字符串并添加0. 比如用输入字符串:abcdefg hijk回车用scanf 阅读全文
posted @ 2022-12-23 15:59 尼古丁不真 阅读(23) 评论(0) 推荐(0) 编辑
摘要: //查找左边界 SearchLeft 简写SL int SL(int l, int r) { while (l < r) { int mid = l + r >> 1; if (check(mid)) r = mid; else l = mid + 1; } return l; } //查找右边界 阅读全文
posted @ 2022-12-17 13:54 尼古丁不真 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 笔者在做这道题时,苦思冥想都想不出来如何只用一行完成,最后经过提醒想起了三目运算符这个小东西 c4 = x>0?'+':'-'; x=abs(x); c3 = x%10 +48; 阅读全文
posted @ 2022-12-03 19:41 尼古丁不真 阅读(139) 评论(0) 推荐(0) 编辑