2019 07 22訓練日誌

2021-09-25 11:55:15 字數 844 閱讀 7677

昨天主要學習了一些基本演算法,有位運算,遞推與遞迴。

位運算能夠幫助我們理解程式執行中的種種表現,提高程式執行的時空效率,降低程式設計複雜度。

基本的運算子有:與:and/&;或:or/|;非:not/~;異或:xor/^;

整數型包括無符號整型int和有符號整型unsigned int。有符號整型的最高位是0的話是整數,1的話是負數。

移位運算:1《快速冪:求a的b次方對p取模的值

由數學常識b=ck-1*2^(k-1)+ck-2*2^(k-2)+......+c0*2^0;

於是有:a^b=a^(ck-1*2^(k-1))*a(ck-2*2^(k-2))*......*a^(c0*2^0);b&1運算可以取出b在二進位制表示下的最低位,而b>>1運算可以捨去最低位,在遞推的過程中將二者結合即可求解,時間複雜度為o(log2n);

**實現:

int power(int a,int b,int p)

int ans=1%p;

for(;b;b>>=1)

if(b&1)ans=(long long )ans*a%p;

a=(long long )a*a%p;

}return ans;

64位整數乘法也可類似於快速冪的思想 **:

long long mul(long long a ,long long b,long long p)

return ans;

二進位制狀態壓縮:將乙個bool陣列用乙個m位二進位制表示並儲存的方法;

一些基本操作:

取出n的第k位:(n>>k)&1

取出0~k-1位:n&((1《第k位取反:nxor(1位運算的一些知識,大致這些,遞推和遞迴還在學習中...

ACM訓練日誌

今天的比賽我們隊倆大佬出了倆題,後來過了時間又補了f題,總的來說我覺得今天訓練不簡單,被d題整的心態有點炸,後來于衡a掉了,貪心字首和,仔細看了隊友的 還是很有啟發的,附上原題和隊友的 原題 ac include using namespace std const int maxn 4e5 10 t...

訓練日誌 2018 10 11

昨天晚上打比賽,感覺手好生,題意看了半天,才看懂,然後就是tle,這回還好一點,馬上想到了,修改的演算法,但是細節沒處理好,wa了,找了好一會才發現 的錯誤,第二題就更艱辛了,一開始就跑偏了方向,以為是乙個找規律的事關鍵是以為自己找到了規律,開始麻煩的敲 敲完了才發現,有好多錯誤情況不在規律內,無奈...

4 27訓練日誌

關於三分法的一些知識總結 三分法主要用於求解乙個函式在某個區間內的極大 極小 值點首先對於乙個凹函式y f x 我們要求它的極小值點。首先確定它的極小值點所在的區間為 l,r 計算出兩個三分點 mid l r 2 mid2 mid r 2 其實這兩個點的位置是靈活的 此時 l mid f mid2 ...