日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

信息学竞赛的常数优化、常见问题、代码风格相关

發布時間:2023/12/19 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信息学竞赛的常数优化、常见问题、代码风格相关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在查std::ios::sync_with_stdio(false);有關信息時,看到https://blog.csdn.net/qq_33583069/article/details/53086992?這篇博客,對其中一些問題比較感興趣,整理了下相關資料:

  • isdigit()

https://blog.csdn.net/cupidove/article/details/43271579這里他有些信息不是很詳細,代碼中加了一些注釋,這種寫法類似Linux內核中有關此函數的實現,在原有基礎上加了一些其他功能的擴展,可以看我的注釋。

#include <time.h> #include <iostream> #include <windows.h>using namespace std;// 關閉 IO 同步 static const auto io_sync_off = []() {// turn off syncstd::ios::sync_with_stdio(false);// untie in/out streamsstd::cin.tie(nullptr);return nullptr; }();#define _ITEST_U 0x01 /* upper 大寫 */ #define _ITEST_L 0x02 /* lower 小寫 */ #define _ITEST_D 0x04 /* digit 十進制數 */ #define _ITEST_C 0x08 /* cntrl 不可打印的控制字符 */ #define _ITEST_P 0x10 /* punct 標點符號 */ #define _ITEST_S 0x20 /* white space (space/lf/tab) 所有空格符 */ #define _ITEST_X 0x40 /* hex digit 16/10進制數 */ #define _ITEST_SP 0x80 /* hard space (0x20) 硬空格 */const unsigned char itest_ctype[] = {_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C, /* 0-7 */_ITEST_C, _ITEST_C|_ITEST_S, _ITEST_C|_ITEST_S, _ITEST_C|_ITEST_S, _ITEST_C|_ITEST_S, _ITEST_C|_ITEST_S, _ITEST_C,_ITEST_C, /* 8-15 */_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C, /* 16-23 */_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C,_ITEST_C, /* 24-31 */_ITEST_S|_ITEST_SP,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P, /* 32-39 */_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P, /* 40-47 */_ITEST_D,_ITEST_D,_ITEST_D,_ITEST_D,_ITEST_D,_ITEST_D,_ITEST_D,_ITEST_D, /* 48-55 */_ITEST_D,_ITEST_D,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P, /* 56-63 */_ITEST_P, _ITEST_U|_ITEST_X, _ITEST_U|_ITEST_X, _ITEST_U|_ITEST_X, _ITEST_U|_ITEST_X, _ITEST_U|_ITEST_X,_ITEST_U|_ITEST_X, _ITEST_U, /* 64-71 */_ITEST_U,_ITEST_U,_ITEST_U,_ITEST_U,_ITEST_U,_ITEST_U,_ITEST_U,_ITEST_U, /* 72-79 */_ITEST_U,_ITEST_U,_ITEST_U,_ITEST_U,_ITEST_U,_ITEST_U,_ITEST_U,_ITEST_U, /* 80-87 */_ITEST_U,_ITEST_U,_ITEST_U,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P, /* 88-95 */_ITEST_P, _ITEST_L|_ITEST_X, _ITEST_L|_ITEST_X, _ITEST_L|_ITEST_X, _ITEST_L|_ITEST_X, _ITEST_L|_ITEST_X,_ITEST_L|_ITEST_X, _ITEST_L, /* 96-103 */_ITEST_L,_ITEST_L,_ITEST_L,_ITEST_L,_ITEST_L,_ITEST_L,_ITEST_L,_ITEST_L, /* 104-111 */_ITEST_L,_ITEST_L,_ITEST_L,_ITEST_L,_ITEST_L,_ITEST_L,_ITEST_L,_ITEST_L, /* 112-119 */_ITEST_L,_ITEST_L,_ITEST_L,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_P,_ITEST_C, /* 120-127 */0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 128-143 */0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 144-159 */_ITEST_S|_ITEST_SP, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P,_ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, /* 160-175 */_ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P,_ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, _ITEST_P, /* 176-191 */_ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U,_ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U, /* 192-207 */_ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U, _ITEST_P, _ITEST_U, _ITEST_U, _ITEST_U,_ITEST_U, _ITEST_U, _ITEST_U, _ITEST_U, _ITEST_L, /* 208-223 */_ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L,_ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L, /* 224-239 */_ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L, _ITEST_P, _ITEST_L, _ITEST_L, _ITEST_L,_ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L, _ITEST_L /* 240-255 */ };#define itest_ismask(x) (itest_ctype[(int)(unsigned char)(x)])#define itest_isalnum(c) ((itest_ismask(c)&(_ITEST_U|_ITEST_L|_ITEST_D)) != 0) // alpha + digit 字母和數字 #define itest_isalpha(c) ((itest_ismask(c)&(_ITEST_U|_ITEST_L)) != 0) // 字母 #define itest_iscntrl(c) ((itest_ismask(c)&(_ITEST_C)) != 0) // 不可打印的控制字符 #define itest_isdigit(c) ((itest_ismask(c)&(_ITEST_D)) != 0) // 十進制數 #define itest_isgraph(c) ((itest_ismask(c)&(_ITEST_P|_ITEST_U|_ITEST_L|_ITEST_D)) != 0) // 可打印非空白字符 #define itest_islower(c) ((itest_ismask(c)&(_ITEST_L)) != 0) // 小寫字母 #define itest_isprint(c) ((itest_ismask(c)&(_ITEST_P|_ITEST_U|_ITEST_L|_ITEST_D|_ITEST_SP)) != 0) // 可打印字符 #define itest_ispunct(c) ((itest_ismask(c)&(_ITEST_P)) != 0) // 標點符號 #define itest_isspace(c) ((itest_ismask(c)&(_ITEST_S)) != 0) // 空格符 #define itest_isupper(c) ((itest_ismask(c)&(_ITEST_U)) != 0) // 大寫字母 #define itest_isxdigit(c) ((itest_ismask(c)&(_ITEST_D|_ITEST_X)) != 0) // 16/10進制 #define itest_tolower(c) (itest_isupper((c)) ? ((c) + 'a' - 'A') : (c)) // 轉小寫(如果可以) #define itest_toupper(c) (itest_islower((c)) ? ((c) + 'A' - 'a') : (c)) // 轉大寫(如果可以)int main() {const char* demo_string = "abcd123AB 2";char* ptr = (char*)demo_string;for (int i = 0; i < strlen(demo_string); i++,ptr++){if (itest_isdigit(*ptr)){printf("%c is digit\n",*ptr);}else if (itest_isprint(*ptr)){if (itest_islower(*ptr)){printf("%c is lower\n",*ptr);}else if (itest_isupper(*ptr)){printf("%c is isupper\n",*ptr);}}}return 0; }

其中還涉及到了正則表達式的一些知識:http://baiy.cn/utils/_regex_doc/index.htm

ASCII標準表 :https://baike.baidu.com/item/ASCII

  • max()/min()

https://blog.csdn.net/a_ran/article/details/74911031

https://www.iteblog.com/archives/237.html

  • unique()/lower_bound()/upper_bound()

https://blog.csdn.net/sicofield/article/details/8740141

https://blog.csdn.net/Xiaohei00000/article/details/51010292

  • scanf()/printf()

https://wu-yudong.iteye.com/blog/1974368

  • cin/cout

https://blog.csdn.net/YinJianxiang/article/details/76436089

https://www.cnblogs.com/ncgds/p/5759551.html

尾遞歸優化:

http://www.ruanyifeng.com/blog/2015/04/tail-call.html

http://www.cnblogs.com/JeffreyZhao/archive/2009/04/01/tail-recursion-explanation.html

?

?

總結

以上是生活随笔為你收集整理的信息学竞赛的常数优化、常见问题、代码风格相关的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。