牛客小白月赛75题解

C 豆子

构造题

由构造公式知 第n级好豆子 = 第n-1级坏豆子^1

所以只需要构造一个豆子结构就行

第 i 级豆子 = 第 i 级豆子 第 i 级豆子 第 i 级豆子 第 i 级豆子 ^ 1 第i级豆子=\begin{aligned} 第i级豆子 && 第i级豆子 \\ 第i级豆子 && 第i级豆子 \verb|^| 1 \end{aligned} i级豆子=i级豆子i级豆子i级豆子i级豆子^1

预处理构造一下输出就行

#include<iostream>
using namespace std;
bool s[1100][1100];
bool d[6][6];
void init(int n)
{s[1][1] = 1;for(int i=2;i<=n;++i){int x = (1<<(i-2));for(int j=1;j<=x;++j)for(int k=1;k<=x;++k){s[j+x][k] = s[j][k];s[j][k+x] = s[j][k];s[j+x][k+x] = s[j][k]^1;}}for(int i=3;i<6;++i)for(int j=3;j<6;++j)d[i][j] = 1;
}
void print(int x,int y,int u)
{for(int i=0;i<6;++i){for(int j=1;j<=y;++j)for(int k=0;k<6;++k){if((s[x][j]^u^d[i][k]))cout<<"*";elsecout<<".";}cout<<endl;}
}
int main()
{int n;cin>>n;init(n);int d = (1<<(n-1));for(int i=1;i<=d;++i){print(i,d,n&1^1);}return 0;
}

D 矩阵

直接两层bfs就行

#include<bits/stdc++.h>
using namespace std;
int dp[1010][1010][2];
int dr[] = {-1,0,1,0,0,1,0,-1};
queue<vector<int>>q;
string arr[1010];
int n,m;
void bfs(int x,int y,char f)
{memset(dp,0x3f,sizeof(dp));   dp[x][y][f-'0'] = 0;q.push({x,y,f-'0'});while(!q.empty()){auto u = q.front();q.pop();for(int i=0;i<4;++i){int nx = u[0] + dr[i<<1];int ny = u[1] + dr[i<<1|1];int nf = u[2]^1;if(nx>=0 && nx<n && ny>=0 && ny<m){int cost = 1;if(arr[nx][ny]-'0' != nf)cost = 2;if(dp[nx][ny][nf]>dp[u[0]][u[1]][u[2]]+cost){q.push({nx,ny,nf});dp[nx][ny][nf]=dp[u[0]][u[1]][u[2]]+cost;}}}}}int main()
{cin>>n>>m;for(int i=0;i<n;++i)cin>>arr[i];bfs(0,0,arr[0][0]);cout<<min(dp[n-1][m-1][0],dp[n-1][m-1][1])<<endl;
}/*
dp大概率会卡这组数据
2 10
1111101010
0101011111
*/

E 数数

由于数字不大,直接dp

用dp[i][j]表示长度为i时前缀和为j的方案数,显然只有 i ∣ j i|j ij(j被i整除)时才存在方案数

可以推出

