錯誤點總結

2022-01-10 07:22:07 字數 3042 閱讀 7814

gate

總結:一般來說使用kmp能保證不出錯

inline int read() 

while (ch >= '0'&&ch <= '9') s = s * 10 + ch - '0', ch = getchar();

return s * w;

}

//各型別 快讀

template void read(t& x)

int x;

read(x);

#pragma warning(disable : 4996)

#include"bits/stdc++.h"

using namespace std;

#define ll long long

#define fo(i,n) for(ll i=0; i<(n); i++)

#define fo(i,a,b) for(auto i=a; i!=(b); i+=(b)>(a)?1:-1)

#define vll vector#define vch vector#define pb push_back

#define lb lower_bound

#define ub upper_bound

#define sll set#define all(c) c.begin(), c.end()

#define on(x) cout<>n;

while(n)

}if(flag) on("yes")

else on("no")

return 0;

}

#ifndef online_judge

#pragma warning(disalbe : 4996)

#endif

#includeint main()

//////////////////下面的方法明顯好很多,輸出利用「黑框」即可////////////////////

#includeusing namespace std;

int main()

memset可以對高位陣列進行初始化,非常方便。需要注意的是memset的標頭檔案是string.hmemory.h

(注:一下dp高維陣列都是全域性變數,區域性變數請自行修改sizeof語句)

一:賦 『0』 與 賦 『-1』

memset(dp,0,sizeof(dp));

memset(dp,-1,sizeof(dp));

在計算機中,資料用補碼儲存。-1的補碼(32位)是0xffffffff,(8位,乙個位元組)是0xff,memset是按位元組填充的,所以不影響賦值的真實性。

二:賦最大值

memset(dp,127,sizeof(dp));

127用8位二進位制數表示是0b01111111:用4個0b01111111填充到乙個32位的int中:

得到了乙個接近32位無窮大(int_max = 0x7fffffff = 2147483647)的數。

三:賦最小值

memset(dp,-127,sizeof(dp)); 

-127用補碼表示是 0b10000001 ,用4個 0b10000001 填充到int中:

得到了乙個絕對值非常大的乙個負數(-2122219135)

127可以利用八進位制的0x7f替換,但一般不太可能會直接初始化為正無窮,而是初始化為0x3f,保留一定的算術可能性(防止溢位)

在初始化floyd或者其他類似的東西

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)

gra[i][j]=inf

for(int i=1;i<=b;i++)

gra[i][i]=0

是比

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)

快的(測試大約1是2的80%的時間)

原因後者每次都要判斷

#includesigned main() 

return std::cout << "no", 0;//先輸出,然後返回

}

定義乙個lowbit函式,返回引數轉為二進位制後,最後乙個1的位置所代表的數值.

例如,lowbit(34)的返回值將是2;而lowbit(12)返回4;lowbit(8)返回8。

lowbit的乙個簡便求法:(c++)

int lowbit(int x)
或者使用巨集定義

#define lowbit(x) (x & -x)
左移:$$1 << n = 2^n , n << 1 = 2n$$

右移:$$n >> 1 = [\frac]$$

算術右移等於除以2向下取整, \((-3) >> 1 = -2 , 3 >> 1 = 1\)

傳送門剪枝分為可行性剪枝最優化剪枝

可行性剪枝一般的思考過程就是,我一共需要多少,在最多的情況下也無法達到,或最少的情況下也會超過。

那麼至於最大與最小到底怎麼取到,就本題而言,還有類似的每層遞增的題目,可以考慮我從(1,1)開始每層加一,到現在的層數,面積和即為最小面積。而最大,就是把乙個變數限制成最小,就可以取得另乙個的最大,而對每乙個「另乙個」,都有乙個「這個」的最大與之對應。

最優化剪枝,就是考慮,我現有的面積和已經比最小面積大了,那麼不用繼續討論。或者,我現有的面積,加上最小面積,也比最小面積大,那麼也可以不再繼續。

here

多組輸入時,一定要初始化圖,不然會影響下一次的結果。在特別多資料時特容易導致超時

常見錯誤點總結

1 int h,int m,int s 錯誤,因為之間應該用分號 int h,m,s 2 time const time p h p.h 賦值的時候是p.千萬別忘記這個點。3 int swap int a,int b a和b前面的int前往別忘 4 在使用容器的時候,千萬別忘記清除 5 函式名稱和返...

hibernate錯誤點記錄

1.如果繼承了hibernatedaosupport,你必須得用xml方式進行注入sessionfactory,不能用註解的方式注入,因為sessionfactory在hibernatedaosupport裡面,你看不到,所以沒法用 resource注入。否則會報異常。2.如果使用的是hiberna...

誤點總結(一)

severlet頁面中的請求 request.getrequestdispatcher jsp forward req,resp string sql update student set student name student age student student address studen...