牛客国庆集训派对Day2 Solution】的更多相关文章

A    矩阵乘法 思路: 1° 牛客机器太快了,暴力能过. #include <bits/stdc++.h> using namespace std; #define N 5000 int n, p, m; ], b[][N], ans[N][N]; void Run() { while (scanf("%d%d%d", &n, &p, &m) != EOF) { ; i <= n; ++i) ; j <= p; ++j) scanf(…
题目链接:https://www.nowcoder.com/acm/contest/202/A A 题意:给出最大4096*64和64*4096的矩阵,其中有一个矩阵只含有0和1,问你它们相乘所得到得矩阵所有元素异或 思路:一开始我想到的是能不能将01矩阵的一排都用二进制表示,但是发现2的64次方大于4096,反而增大了复杂度,于是没有做出这题,题解是将矩阵分块,最多分成8块,这样01矩阵的种数有255种,然后再暴力求解,看起来很难写,但是捋清楚思路和写法,这题不难写 #include <cst…
小贝喜欢玩卡牌游戏.某个游戏体系中共有N种卡牌,其中M种是稀有的.小贝每次和电脑对决获胜之后都会有一个抽卡机会,这时系统会随机从N种卡中选择一张给小贝.普通卡可能多次出现,而稀有卡牌不会被重复抽到.小贝希望收集到K种稀有卡牌,她想知道期望需要多少次获胜才能实现这个目标. 解析: 这个解析转自 :https://blog.csdn.net/Krone_/article/details/82929550#H__122 #include <bits/stdc++.h> using namespace…
A    深度学习 puts(n) #include <bits/stdc++.h> using namespace std; int main() { double n; while (scanf("%lf", &n) != EOF) printf("%.10f\n", n); ; } B    异或求和 思路:  有一个$O(nlogn^2)$ 的做法,但是T了. 设$bit(x, i)$为 x在二进制下第i位为1还是0 考虑 $\sum_{…
A    Tobaku Mokushiroku Kaiji 水. #include <bits/stdc++.h> using namespace std; ], b[]; void Run() { while (scanf("%d", a) != EOF) { ; i < ; ++i) scanf("%d", a + i); ; i < ; ++i) scanf("%d", b + i); printf(], b[])…
A    Knight 留坑. B    Tree 思路:两次树形DP,但是要考虑0没有逆元 可以用前缀后缀做 #include <bits/stdc++.h> using namespace std; #define N 1000010 #define ll long long ; int n; ll dp[N], dp2[N]; ll prefix[N], suffix[N]; vector <int> G[N]; void Init() { ; i <= n; ++i)…
A    璀璨光滑 留坑. B    电音之王 蒙特马利大数乘模运算 #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long u64; typedef __int128_t i128; typedef __uint128_t u128; struct Mod64 { Mod64() :n_() {} Mod64(u64 n) :n_(init(n)) {} st…
A    Birthday 思路:设置一个源点,一个汇点,每次对$源点对a_i, b_i , a_i 对 b_i 连一条流为1,费用为0的边$ 每个点都再连一条 1, 3, 5, 7, ....的边到汇点之间,因为每多加一个流的费用,然后就是最小费用最大流 #include<bits/stdc++.h> using namespace std; const int INF = 0x3f3f3f3f; ; ; struct Edge{ int to, nxt, cap, flow, cost;…
A    Relic Discovery 水. #include <bits/stdc++.h> using namespace std; int t, n; int main() { scanf("%d", &t); while (t--) { scanf("%d", &n); ; , a, b; i <= n; ++i) { scanf("%d%d", &a, &b); res += a *…
任意门:https://www.nowcoder.com/acm/contest/202/F 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 1048576K,其他语言2097152K64bit IO Format: %lld 题目描述 平衡二叉树,顾名思义就是一棵“平衡”的二叉树.在这道题中,“平衡”的定义为,对于树中任意一个节点,都满足左右子树的高度差不超过 d. 空树的高度定义为0,单个节点的高度为1,其他情况下树的高度定义为根节点左右子树高度最大值 + 1. 一棵在高度上平…