主要是理解一下做Leetcode时遇到的这种奇怪的加速方法。
同样的代码,直接执行是68ms,加速后是36ms,LeetCode1160
LeetCode581效果一样,不加48ms,加了32ms。
只需把代码加在开头
ios::sync_with_stdio(0);
cin.tie(0);
或者
static auto speedup = [](){
ios::sync_with_stdio(false); cin.tie(nullptr); return nullptr; }();
完整的例子
class Solution {
public:
int countCharacters(vector<string>& words, string chars){
int sum = 0;
unsigned int ch[26];
unsigned int tempCh[26];
memset(ch, 0, sizeof(ch));
for (char i : chars)
++ch[i - 'a'];
for (string i : words){
bool flag = true;
for (int i = 0; i < 26; ++i)
tempCh[i] = ch[i];
for (char c : i){
if (tempCh[c - 'a'] == 0){
flag = false;
break;
}
else
--tempCh[c - 'a'];
}
if (flag)
sum += i.length()</

博客探讨了在LeetCode等程序竞赛中如何通过优化C++的I/O输入输出流来提升程序运行速度。文章提到,通过禁用C++流与C流的同步并使用特定的输入输出操作,如getchar_unlocked(),可以显著加快输入输出的速度。作者建议在竞赛模板中使用这些技巧以提高代码执行效率。
最低0.47元/天 解锁文章

22

被折叠的 条评论
为什么被折叠?