d p [ i ] [ j ] = { 0 , j m o d i ≠ 0 ∑ k = j − m j d p [ i − 1 ] [ k ] , j m o d i = 0 dp[i][j] =\begin{cases} \ \ \ \ 0\ & , j\ mod\ i \ne 0 \\ \sum\limits^{j}_{k = j-m}dp[i-1][k] &, j\ mod\ i=0 \end{cases} dp[i][j]=     0 k=jmjdp[i1][k],j mod i=0,j mod i=0

这么遍历一次复杂度为 O ( n m l n ( n m ) ) O(nmln(nm)) O(nmln(nm)),由于dp中有很多0,所以可以优化一下

∑ k = j − m j d p [ i − 1 ] [ k ] = ∑ k = j − m + 1 i − 1 j i − 1 d p [ i − 1 ] [ k ∗ ( i − 1 ) ] \sum\limits^{j}_{k = j-m}dp[i-1][k] = \sum \limits^{\frac{j}{i-1}}_{k=\frac{j-m+1}{i-1}}dp[i-1][k*(i-1)] k=jmjdp[i1][k]=k=i1jm+1i1jdp[i1][k(i1)]

那么复杂度就变成了 O ( n l n ( n m ) l n ( m ) ) O(nln(nm)ln(m)) O(nln(nm)ln(m))

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll mod = 1e9+7;ll dp[6000000];
int main()
{int n,m;cin>>n>>m;for(int j=1;j<=m;++j)dp[j] = 1;for(int i=2;i<=n;++i){for(int j=i*m;j>=i;j-=i){dp[j] = 0;for(int k = j/(i-1)*(i-1);k>=max(0,j-m);k-=i-1)dp[j] = (dp[j]+dp[k])%mod;}}int ans = 0;for(int i=n;i<=n*m;i+=n)ans = (ans+dp[i])%mod;cout<<ans<<endl;
} 

F 打牌

请添加图片描述
直接大力出奇迹,乱搞得了

通过阅读题目

而阿宁在手上有两张相同的牌,第三张不同的牌时,阿宁在相同的牌中等概率随机挑一张交给下家。其它情况阿宁也是等概率随机挑选。

分析会发现阿宁的行为是确定的。即如果此时没有人win,阿宁就会把手中最多的牌发出去。所以在没有剪枝的情况下复杂度应该为 O ( 4 n ) O(4^n) O(4n)

说实话这游戏想长时间不赢其实很难的,阿宁的操作保证在多轮操作后他手上至少会有两种手牌,所以说阿宁一直处于听牌的状态,“只要能拿到那张牌……”“不好意思,和!”,

然后考虑如果其中一个人有三张的情况,假设为aaa,另外两人就是bbc,ccb。如果aaa是阿宁上家,阿宁就赢了。

下家(A)为aaa的时候,此时

  • 阿宁:bbc

  • A:aaa

  • B: ccb

阿宁打b,A打a,如果B不打b就赢了,因此想要游戏继续下去就得打b,因此就变成

  • 阿宁:bbc

  • A:aab

  • B: cca

考虑大伙都有两张牌的情况,会发现b手上至少存在一张能让阿宁赢的牌,阿宁打出去的牌必然是a需要的牌,阿宁手上有的牌ab都有(都可以用反证法证明)。用字母表示当前情况

  • 阿宁:aab

  • A:bbc/cca

  • B: cca/bbc

第一种情况{aab,cca,bbc}:

只有一种打法能让游戏继续下去,那就是阿宁打出A,A打出c,B打出a,此时会变成{aab,abb,ccc}情况。根据上面的分析,此时阿宁必赢

第二种情况{aab,cca,bbc}:

阿宁打出a,B为了阿宁不赢得打出b,A为了B不赢得打出c,此时变成{bba,aac,ccb}变成了必赢态

分析了一大轮,就会发现,在有限步内必有人会赢,而且这个有限步甚至不会超过5步。

所以这题直接暴力dfs就完事了,甚至不用剪枝。乱搞就行了。

#include<bits/stdc++.h>
#define ll long long 
using namespace std;
const ll mod = 1e9+7;
ll sp[3][3];
ll now[3][3];
map<char,int>mp;
ll qpow(ll a,ll b)
{ll ret = 1;while(b){if(b&1) ret = ret*a%mod;a = a*a%mod;b>>=1;}return ret;
}
ll dfs(int n)
{for(int i=0;i<3;++i)if(sp[i][0]*sp[i][1]*sp[i][2])return i==0;if(!n)return 0;ll ret = 0;int mx = 0;if(sp[0][1]>sp[0][mx]) mx = 1;if(sp[0][2]>sp[0][mx]) mx = 2;for(int i=0;i<3;++i){if(!sp[1][i])continue;for(int j=0;j<3;++j){if(!sp[2][j])continue;ll p = 1ll*sp[1][i]*sp[2][j]*qpow(9,mod-2)%mod;sp[0][mx]--;sp[1][mx]++;sp[1][i]--;sp[2][i]++;sp[2][j]--;sp[0][j]++;ret = (ret+dfs(n-1)*p%mod)%mod;sp[0][mx]++;sp[1][mx]--;sp[1][i]++;sp[2][i]--;sp[2][j]++;sp[0][j]--;}}return ret;
}
int main()
{mp['w'] = 0;mp['i'] = 1;mp['n'] = 2;int n;cin>>n;for(int i=0;i<3;++i)for(int j=0;j<3;++j){char c;cin>>c;sp[i][mp[c]]++;}ll ans = dfs(n);cout<<ans<<endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx Linux设置开机自启动

使用如下命令 vi /lib/systemd/system/nginx.service 创建并编辑文件将以下代码黏贴至此文件中 [Unit] Descriptionnginx Afternetwork.target[Service] Typeforking TimeoutSec0 #防止启动超时 Userroot Grouproot criptionnacos Afternetwork.target[Service] Typeforking T…

习题-Java网络编程

目录 1.TCP-对象 2.UDP​​​​​​​​​​​​​​ 1.TCP-对象 利用TCP传输对象信息&#xff0c;需要对对象进行实例化 User类&#xff1a; package dh09.demo02;import java.io.Serializable;public class User implements Serializable {private String name;private St…

使用Postman+JMeter进行简单的接口测试

以前每次学习接口测试都是百度&#xff0c;查看相关人员的实战经验&#xff0c;没有结合自己公司项目接口真正具体情况。 这里简单分享一下公司项目Web平台的一个查询接口&#xff0c;我会使用2种工具Postman和JMeter如何对同一个接口做调试。 准备工作 首先&#xff0c;登录公…

基于FME二开产品:NewGIS integration介绍

目录 前言 一、模板上传 二、模板在线运行 1.模板参数解析 2.模板运行 三、成果管理 总结 前言 爆肝两个月&#xff0c;我和我的团队终于打造出了一款能完美适配所有FME模板的在线模板管理平台&#xff0c;目前支持FME2021版本的所有模板的在线运行、管理。整体技术框架…

uni-app:常见组件view、text、icon

根据html&#xff1a;可知div是块级标签&#xff0c;span是行级标签 这里view类似于div&#xff0c;text类似于span&#xff0c;即 块级标签&#xff1a;view 行级标签&#xff1a;text、icon 类似效果 两个icon图标&#xff0c;置于第一排 两个view&#xff0c;分别位于第…

项目名称:无源在线词典项目

一&#xff0c;概述 基于C语言的网络电子词典项目&#xff0c;使用到了tcp协议的并发服务器设计、网络编程、文件I/O、数据库等多方面的知识。可以满足多用户同时登陆&#xff0c;用户登陆后可以查询单词及历史记录&#xff0c;具有查找快速&#xff0c;保密性好等优点。 开…

JAVA集成国密SM4

JAVA集成国密SM4加解密 一、pom配置二、代码集成2.1、目录结构2.2、源码2.3、测试 三、遇到的坑3.1、秘钥长度3.2、转码问题 四、相关链接 国密算法概述&#xff1a;https://blog.csdn.net/qq_38254635/article/details/131801527 SM4对称算法 SM4 无线局域网标准的分组数据算…

c++内存映射文件

概念 将一个文件直接映射到进程的进程空间中&#xff08;“映射”就是建立一种对应关系,这里指硬盘上文件的位置与进程逻辑地址空间中一块相同区域之间一 一对应,这种关系纯属是逻辑上的概念&#xff0c;物理上是不存在的&#xff09;&#xff0c;这样可以通过内存指针用读写内…

qt 32位编译 内存溢出 无法 运行在win7 32位

项目在 编译32位系统 内存溢出 设置成了x64 但是 最后在xp32位系统运行提示 在下载了n个dll之后发现这种状况无穷无尽&#xff0c;后来在查阅资料时发现可以直接打开qt安装目录下的“vcredist”文件夹&#xff0c;将对应位数的程序拷到win7电脑上&#xff0c;直接运行&…

Orleans 微软基于 Actor 的分布式框架

一、Actor模型工作原理 Actor模型是一种并发编程模型&#xff0c;它基于消息传递实现&#xff0c;是一种轻量级的并发模型。在Actor模型中&#xff0c;每个Actor都是一个独立的执行单元&#xff0c;它可以接收和发送消息&#xff0c;并且可以执行一些本地操作&#xff0c;但是不…

【ARM Cortex-M 系列 1 -- Cortex-M0, M3, M4, M7, M33 差异】

文章目录 Cortex-M 系列介绍Cortex-M0/M0 介绍Cortex-M3/M4 介绍Cortex-M7 介绍Cotex-M33 介绍 下篇文章&#xff1a;ARM Cortex-M 系列 2 – CPU 之 Cortex-M7 介绍 Cortex-M 系列介绍 Cortex-M0/M0 介绍 Cortex-M0 是 ARM 公司推出的一款微控制器&#xff08;MCU&#xff0…

网络安全在2023好入行吗?

前言 023年的今天&#xff0c;慎重进入网安行业吧&#xff0c;目前来说信息安全方向的就业对于学历的容忍度比软件开发要大得多&#xff0c;还有很多高中被挖过来的大佬。 理由很简单&#xff0c;目前来说&#xff0c;信息安全的圈子人少&#xff0c;985、211院校很多都才建…

高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测技术

能源是国民经济发展和人民生活必须的重要物质基础。在过去的200多年里&#xff0c;建立在煤炭、石油、天然气等化石燃料基础上的能源体系极大的推动了人类社会的发展。但是人类在使用化石燃料的同时&#xff0c;也带来了严重的环境污染和生态系统破坏。近年来&#xff0c;世界各…

python appium UI 自动化测试框架讨论

目录 前言&#xff1a; 框架共性总结 Auto_Analysis 权限弹窗识别 前言&#xff1a; Python Appium UI自动化测试框架是一种用于测试移动应用程序的工具&#xff0c;它结合了Python编程语言和Appium测试框架的功能。 框架共性总结 1 自动找设备 连接设备 2 自动启 appium …

《数据结构》数据结构概念,顺序表,链表

目录 1. 为什么学习数据结构&#xff1f; 2. 数据结构 2.1. 数据 2.2. 逻辑结构 2.3. 存储结构 2.4. 操作 3. 算法 3.1. 算法与程序 3.2. 算法与数据结构 3.3. 算法的特性 3.4. 如何评价一个算法的好坏 4. 线性表 4.1. 顺序表 4.2. 单向链表 4.3. 单向循环链表&…

SpringBoot使用Redis作为缓存器缓存数据的操作步骤以及避坑方案

1.非注解式实现 2.1使用之前要明确使用的业务场景 例如我们在登录时&#xff0c;可以让redis缓存验证码&#xff0c;又如在分类下显示菜品数据时&#xff0c;我们可以对分类和菜品进行缓存数据等等。 2.2导入Redis相关依赖 <dependency><groupId>org.springfra…

SpringAMQP - 消息传输时,如何提高性能?解决 SQL 注入问题?

目录 一、问题背景 二、从消息转化器根源解决问题 1.引入依赖 2.在服务生产者和消费者中都重新定义一个 MessageConverter&#xff0c;注入到 Spring 容器中 一、问题背景 在SpringAMQP的发送方法中&#xff0c;接收消息的类型是Object&#xff0c;也就是说我们可以发送任意…

DB-Engines排名公布 GBASE南大通用入围国产数据库TOP 3

什么是DB-Engines排名&#xff1f; DB-Engines排名是数据库领域的流行度榜单&#xff0c;它对全球范围内的419款数据库&#xff08;截至2023年7月&#xff09;进行排名&#xff0c;每月更新一次&#xff0c;排名越靠前&#xff0c;则表示越流行。在很多技术选型的场合&#xf…

【idea】idea全局设置Maven配置

Idea版本&#xff1a;2021.1.1 1、点击File->Close project 2、点击Customize->All settings 3、设置Maven

# Linux终端控制字符详解以及简单应用实践

Linux终端控制字符详解以及简单应用实践 文章目录 Linux终端控制字符详解以及简单应用实践1 控制字符表2 控制字符 ESC &#xff08;0x1B&#xff0c;^[&#xff09;子参数表3 控制字符 ESC &#xff08;0x1B&#xff0c;^[&#xff09;子参数表 - 字符颜色参照表4 实践&#x…