原创 TIPS!

long long(包括 %lld %I64d 1LL) 輸出方案、編號的時候,如果排序注意原始編號

原创 2019牛客多校第十場

B.Coffee Chicken 對於S(n)S(n)S(n),考慮某個字母是從S(n−1)S(n-1)S(n−1)轉移還是從S(n−2)S(n-2)S(n−2)轉移 #include<bits/stdc++.h> #define

原创 2019杭電多校第十場

1003 Valentine’s Day 從大到小不斷組合,如果開心1次的概率大於開心0次概率就可以break了 因爲x會越來越小 #include<bits/stdc++.h> #define fo(i,a,b) for(i=a

原创 2019杭電多校第九場

1005 Rikka with Game 如果開頭是a~x的話直接結束遊戲 如果開頭是y,都不會改變 如果開頭是z,那麼先手變爲a,後手變爲b 所以就是跳過開頭一堆y,然後如果是z就變爲b,否則不變 #include<bits/s

原创 2019牛客多校第七場

A.String 萬萬沒想到這題暴力就可以艹過去。。(感謝隔壁隊伍大喊一聲“暴力都能過”) 據說直接O(N3)O(N^3)O(N3)就可以了? 畢竟這個時間複雜度幾乎不可能跑滿 我們的做法大概是找到一個全新的0進行check。。哎

原创 【BZOJ 4869】【2017六省聯考】相逢是問候

考慮一個歐拉定理的擴展: 當x>φ(p) 時有: cx≡cx%φ(p)+φ(p)(modp) 也叫作歐拉定理EXT,證明看這裏:https://zhuanlan.zhihu.com/p/24902174 這個公式的強大之處

原创 【BZOJ 4584】【APIO 2016】賽艇

首先離散化一下,然後令f[i][j][k]表示做到第i個學校,最後一個數落在j號區間,這個區間裏有k個不同的數的方案數。(實際上如果兩個學校的數量是一樣的,那麼對後面的方案是沒有影響的,所以記錄的是k個不一樣的數)。 sum[t

原创 FWT

FFT:FFT:FFT: Ck=∑i+j=kAi∗BjC_k=\sum_{i+j=k}A_i*B_jCk​=∑i+j=k​Ai​∗Bj​ FWT:FWT:FWT: Ck=∑i⊕j=kAi∗BjC_k=\sum_{i \oplus

原创 約瑟夫問題

求n個人,每次報m次出隊,求第k個出隊的人 f[n][k]=(f[n−1][k−1]+m−1)%nf[n][k]=(f[n-1][k-1]+m-1)\%nf[n][k]=(f[n−1][k−1]+m−1)%n 時間複雜度爲O(k)

原创 歐拉定理相關

a ^ a ^ a ^ … ^ b % m #include <bits/stdc++.h> #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; const int m

原创 2019杭電多校第八場

1004 Acesrc and Hunting 很遺憾由於沒有考慮到nnn和mmm的大小關係導致賽後五分鐘補題。。。 首先構造2∗k2*k2∗k的形式 012345601234560123456 abcdefgabcdefgabc

原创 2019牛客多校第九場

B.Quadratic equation 由題意可設x+y=kp+bx+y=kp+bx+y=kp+b 代入第二個式子中可以得到kpx+bx−x2≡c(modkpx+bx-x^2 \equiv c(modkpx+bx−x2≡c(mo

原创 2019杭電多校第六場

1005 Snowy Smile 考慮樸素的最大子矩陣和 首先枚舉上下邊界,然後問題就轉化成了維護最大子段和 這個問題可以用線段樹解決 用maxvmaxvmaxv、prevprevprev、sufvsufvsufv分別表示當前區間

原创 2019牛客多校第八場

A.All-one Matrices 按行枚舉(即枚舉下邊界) e.g.e.g.e.g. 000000000000000 001100011000110 001000010000100 011110111101111 111101

原创 【模板】線性基

線性基插入 void insert(int rt,ll x) { int i; fd(i,31,0) if (x & (1<<i)) if (basis[rt][i] == 0)