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

在查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.mzph.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…