03 2023 档案

摘要:以下的内容来自 维基百科:模幂 从右到左的二位算法 第三种方法结合了第二种算法和平方求幂原理,使所需步骤大大减少,同时也与第二种方法一样减少了内存占用量。 首先把e表示成二进制,即: e=i=0n1ai2i 此时e的长度为n位。对任意i($0 阅读全文
posted @ 2023-03-20 20:30 Revc 阅读(59) 评论(0) 推荐(0) 编辑
摘要:猪国杀解题的思考过程 阅读全文
posted @ 2023-03-18 20:36 Revc 阅读(297) 评论(0) 推荐(1) 编辑
摘要:问题来自 P1902 刺杀大使,在最初的实现中 DFS 中一段代码如下: visited[x2][y2] = true; flag = dfs(v, x2, y2); visited[x2][y2] = false; if (flag) { break; } 从格点([x2][y2]) 出发进行搜索 阅读全文
posted @ 2023-03-06 21:52 Revc 阅读(99) 评论(0) 推荐(0) 编辑
摘要:画出算法的演示图,展现算法对某个实例详细的执行过程,可以很清晰地把算法写下来。 注意以下的几点: 实例的规模应该尽可能小,便于人工分析算法的执行过程; 实例应该尽可能包含各种特殊情况,以确保跟着演示图编写的代码也会考虑到这些特殊情况; 演示图应当简单、简洁、清晰。 通过参考这篇快速排序的博客(排序算 阅读全文
posted @ 2023-03-06 20:25 Revc 阅读(66) 评论(0) 推荐(0) 编辑
摘要:单个跑正常,多个跑异常;因为上一个测试的输入内容还没有被读完就 goto/break/continue 了。 这种情况,需要读取上一个输入中剩余的部分。 例子: std::getline(std::cin, s); // read the leftovers 问题来源:https://www.luo 阅读全文
posted @ 2023-03-06 20:20 Revc 阅读(27) 评论(0) 推荐(0) 编辑
摘要:这两种写法效率依赖处理器、编译器和标准库。一般来说循环内的重复操作的性能差于循环外的单次操作。 参考文献 Which is more efficient to use in a for loop, i<sqrt(n) or i*i<(n)? 阅读全文
posted @ 2023-03-06 19:21 Revc 阅读(46) 评论(0) 推荐(0) 编辑
摘要:true == 1; true + 1; If the destination type is bool, see 4.12. If the source type is bool, the value false is converted to zero and the value true is 阅读全文
posted @ 2023-03-06 19:04 Revc 阅读(39) 评论(0) 推荐(0) 编辑
摘要:for (int i = 0; i < buildings.size(); i++) {} 和 int n = buildings.size(); for (int i = 0; i < n; i++) {} 之间的效率差距如何? 通常 size() 函数的调用会被编译器内联,可能会有些许性能损失, 阅读全文
posted @ 2023-03-06 18:51 Revc 阅读(33) 评论(0) 推荐(0) 编辑
摘要:如果英文字符串只使用空格作为分隔符,在进行全词匹配时,可以为搜索内容前后加上空格,再进行搜索。 参考资料 题解 P1308 【统计单词数】 阅读全文
posted @ 2023-03-05 22:54 Revc 阅读(61) 评论(0) 推荐(0) 编辑
摘要:如果存在如下的输入, 11 is a prime 考虑如下的程序, std::cin>>number; std::getline(std::cin,input) std::cin 在读取数字 11 时,没有读取 11 后面的换行符。这个换行符被之后的 std::getline 消耗了,从而导致 st 阅读全文
posted @ 2023-03-05 22:49 Revc 阅读(123) 评论(0) 推荐(0) 编辑
摘要:C 语言中的 % 是余数操作符,而==不是==模数操作符。 模数被定义为 k := n - d*q,q 是一个整数使得 k 的符号和 d 的符号一致,同时使得 k 的绝对值尽可能的小。 余数被定义为 k := n - (n/d)*d,k 的符号和 n 一致。 参考资料 Remainder Modul 阅读全文
posted @ 2023-03-05 22:38 Revc 阅读(121) 评论(0) 推荐(0) 编辑
摘要:使用如下代码来获取数字的每一位, while(n > 0) { digits[d++] = n % 10; n /= 10; } 需要注意一点,digits 数组中保存的位的顺序和字数本身的顺序相反。如数字 1234 会被保存为 |4|3|2|1|。 阅读全文
posted @ 2023-03-05 22:20 Revc 阅读(40) 评论(0) 推荐(0) 编辑
摘要:std::cout << std::endl; 等价于 std::cout << '\n' << std::flush; 除了写入换行符,std::endl 还会刷新缓冲区。除非程序对于性能十分敏感,不然使用 \n 或者 std::end 差别不大。 参考资料 What’s the differen 阅读全文
posted @ 2023-03-05 22:11 Revc 阅读(59) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示