【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.pswp.cn/news/250019.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250019.shtml
英文地址,請注明出處:http://en.pswp.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; #{……