看到難度普遍7-9就感覺很勁…再加上doc出品,於是果斷入坑。由於知識性內容還沒有學完,只能慢慢刷了。這sb題居然智障wa了兩次….
由於是回文串只要列舉前半段,然後瞎幾把測試素數就好了。
順便學習一波miller-rabin的二次探查。
複雜度o(n
√slgn
),s為測試次數。
#include
using
namespace
std;
long
long power(long
long a, long
long n, long
long mod)
bool miller_rabin(long
long n)
if (x != 1) return
0; }
return1;}
long
long rev(long
long a)
long
long ans[100005];
int top = 0;
int main()
if (i >= power(10, len, long_long_max)-1) len++;
}sort(ans+1, ans+top+1);
top = unique(ans+1, ans+top+1)-ans-1;
for (int i = 1; i <= top; i++) printf("%lld\n", ans[i]);
return
0;}
以前寫線段樹查詢從來都是直接返回答案…做了這題才發現可以返回乙個完整的節點資訊。
就是線段樹維護總和,最大子段和,左起最大子段和,右起最大子段和。
複雜度o(n
lgn)
#include
using namespace std;
const int maxn = (1
<<19)+2;
struct node
friend bool operator == (const node &a, const node &b)
} tree[maxn*2];
int a[maxn], n, m;
#define nil tree[0]
node link(const node &l, const node &r)
void build(int nd, int l, int r)
else
}void dfs(int nd, int tab = 0)
void update(int nd, int
pos, int dat)
else
}node query(int nd, int l, int r)
int main()
else
if (opt == 2) else dfs(1);
}return
0;}
一開始以為是反轉思考了好久,後來才發現只是按下去。
最小割經典建圖:s→
rowc
ol→t
row→
col,
ifth
erei
ssom
ethi
ngat
(row
,col
)正確性是顯然的,複雜度o(
跑得過)
。
貌似用二分圖匹配也可以?但我不會匈牙利那一套理論。
#include
using
namespace
std;
const
int maxn = 50005, maxm = 5000005;
struct node edge[maxm];
int head[maxn], top = 0;
void push(int i, int j, int k)
, head[i] = top;
++top, edge[top] = (node) , head[j] = top;
}int vis[maxn], bfstime = 0;
int lev[maxn], s = 50001, t = 50002;
queue
que;
bool bfs()
} return vis[t] == bfstime;
}int dfs(int nd, int maxf = 233333333)
if (maxf) lev[nd] = -1;
return ans;
}int dinic()
int n, m;
char str[105];
int main()
cout
<< dinic() << endl;
return
0;}
變得難起來了…
構造問題,由於有二叉樹計數考慮用卡特蘭數。然後瞎幾把搞【霧】。
複雜度o(lg
n)。因為卡特蘭數是指數增長,其反函式是對數增長。
#include
using
namespace
std;
// c : h(n)=h(n-1)*(4*n-2)/(n+1);
long
long h[20];
void work(int n, long
long k, bool out_side = 1) // n個節點中編號為k的
}if (!out_side) putchar(')');
}int main()
return
0;}
Vijos訓練計畫 1304回文數
若乙個數 首位不為零 從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。例如 給定乙個10進製數56,將56加65 即把56從右向左讀 得到121是乙個回文數。又如 對於10進製數87 step1 87 78 165 step2 165 561 726 step3 726 627 1353 st...
Linux快速入門開啟你的學習之道 星辰大海
相信看到這篇文章的你一定是想要學習linux,或者已經在學習linux的人了,那我們就可以一起 一下,學習linux如何快速入門呢?首先,希望大家弄清楚自己為什麼要學習linux,有的人是因為興趣,有的人是因為linux比較好找工作,興趣驅使的那部分人找好方法學習linux就差不多了。另一部分為了工...
vijos 1770 大內密探(樹形dp 計數)
不重不漏地設計狀態才能正確的計數qaq 雖然可能最優化是正確的,但是不能保證狀態不相交就是作死。之前設的狀態錯了。應該設f i 0 表示i點不取且至少有乙個兒子取,且保證i點被覆蓋 f i 1 表示i點取兒子任意,且保證i點被覆蓋 f i 2 表示i點不取且i點的兒子也不取,保證i點不被覆蓋!即留給...