比賽鏈結
馬拉松是真的難…
應該是我太菜了tnt
同bzoj1534
題解戳這裡
n個有標號的點,其中m個是葉子節點。
問有多少數的形態。
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int n = 1000010;
const
int mod = 1e9 + 7;
int n, m;
ll fac[n], inv[n];
inline ll ksm(ll x, int p)
return ret;
}inline
void prepare()
inline ll c(int n, int m)
inline ll s(int n, int m)
return ret;
} //s(n, m) = 1/m!*sigma(k=0 to m);
int main()
有乙個set的序列,有兩種操作:
1. 在序列[l,r]內每個位置插入乙個數
2. 詢問[l,r]內的數去重以後的第k小
這道題和zjoi2013 k大數查詢很像。
那道題是樹套樹,題解戳這裡。
但是這道題要去重,所以不能這麼做。
標算是bitset優化線段樹,線段樹每個節點套乙個bitset。
具體操作見**。
(這還是我第一次寫bitset…qwq)
#include
#include
#include
#include
#include
#include
#include
#define mid (l+r>>1)
#define lc o<<1
#define rc o<<1|1
using
namespace
std;
typedef
long
long ll;
inline ll read()
inline
void writeabs(ll a)
inline
void write(ll a)
const
int n = 10001, m = 65540;
int n, q, tot;
bool vis[m<<1];//vis[i]=1表示i號節點被完全覆蓋過
bitset
t[m<<1], tag[m<<1], tmp;
inline
void ask(int o, int l, int r, int x, int y)
if(vis[o]) tmp |= tag[o];
if(y <= mid) ask(lc, l, mid, x, y);
else
if(x > mid) ask(rc, mid+1, r, x, y);
else ask(lc, l, mid, x, mid), ask(rc, mid+1, r, mid+1, y);
}inline
void insert(int o, int l, int r, int x, int y, int p)
if(y <= mid) insert(lc, l, mid, x, y, p);
else
if(x > mid) insert(rc, mid+1, r, x, y, p);
else insert(lc, l, mid, x, mid, p), insert(rc, mid+1, r, mid+1, y, p);
}int main()
int l = 0, r = 10000;
while(l < r)
}write(l), puts("");}}
return
0;}
def都還沒看過= =先留坑,以後哪天突發奇想做了再寫。 51nod演算法馬拉松15
智力徹底沒有了。看來再也拿不到獎金了qaq。a b君的遊戲 因為資料是9b1l,所以我們可以hash試一下資料。include include include include define rep i,s,t for int i s i t i define dwn i,s,t for int i ...
51nod演算法馬拉松13
a 取餘最長路 不難發現路徑可以拆成三條線段,只要知道兩個轉折點的位置就能計算出答案。設sum i,l,r 表示第i行從l到r元素的和,則答案可以表示為sum 1,1,x sum 2,x,y sum 3,y,n p。字首和一下轉化成 s3 n s3 y 1 s2 y s1 x s2 x 1 p,從小...
51nod 演算法馬拉松18 總結
第一次打馬拉松。a 一看題。什麼鬼。n 4竟然是無解,第乙個點給了乙個n 5的,好像是構造的挺有規律的樣子。那就偶數無解,奇數照著他的構造方法寫一發吧。怎麼a了?不管了。既然結束了還是要回來好好想一下是什麼情況的。偶數肯定是無解的,因為一共有n n 1 2 條邊,那麼每種顏色的邊出現次數相等的話,就...