昨天主要學習了一些基本演算法,有位運算,遞推與遞迴。
位運算能夠幫助我們理解程式執行中的種種表現,提高程式執行的時空效率,降低程式設計複雜度。
基本的運算子有:與: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 ...