ABC326
我又来提供 low 算法了。
从 D 开始。
我们把 \(\text{A}\) 看成 \(1\),把 \(\text{B}\) 看成 \(2\),把 \(\text{C}\) 看成 \(3\)。
那么就可以想到状压,然后把每一行和每一列的情况状态即可。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 6;
int row[maxn],col[maxn];
string ans[maxn];
int n;
string r,c;
int tot = 0;
void dfs(int x,int y)
{
if(x == n)
{
if(tot == 3 * n)
{
cout << "Yes\n";
for(int i = 0;i < n;i++)
{
for(int j = 0;j < n;j++)
{
cout << ans[i][j];
}
cout << '\n';
}
exit(0);//杀死程序
}
return ;
}
if(y == n)
{
dfs(x + 1,0);
return ;
}
dfs(x,y + 1);//填.
for(int i = 0;i < 3;i++)
{
if(row[x] == 0 && i + 'A' != r[x])
{
continue;
}
if(col[y] == 0 && i + 'A' != c[y])
{
continue;
}//这样可以保证题目所说的2,3条件
if(row[x] >> i & 1)
{
continue;
}
if(col[y] >> i & 1)
{
continue;
}//不可以填的情况
ans[x][y] = 'A' + i;
row[x] ^= 1 << i;
col[y] ^= 1 << i;
tot += 1;
dfs(x,y + 1);
ans[x][y] = '.';
row[x] ^= 1 << i;
col[y] ^= 1 << i;
tot -= 1;//回溯
}
}
int main()
{
cin >> n >> r >> c;
for(int i = 0;i < n;i++)
{
for(int j = 0;j < n;j++)
{
ans[i][j] = '.';
}
}
dfs(0,0);
cout << "No";
return 0;
}
\(\text{tot}\) 指的是总共有多少个数。
不难。
其实就是每一个数取到的概率乘上每一个数的值即可。
设取到 \(a_i\) 的概率为 \(p_i\),则有 \(p_i = \dfrac{1}{n} \sum^{i-1}_{j=0} p_j\)。
为什么呢?
因为 \(\dfrac{1}{n} p_j\) 表示 \(x=j\) 时骰子显示 \(i\) 的概率。
所以就可以在 \(O(n)\) 的时间内求出来。
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod = 998244353;
int qpow(int a,int b)
{
int res = 1;
while(b)
{
if(b & 1)
{
res = res * a % mod;
}
a = a * a % mod;
b >>= 1;
}
return res;
}
int n;
signed main()
{
cin >> n;
int ans = 0,p = qpow(n,mod - 2);
for(int i = 1;i <= n;i++)
{
int a;
cin >> a;
ans = (p * a % mod + ans) % mod;
p = (p + p * qpow(n,mod - 2) % mod) % mod;
}
cout << ans << '\n';
return 0;
}
随机推荐
- 如何把jQuery对象转成DOM对象?OR DOM对象转化成jQuery对象
如何把jQuery对象转成DOM对象? 参考:https://www.imooc.com/code/8110 利用数组下标的方式读取到jQuery中的DOM对象 <div>元素一</ ...
- 力扣167(java&python)-两数之和 II - 输入有序数组(中等)
题目: 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数.如果设这两个数分别是 numbers[in ...
- 牛客网-SQL专项练习2
①从学生信息表(student)中提取姓名(name)列值为NULL的记录,SQL语句为: 解析:注意不是只查name值,而是查name值为空的所有信息 SQL语句为: SELECT * FROM s ...
- 通过Jenkins构建CI/CD实现全链路灰度
简介: 本文介绍通过 Jenkins 构建流水线的方式实现全链路灰度功能. 作者:卜比 本文介绍通过 Jenkins 构建流水线的方式实现全链路灰度功能. 在发布过程中,为了整体稳定性,我们总是希 ...
- 智能logo免费体验|网站Logo这样设计搜索排名跟着提升
简介:一个好的网站logo,不仅让用户一眼知道网站品牌传递的信息,还能提高网站专业度和丰富度,增加SEO搜索排名.今天分享下如何设计一款实用的网站logo.阿里云智能logo设计,在线免费体验log ...
- [Go] panic: assignment to entry in nil map
以上错误出现在给 map 变量赋值的时候. 例如: type AbMap map[string]string var abMap AbMap abMap['a'] = 'b' 使用 map 变量需要使 ...
- 零侵入!试试这款Api接口文档生成器!
大家好,我是 Java陈序员. 作为一名合格的程序员,不仅代码要写好,而且文档要写好. 虽然目前有成熟的框架可以快速生成接口文档,如大名鼎鼎的 Swagger.但是 Swagger 需要编写大量的注解 ...
- WEB服务与NGINX(1)-HTTP协议基础
WEB服务与NGINX(1) 目录 WEB服务与NGINX(1) 1. HTTP协议 1.1 WEB资源 1.2 URI简介 1.3 WEB服务请求处理过程 1.4 HTTP报文结构 1.4.1 re ...
- iceoryx源码阅读(一)——全局概览
一.什么是iceoryx iceoryx是一套基于共享内存实现的进程间通信组件. 二.源码结构 iceoryx源码包括若干工程,整理如下表所示: 下图展示了主要项目之间的依赖(FROM:iceoryx ...
- EasyExcel处理Mysql百万数据的导入导出案例,秒级效率,拿来即用!
一.写在开头 今天终于更新新专栏 <EfficientFarm> 的第二篇博文啦,本文主要来记录一下对于EasyExcel的高效应用,包括对MySQL数据库百万级数据量的导入与导出操作,以 ...