信息學競賽的常數優化、常見問題、代碼風格相關

在查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

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448160.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448160.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448160.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TCP報文格式詳解

TCP協議只定義了一種報文格式 建立、拆除連接、傳輸數據使用同樣的報文 TCP報文格式 TCP報文段首部&#xff08;20個字節&#xff09; 源端口和目的端口&#xff1a;各占2個字節&#xff0c;16比特的端口號加上32比特的IP地址&#xff0c;共同構成相當于傳輸層服務訪問點的地址…

Vue 生命周期中 mounted( ) 和 created( ) 的區別

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、什么是生命周期&#xff1f; 用通俗的語言來說&#xff0c;就是Vue中實例或者組件從創建到消滅中間經過的一系列過程。雖然不太嚴謹…

科目三考試

馬上要考大路了&#xff0c;考科目三考試必須做到什么事啊&#xff1f; 2012-5-30 8:46:23檢舉  注意事項   1、上車后確認車上電腦信息后&#xff0c;關好車門&#xff0c;系好安全帶&#xff0c;打左轉向燈起步。   2、直線行駛路段必須使用二檔行駛。否則將被判…

基于java的數據結構學習——數組實現的棧以及簡單應用

棧 Stack 棧是一種線性結構相比數組&#xff0c;棧對應的操作是數組的子集只能從一端添加元素&#xff0c;也只能從一端取出元素這一端稱為棧頂棧是一種后進先出的數據結構 棧的應用 無處不在的Undo操作&#xff08;撤銷&#xff09;括號匹配&#xff08;編譯器&#xff09;程…

Python 總結題目

題例1 # 打印如下長方形&#xff1a; ************ * * * * ************ # 打印如下長方形&#xff1a; print("*****************") print("* *") print("* *") print("****************…

vue : 引入、安裝 jquery 、bootstrap

一、vue安裝jquery 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、新建一個vue工程。 2、在項目文件夾下&#xff0c;使用命令 npm install jquery --save-dev 引入jquery。 np…

2013駕考科目三考試難點解析

原來規定科目三考試上車準備、起步、直線行駛等13個道路駕駛技能項目。123號令實施后&#xff0c;科目三考試分兩部分。道路駕駛技能考試項目增加到16項&#xff0c;增加了加減擋位操作、路口左轉彎、路口右轉彎3個考試項目&#xff0c;駕駛里程也增加。如何順利通過2013駕考科…

leetcode練習——棧(1)

題號20&#xff1a;Invalid Parentheses Given a string containing just the characters (, ), {, }, [ and ], determine if the input string is valid. An input string is valid if: Open brackets must be closed by the same type of brackets.Open brackets must be…

Asp.Net MVC 頁面代碼壓縮篩選器-自定義刪除無效內容

Asp.Net MVC 頁面代碼壓縮篩選器 首先定義以下篩選器&#xff0c;用于代碼壓縮。 /*頁面壓縮 篩選器*/public class WhiteSpaceFilter : Stream{private Stream _shrink;private Func<string, string> _filter;public WhiteSpaceFilter(Stream shrink, Func<string, s…

基于java的數據結構學習——數組實現的隊列和循環隊列及性能對比

隊列 Queue 隊列也是一種線性結構相比數組&#xff0c;隊列對應的操作是數組的子集只能從一端&#xff08;隊尾&#xff09;添加元素&#xff0c;只能從另一端&#xff08;隊首&#xff09;取出元素隊列是一種先進先出的數據結構 隊列的實現及復雜度分析 Queue<E> voi…

新手如何準確的控制油門

日常練車還不賴&#xff0c;可是一換車就容易加大油門兒&#xff0c;有啥子辦法能美好的扼制油呢?和調的坐位有關系嗎? 答&#xff1a;油門兒跟剎車被視為交通工具扼制的魂靈。交通工具引擎發動機的油門兒&#xff0c;通常是靠踏板來扼制的&#xff0c;也稱加速踏板&#xff…

vue 項目:文件夾 結構 、配置詳解

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 項目配置 首先&#xff0c;在確定好使用的框架和組件庫后&#xff0c;先要大致了解它們&#xff0c;做到文檔基本熟悉。本次開發使用…

hdoj2553(N皇后問題)

Problem : 2553 ( N皇后問題 ) Judge Status : Accepted RunId : 2619754 Language : G Author : huwenbiao Code Render Status : Rendered By HDOJ G Code Render Version 0.01 Beta/***************************************************************\ *Author:Hu…

基于java的數據結構學習——數組實現的棧以及簡單應用C++實現

基于java的數據結構學習——數組實現的棧以及簡單應用的 C 實現 源碼&#xff1a; // // Created by PC-Saw on 2019/1/3. //#ifndef DATA_STRUCTURE_ARRAYSTACK_H #define DATA_STRUCTURE_ARRAYSTACK_H#include "Stack.h" #include "MyArray.h"template&…

女性開車5大安全駕車好習慣 為您支招

一些女性車主技術不夠熟練&#xff0c;緊急處理能力差&#xff0c;開車過程中需要注意更多的細節。養成一些好習慣&#xff0c;對于女性車主來說&#xff0c;開車的安全度會大大提高。 ● 車窗上不掛毛絨玩具 汽車是生活的一部分空間&#xff0c;許多女性車主都喜歡把這部分空間…

DIV 半透明層、 CSS實現網頁 背景半透明

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 DIV半透明實現&#xff0c;使用CSS實現DIV成半透明效果&#xff0c;CSS實現層與背景半透明效果。 一、DIV CSS半透明基礎介紹 - …

node 安裝 webpack

首先要安裝 Node.js&#xff0c; Node.js 自帶了軟件包管理器 npm&#xff0c;Webpack 需要 Node.js v0.6 以上支持&#xff0c;建議使用最新版 Node.js。 用 npm 安裝 Webpack&#xff1a; $ npm install webpack -g此時 Webpack 已經安裝到了全局環境下&#xff0c;可以通過命…

Thinking in C++遇到的函數指針及應用

// // Created by PC-Saw on 2019/1/24. //#include <iostream>#define TEST 2/* 1. */ typedef int* (*(*fp1)(int))[10]; // 首先是一個函數指針&#xff0c;接受一個int型參數&#xff0c;返回一個指向10個int指針數組的指針 /* 2. */ typedef i…

html 標簽內背景圖片自適應 div 大小

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 只需通過css設置background-size屬性為contain&#xff0c;即 background-size:contain 注意&#xff1a;一定要在先設置background之…

Code Project精彩系列(轉)

Code Project精彩系列&#xff08;轉&#xff09; Applications Crafting a C# forms Editor From scratch http://www.codeproject.com/csharp/SharpFormEditorDemo.asp 建立一個類似C#的環境, 實現控件拖拉&#xff0c;屬性 Packet Capture and Analayzer 網絡封包截獲 http…