原创 博弈論專題

1、HDU-1847     題解

原创 數學專題

約數個數定理 若x=p1^a1*p2^a2*...*pn^an,(p1 p2 ... pn爲素數)則約數個數爲(p1+1)(p2+1)...(pn+1) ll getnum(ll n) //得到a的約數個數. { ll res=

原创 樹鏈剖分

洛谷P2590 樹鏈剖分模板題: #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=50005; int n,q; int

原创 最短路專題

1、最短路模板 Dijkstra算法:單源最短路,可以使用鄰接表建圖+優先隊列優化 spfa算法:sfl優化+判負環+前向星建圖 floyd算法:也可用來判負環,不過時間複雜度賊高,基本沒用過 附上一道模板題:hdu1548 Dijkst

原创 set中lower_bound用法

lower_bound在set中用法: 二分查找一個有序數列,返回第一個大於等於x的數,如果沒找到,返回末尾的迭代器位置   #include<bits/stdc++.h> using namespace std; const int

原创 Codeforces 1131 F.Asya And Kittens

Asya loves animals very much. Recently, she purchased nn kittens, enumerated them from 11 and nn and then put them into

原创 poj1321-棋盤問題

在一個給定形狀的棋盤(形狀可能是不規則的)上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請編程求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案C。 Input 輸入含有多組測試數據。 

原创 DFS專題

1、DFS求聯通塊 首先構建一個圖,然後dfs每個點,將經過的所有點用vis數組標記上,如果能成功的跑完一次dfs,聯通塊數+1,如果這個點在之前遍歷過(即vis==1),聯通塊數不增加,直接返回0。 代碼模板: //mp[][]存的是

原创 BFS專題

1、bfs求層數/路徑深度 方法:增加一個deep[ ]數組,用於記錄層數/路徑深度,利用bfs一層一層進隊列的性質,下一層深度=當前深度+1,即deep[next]=deep[now]+1 代碼模板: void bfs(int x){

原创 並查集題目集

1、求一個集合內的元素個數 模板題鏈接:poj1611 其方法是初始化一個數組全爲1,用來記錄每個集合內的元素個數,每當發生合併的時候,祖先集合元素個數+=被合併的元素個數,從而完成元素個數的更新 //求一個集合內元素個數 #incl

原创 五子棋+easyx

仍然是暴力代碼,不含估價函數等高難算法,運行環境:vs2015 #include<iostream> #include<algorithm> #include<stdlib.h> #include<Windows.h> #include

原创 五子棋AI

單純的暴力寫法,不含任何搜索算法。。。 #include<iostream> #include<algorithm> #include<stdlib.h> #include<graphics.h> char c[20][20]; int

原创 p3948

題目描述 蒟蒻Edt把這個問題交給了你 ———— 一個精通數據結構的大犇,由於是第一題,這個題沒那麼難。。 edt 現在對於題目進行了如下的簡化: 最開始的數組每個元素都是0 給出nn,optopt,modmod,minmin,maxma

原创 牛客練習賽34-C題

  題目描述 小w有m條線段,編號爲1到m。 用這些線段覆蓋數軸上的n個點,編號爲1到n。 第i條線段覆蓋數軸上的區間是L[i],R[i]。 覆蓋的區間可能會有重疊,而且不保證m條線段一定能覆蓋所有n個點。 現在小w不小心丟失了一條線段,

原创 codeforces 1092C-Prefixes and Suffixes

Ivan wants to play a game with you. He picked some string ssnn You don't know this string. Ivan has informed you about