a 矩陣乘法
思路:1° 牛客機器太快了,暴力能過。
1 #include 2view codeusing
namespace
std;34
#define n 500056
intn, p, m;
7int a[n][100], b[100
][n], ans[n][n];89
void
run()
1029}30
31int
main()
32
2°考慮到p很小,可以將它分塊,比如說分成8bit一塊,那麼對應的只有256種情況,可以預處理一下,然後乘法變成取值
複雜度大概在(4096 * 4096 * 8) 左右
1 #include 2view codeusing
namespace
std;34
#define n 500056
intn, p, m;
7int a[n][100], b[100][n], ap[n][10][256], bp[10
][n], ans[n][n];89
void
run()
1039}40
41int
main()
42
b 字串的冪
留坑。c 生命遊戲
留坑。d 數格點
留坑。e 資料排序
留坑。f 平衡二叉樹
思路:顯然,答案最大肯定是根節點下左子樹是滿二叉樹,右子樹是最小平衡二叉樹
深度為n的二叉平衡樹的最小節點數 = 左平衡樹的最小節點數 + 右平衡樹的最小結點樹 + 當前樹的根節點樹(1)
顯然 ,右平衡樹的高度可以比左平衡樹少d
當$n <= d$ 的時候 $f[n] = max(n, 0)$
所以$f[n] = f[n - 1] + f[n - d - 1] +1$
滿二叉樹的結點個數是$2^n$
1 #include 2view codeusing
namespace
std;
3using ll = long
long;4
5int
n, d;
6 ll f[100];7
8 ll qpow(ll base
, ll n)917
return
res;18}
1920 ll work(int
h)21
2829
void
run()
3036}37
38int
main()
39
g 陣列合併
留坑。h 卡牌遊戲
思路:考慮抽到一張卡片的概率是$\frac$ 那麼期望就是 $\frac$ 抽到一張之後再抽一張的概率是$\frac$
1 #include 2view codeusing
namespace
std;34
intt, n, m, k;56
intmain()717
return0;
18 }
i 遊戲
留坑。j 魔法陣
留坑。k 排隊
留坑。
牛客國慶集訓派對Day2
題意 給出最大4096 64和64 4096的矩陣,其中有乙個矩陣只含有0和1,問你它們相乘所得到得矩陣所有元素異或 思路 一開始我想到的是能不能將01矩陣的一排都用二進位制表示,但是發現2的64次方大於4096,反而增大了複雜度,於是沒有做出這題,題解是將矩陣分塊,最多分成8塊,這樣01矩陣的種數...
牛客國慶集訓派對Day1
a 看樣例過題 include include include include include using namespace std typedef long long ll typedef pairpii const int maxn 1e5 10 vectorg maxn int a 10 i...
牛客國慶集訓派對Day4
a 把b n include include include includeusing namespace std int main d 由於是個完全圖,選擇乙個權值最小的點,其他所有的點向它連線就行了。注意點為1的時候輸出0 include include include includeusing...