【FBI WARNING】一些Noip的黑科技 持续整理!

有疑问或错误尽管评论!! 
下面以C++为准。

 本文手(粘)打(贴)于各大博客之间 有问题。。。。。 我也不懂

max、min的优化

我们知道,打max、min时,要用分支(if语句)。这样会使程序超慢。

有没有其他方法?有的。 


当x<0时 x>>31=-1 (11111111111111111111111111111111) 


当x>=0时 x>>31=0(00000000000000000000000000000000)

所以我们可以通过作差,求出谁大谁小。

int max(int a,int b)
{int m=(a-b)>>31;return a&~m|b&m;
}
int min(int a,int b)
{int m=(a-b)>>31;return a&m|b&~m;
}

以max举例, 
当a>=b时,m=0,所以max(a,b)=a&~0|b&0=a&-1|b&0=a 


当a< b时,m=-1,所以max(a,b)=a&~-1|b&-1=a&0|b&-1=b

 

补上一个abs的优化:

int abs(int a)
{int b=a>>31;return (a+b)^b;
}

当a>=0时 b=0 abs(a)=a^0=a 

 

当a<0时 b=-1 abs(a)=(a-1)^-1=-a(相信大家都懂补码的转换方式)

 

有一点很重要的是,不要乱用!比如不能硬是将int改为long long,注意右移的位数要变!

 

手动编译优化

格式:

#define x y 

在程序中,一切出现x的地方都会变成y。 


可以省码量,增强可读性。

有种带参数的,在名字(x)后打空格,里面写参数(用逗号隔开,不用标类型) 


例如#define max(a,b) ((a)>(b)?(a):(b)) 


但是要记住它的本质,它只是单纯的替换。若不加括号,也许会出现各种运算顺序的错误。还有,不要将长的式子、函数、++或–放进去。不然会计算多遍,时间也许会炸。 


取消宏定义:

#undef x 


不解释 
还有其它的不怎么会用到,有兴趣的同学可以上网搜。 
补上懒人的文件输入输出:

 

#define I_O(x) freopen(""#x".in","r",stdin);freopen(""#x".out","w",stdout);

 

cstring中常用的函数

这些函数应该人人都会,但还是有好多人不会。

先说一下指针与数组的关系。 


若有数组int a[N]; 


则a表示a[0]的地址(&a[0]) 


*a即是a[0] 
a+i=&a[i] 
*(a+i)=a[i]

memset(指针(数组名),数值(最大127,最小128,清零0),大小(sizeof ……)) 
用法就是将一数组初始化。 


memcpy(指针A,指针B,大小SIZE) 


将B出复制SIZE这么多的内存到A处。

排序

sort(指针begin,指针end) 


将begin到end-1的元素以operator<进行快速排序。 


sort(begin,end,cmp) 


将begin到end-1的元素以cmp进行快速排序。 

有的孩子不知道cmp咋搞。 


比如从大到小排序

bool cmp(int a,int b)
{return a>b;
}

a代表前面的元素,b代表后面的元素。表示排序后的序列满足a>b!

 

稳定性排序: 


stable_sort(begin,end); 


steble_sort(begin,end,cmp);

queue里有一个,但我不爱用,因为内部一定有许多繁杂的操作,比如指针开辟一个存储空间,会使程序变慢。 


我用algorithm里的堆。 


先注意一下比较函数int cmp(int a,int b) 


a表示后代,b表示祖先,满足一个这样的顺序。(可以理解为大根堆) 


make_heap(begin,end) 


将begin到end-1的元素变成大根堆 


make_heap(begin,end,cmp) 


将begin到end-1的元素以cmp的顺序变成大根堆 


push_heap(begin,end) 


push_heap(begin,end,cmp) 


前面begin到end-2已满足堆的性质,将end-1的元素放进堆 

 

pop_heap(begin,end) 


pop_heap(begin,end,cmp) 


将begin的元素弹出,移至end-1处。

 

转载于:https://www.cnblogs.com/_Yrh/p/9240133.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@PathVariable注解使用

PathVariable是spring3.0的一个新功能&#xff1a;接收请求路径中占位符的值 语法&#xff1a; PathVariable("xxx") 通过 PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中PathVariable(“xxx“) RequestMapping(value”user/{id}/{name}”) 请…

【mysql】- 常用命令

DML - 操作表 SELECT * FROM stu;INSERT INTO stu ( id, NAME ) VALUES ( 1, 张三 );INSERT INTO stu ( id, NAME, sex, birthday, score, email, tel, STATUS ) VALUES( 2, 李四, 男, 1999-11-11, 88.888, lisiitcase.cn, 13812345678, 1 );update stu set sex 女 where nam…

JAVA 框架-Spring-AOP面向切面

AOP&#xff08;Aspect Orient Programming&#xff09;&#xff0c;我们一般称为面向方面&#xff08;切面&#xff09;编程&#xff0c;作为面向对象的一种补充&#xff0c;用于处理系统中分布于各个模块的横切关注点&#xff0c;比如事务管理、日志、缓存等等。AOP实现的关键…

互相关和卷积的关系

转载于:https://www.cnblogs.com/seisjun/p/10134021.html

Thymeleaf3语法详解

Thymeleaf是Spring boot推荐使用的模版引擎&#xff0c;除此之外常见的还有Freemarker和Jsp。Jsp应该是我们最早接触的模版引擎。而Freemarker工作中也很常见&#xff08;Freemarker教程&#xff09;。今天我们从三个方面学习Thymeleaf的语法&#xff1a;有常见的TH属性&#x…

