牛客国庆集训派对Day2 Solution
A 矩阵乘法
思路:
1° 牛客机器太快了,暴力能过。
#include <bits/stdc++.h>
using namespace std; #define N 5000 int n, p, m;
int a[N][], b[][N], ans[N][N]; void Run()
{
while (scanf("%d%d%d", &n, &p, &m) != EOF)
{
for (int i = ; i <= n; ++i)
for (int j = ; j <= p; ++j)
scanf("%X", &a[i][j]);
for (int j = ; j <= m; ++j)
for (int i = ; i <= p; ++i)
scanf("%1d", &b[i][j]);
for (int i = ; i <= n; ++i)
for (int j = ; j <= m; ++j)
for (int k = ; k <= p; ++k)
ans[i][j] += a[i][k] * b[k][j];
int res = ;
for (int i = ; i <= n; ++i)
for (int j = ; j <= m; ++j)
res ^= ans[i][j];
printf("%d\n", res);
}
} int main()
{
#ifdef LOCAL
freopen("Test.in", "r", stdin);
#endif Run();
return ;
}
2°
考虑到p很小,可以将它分块,比如说分成8Bit一块,那么对应的只有256种情况,可以预处理一下,然后乘法变成取值
复杂度大概在(4096 * 4096 * 8) 左右
#include <bits/stdc++.h>
using namespace std; #define N 5000 int n, p, m;
int a[N][], b[][N], ap[N][][], bp[][N], ans[N][N]; void Run()
{
while (scanf("%d%d%d", &n, &p, &m) != EOF)
{
for (int i = ; i < n; ++i)
for (int j = ; j < p; ++j)
scanf("%X", &a[i][j]);
for (int j = ; j < m; ++j)
for (int i = ; i < p; ++i)
scanf("%1d", &b[i][j]);
p = (p - ) / + ;
for (int i = ; i < n; ++i)
for (int j = ; j < p; ++j)
for (int k = ; k < ; ++k)
for (int l = ; l < ; ++l)
if (k & ( << l)) ap[i][j][k] += a[i][j * + l];
for (int j = ; j < m; ++j)
for (int i = p - ; i >= ; --i)
for (int k = ; k >= ; --k)
bp[i][j] = bp[i][j] * + b[k + * i][j];
for (int i = ; i < n; ++i)
for (int j = ; j < m; ++j)
for (int k = ; k < p; ++k)
ans[i][j] += ap[i][k][bp[k][j]];
int res = ;
for (int i = ; i < n; ++i)
for (int j = ; j < m; ++j)
res ^= ans[i][j];
printf("%d\n", res);
}
} int main()
{
#ifdef LOCAL
freopen("Test.in", "r", stdin);
#endif Run();
return ;
}
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$
#include <bits/stdc++.h>
using namespace std;
using ll = long long; int n, d;
ll f[]; ll qpow(ll base, ll n)
{
ll res = ;
while (n)
{
if (n & ) res *= base;
base *= base;
n >>= ;
}
return res;
} ll work(int h)
{
if (h <= d)
return max(h, );
if (f[h]) return f[h];
f[h] = work(h - ) + work(h - d - ) + ;
return f[h];
} void Run()
{
while (scanf("%d%d", &n, &d) != EOF)
{
memset(f, , sizeof f);
printf("%lld\n", qpow(2ll, n - ) - work(n - d - ) - );
}
} int main()
{
#ifdef LOCAL
freopen("Test.in", "r", stdin);
#endif Run();
return ;
}
G 数组合并
留坑。
H 卡牌游戏
思路:考虑抽到一张卡片的概率是$\frac{m}{n}$ 那么期望就是 $\frac{n}{m}$ 抽到一张之后再抽一张的概率是$\frac{m - 1}{n - 1}$
#include <bits/stdc++.h>
using namespace std; int t, n, m, k; int main()
{
scanf("%d", &t);
for (int kase = ; kase <= t; ++kase)
{
scanf("%d%d%d", &n, &m, &k);
double res = ;
for (int i = ; i <= k; ++i, --n, --m)
res += n * 1.0 / m;
printf("Case #%d: %.10f\n", kase, res);
}
return ;
}
I 游戏
留坑。
J 魔法阵
留坑。
K 排队
留坑。
牛客国庆集训派对Day2 Solution的更多相关文章
- 牛客国庆集训派对Day2
题目链接:https://www.nowcoder.com/acm/contest/202/A A 题意:给出最大4096*64和64*4096的矩阵,其中有一个矩阵只含有0和1,问你它们相乘所得到得 ...
- 牛客国庆集训派对Day2 H 期望
小贝喜欢玩卡牌游戏.某个游戏体系中共有N种卡牌,其中M种是稀有的.小贝每次和电脑对决获胜之后都会有一个抽卡机会,这时系统会随机从N种卡中选择一张给小贝.普通卡可能多次出现,而稀有卡牌不会被重复抽到.小 ...
- 牛客国庆集训派对Day4 Solution
A 深度学习 puts(n) #include <bits/stdc++.h> using namespace std; int main() { double n; while ( ...
- 牛客国庆集训派对Day1 Solution
A Tobaku Mokushiroku Kaiji 水. #include <bits/stdc++.h> using namespace std; ], b[]; void Ru ...
- 牛客国庆集训派对Day3 Solution
A Knight 留坑. B Tree 思路:两次树形DP,但是要考虑0没有逆元 可以用前缀后缀做 #include <bits/stdc++.h> using namespa ...
- 牛客国庆集训派对Day5 Solution
A 璀璨光滑 留坑. B 电音之王 蒙特马利大数乘模运算 #include <bits/stdc++.h> using namespace std; typedef long ...
- 牛客国庆集训派对Day6 Solution
A Birthday 思路:设置一个源点,一个汇点,每次对$源点对a_i, b_i , a_i 对 b_i 连一条流为1,费用为0的边$ 每个点都再连一条 1, 3, 5, 7, ....的边到 ...
- 牛客国庆集训派对Day7 Solution
A Relic Discovery 水. #include <bits/stdc++.h> using namespace std; int t, n; int main() { s ...
- 牛客国庆集训派对Day2 F、平衡二叉树 【构造+记忆化搜索】
任意门:https://www.nowcoder.com/acm/contest/202/F 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 1048576K,其他语言2097152K6 ...
随机推荐
- Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器[摘抄]
[文章作者:张宴 本文版本:v6.3 最后修改:2010.07.26 转载请注明原文链接:http://blog.s135.com/nginx_php_v6/] 前言:本文是我撰写的关于搭建“Ngin ...
- Sublime Text 快捷键使用
Sublime Text 2包含了大量快捷操作,而且还很方便修改和追加自己喜欢的快捷键.查看快捷键的方式也很简单:------------------------------------------- ...
- eclispe创建gradle项目
1.打开eclipse,选择Help——>install from Catalog,安装如图所示的gradle 2.右击空白处,new——>other——>Gradle——>G ...
- ExtJS6的中sencha cmd中自动创建案例项目代码分析
在之前的博文中,我们按照sencha cmd的指点,在自己win7虚拟机上创建了一个案例项目,相当于创建了一个固定格式的文档目录结构,然后里面自动创建了一系列js代码.这是使用sencha cmd自动 ...
- java高级---->Thread之FutureTask的使用
FutureTask类是Future 的一个实现,并实现了Runnable,所以可通过Excutor(线程池) 来执行,也可传递给Thread对象执行.今天我们通过实例来学习一下FutureTask的 ...
- web基础---->Fileupload文件的上传
这里我们介绍文件上传的知识,使用的是apache的Commons FileUpload框架. 文件上传的使用 项目的部分结构如下: 一.使用Commons FileUpload的上传功能,我们需要引入 ...
- 开发人员必读openstack网络基础2:交换机、路由器、DHCP
我们在使用openstack的过程中,会遇到创建虚拟机路由器.交换机等,那么1.他们的作用到底是什么?2.DHCP为什么会产生,它的作用是什么? 个人总结:交换机:一般用在同一网段,工作在数据链路层, ...
- vue脚手架一
一准备: 在F:/xampp/htdocs/文件夹下检查: 1,node -v; 2,npm -v; 3,淘宝镜像(选装): npm install -g cnpm --registry= https ...
- sencha touch 问题汇总
做sencha touch有一段时间了,目前而言,sencha touch在android上问题比较严重,在此对android中sencha touch的问题做一些汇总: 1.内存问题: 打包成安装程 ...
- Service简介 demos
extends:http://blog.csdn.net/ithomer/article/details/7364024 一. Service简介 Service是android 系统中的四大组件之一 ...