【mysql】约束、外键约束、多对多关系

1、约束 DROP TABLE IF EXISTS emp;-- 员工表 CREATE TABLE emp (id INT PRIMARY KEY auto_increment, -- 员工id,主键且自增长ename VARCHAR(50) NOT NULL UNIQUE, -- 员工姓名,非空并且唯一joindate DATE NOT NULL, -- 入职日期,非空salary DOUBLE(7, 2) NULL, -- 工资,非空…

SSM+Netty项目结合思路

最近正忙于搬家&#xff0c;面试&#xff0c;整理团队开发计划等工作&#xff0c;所以没有什么时间登陆个人公众号&#xff0c;今天上线看到有粉丝想了解下Netty结合通用SSM框架的案例&#xff0c;由于公众号时间限制&#xff0c;我不能和此粉丝单独沟通&#xff0c;再此写一篇…

[6]Windows内核情景分析 --APC

APC&#xff1a;异步过程调用。这是一种常见的技术。前面进程启动的初始过程就是&#xff1a;主线程在内核构造好运行环境后&#xff0c;从KiThreadStartup开始运行&#xff0c;然后调用PspUserThreadStartup&#xff0c;在该线程的apc队列中插入一个APC&#xff1a;LdrInitial…

THYMELEAF 如何用TH:IF做条件判断

TestController 增加一个布尔值数据&#xff0c;并且放在model中便于视图上获取 package com.how2java.springboot.web; import java.util.ArrayList; import java.util.Date; import java.util.List;import org.springframework.stereotype.Controller; import org.springfr…

【mysql】多表查询、左外连接、内连接、练习题

多表查询 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FBdzXkoQ-1659581225088)(C:\Users\L00589~1\AppData\Local\Temp\1659337934641.png)] 左外连接&右外连接 -- 查询emp表所有数据和对应的部门信息 select * from emp left join dept o…

noi2018

day0 笔试没啥问题&#xff0c;基本都是100 day1 时间有点紧&#xff0c;念了2h题目&#xff0c;能写80848&#xff0c;第一题不会可持久化所以只能暴力。第二题感觉没第三个好做。第三题sa乱搞&#xff0c;随机串只hash长度小于20的。 最后几分钟才改过了所有小样例&#xff0…

Python自建collections模块

本篇将学习python的另一个内建模块collections,更多内容请参考:Python学习指南 collections是Python内建的一个集合模块&#xff0c;提供了许多有用的集合类。 namedtuple 我们知道tuple可以表示不变集合&#xff0c;例如&#xff0c;一个点的二维左边就可以表示成&#xff1a;…

Thymeleaf th:include、th:replace使用

最近做到页面数据展示分页的功能&#xff0c;由于每个模块都需要分页&#xff0c;所以每个页面都需要将分页的页码选择内容重复的写N遍&#xff0c;如下所示&#xff1a; 重复的代码带来的就是CtrlC&#xff0c;CtrlV ,于是了解了一下thymeleaf的fragment加载语法以及th:includ…

(OS X) OpenCV架构x86_64的未定义符号:错误(OpenCV Undefined symbols for architecture x86_64: error)...

原地址&#xff1a;http://www.it1352.com/474798.html 错误提示如下&#xff1a; Undefined symbols for architecture x86_64:"cv::_InputArray::_InputArray(cv::Mat const&)", referenced from:_main in test-41a30e.o"cv::namedWindow(std::__1::basic…

【算法】大根堆

const swap (arr, i, j) > {const tmp arr[i];arr[i] arr[j];arr[j] tmp; } const heapInsert (arr , i) > { // 插入大根堆的插入算法while(arr[i] > arr[Math.floor((i - 1) / 2]) {swap(arr, i, Math.floor((i - 1) / 2);i Math.floor((i - 1) / 2; } } cons…

[CF1082E] Increasing Frequency

Description 给定一个长度为 \(n\) 的数列 \(a\) &#xff0c;你可以任意选择一个区间 \([l,r]\) &#xff0c;并给区间每个数加上一个整数 \(k\) &#xff0c;求这样一次操作之后数列中最多有多少个数等于 \(c\)。 \(n,c,a_i\leq 10^5\) Solution 假设当前选择区间的右端点为 …

Thymeleaf select 使用 和多select 级联选择

1.使用select 并且回绑数据; 页面&#xff1a; 状态&#xff1a; <select name"status" th:field"*{status}" id"idstatus" class"input-select" th:value"*{status}"> <option value"">--请选择-…

Switch语句的参数是什么类型的?

在Java5以前&#xff0c;switch(expr)中&#xff0c;exper只能是byte&#xff0c;short&#xff0c;char&#xff0c;int类型。 从Java5开始&#xff0c;java中引入了枚举类型&#xff0c;即enum类型。 从Java7开始&#xff0c;exper还可以是String类型。 switch关键字对于多数…

【LOJ】#2184. 「SDOI2015」星际战争

题解 直接二分然后建图跑网络流看看是否合法即可 就是源点向每个激光武器连一条二分到的时间激光武器每秒攻击值的边 每个激光武器向能攻击的装甲连一条边 每个装甲向汇点连一条装甲值的边 代码 #include <bits/stdc.h> #define fi first #define se second #define pii …

表达式符号

Thymeleaf对于变量的操作主要有$*#三种方式&#xff1a; 变量表达式&#xff1a; ${…}&#xff0c;是获取容器上下文变量的值.选择变量表达式&#xff1a; *{…}&#xff0c;获取指定的对象中的变量值。如果是单独的对象&#xff0c;则等价于${}。消息表达式&#xff1a; #{……