A - Square Inequality

水题

B - Intersection

水题,就是找公共区间,维护一下 Lmax,Rmin即可

void solve() {
int n, a, b;
int maxa = -1, minb = 0x3f3f3f3f;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> a;
maxa = max(maxa, a);
}
for (int i = 0; i < n; ++i) {
cin >> b;
minb = min(minb, b);
}
cout << (minb - maxa + 1 > 0 ? minb - maxa + 1 : 0);
}

C - IPFL

交换两个或者把前一半和后一半交换,求 \(m\) 次变换后的结果。

模拟会T,把字符串前后两个分开存,然后进行操作

void solve() {
string s, x, y;
int n, q, a, b, op;
cin >> n >> s >> q;
x = s.substr(0, n), y = s.substr(n, n);
while (q--) {
cin >> op >> a >> b;
if (op == 2) swap(x, y);
else {
a--, b--;
if (a > b) swap(a, b);
if (b < n) swap(x[a], x[b]);
else if (a >= n)
swap(y[a - n], y[b - n]);
else
swap(x[a], y[b - n]);
}
}
cout << x << y;
}

D - RGB Coloring 2

\(n\) 个点 \(m\) 条边的无向图,求用三种颜色染色后每条边相连的点不同的图有几种。

一看数据范围显然是一个搜索题,不过直接搜索会有一些问题,因为先搜到哪个的不同可能图染色后是相同的,会造成重复,既然如此,那我们随便指定一个顺序就可以了。

using ll    = long long;
const int N = 30;
vector<int> e[N], a;
int col[N], v[N][4];
ll ans = 1, cur;
bool vis[N];
void dfs0(int x) {
a.push_back(x);
vis[x] = true;
for (int &y : e[x])
if (!vis[y]) dfs0(y);
}
void dfs(int x) {
if (x == a.size()) {
cur++;
return;
}
for (int i = 1; i <= 3; ++i) {
if (!v[a[x]][i]) {
for (int &y : e[a[x]])
if (!v[y][i]) v[y][i] = a[x];
dfs(x + 1);
for (int &y : e[a[x]])
if (v[y][i] == a[x]) v[y][i] = 0;
}
}
}
void solve() {
int n, m;
cin >> n >> m;
for (int i = 0, u, v; i < m; ++i) {
cin >> u >> v;
e[u].push_back(v);
e[v].push_back(u);
}
for (int i = 1; i <= n; ++i) {
if (!vis[i]) {
cur = 0;
a.resize(0);
dfs0(i);
for (int &y : e[i])
if (!v[y][1]) v[y][1] = i;
dfs(1);
ans = ans * cur * 3;
}
}
cout << ans << "\n";
}

E - Permutation 状压DP

借用一下 Acfboy 的思路

// Murabito-B 21/04/26
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 20;
struct node {
int x, y, z;
bool operator<(node b) const { return x < b.x; }
} a[N];
int n, m, L[N], R[N], g[N], f[(1 << 19) + 5];
bool flag[(1 << 19) + 5];
int popcount(int x) { return x == 0 ? 0 : popcount(x & (x - 1)) + 1; }
void solve() {
cin >> n >> m;
for (int i = 1; i <= m; ++i) cin >> a[i].x >> a[i].y >> a[i].z;
sort(a + 1, a + 1 + m);
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
if (a[j].x == i) {
L[i] = j;
break;
}
}
for (int j = m; j > 0; --j) {
if (a[j].x == i) {
R[i] = j;
break;
}
}
} for (int S = 1; S < (1 << n); ++S) {
flag[S] = true;
int k = popcount(S);
if (L[k] == 0) continue;
for (int i = 1; i <= n; ++i) g[i] = 0;
for (int i = 1, j = 1; i <= k; ++i) {
while ((S & (1 << j)) == 0) j++;
for (int l = j; l <= n; ++l) g[l]++;
j++;
} for (int i = L[k]; i <= R[k]; ++i)
flag[S] &= (g[a[i].y] <= a[i].z);
}
f[0] = 1;
for (int S = 0; S < (1 << n); ++S)
for (int i = 0; i <= 18; ++i)
if (((S & (1 << i)) == 0) && flag[S | (1 << i)]) f[S | (1 << i)] += f[S];
cout << f[(1 << n) - 1];
}
signed main() {
ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
solve();
}

AtCoder Beginner Contest 199 游记(AB水题,C字符串操作,D搜索,E状压)的更多相关文章

  1. AtCoder Beginner Contest 084(AB)

    A - New Year 题目链接:https://abc084.contest.atcoder.jp/tasks/abc084_a Time limit : 2sec / Memory limit  ...

  2. AtCoder Beginner Contest 083 (AB)

    A - Libra 题目链接:https://abc083.contest.atcoder.jp/tasks/abc083_a Time limit : 2sec / Memory limit : 2 ...

  3. AtCoder Beginner Contest 188 F - +1-1x2 思维题

    题目描述 给你两个数 \(x\),\(y\) 可以对 \(x\) 进行 \(+1,-1\) 或 \(\times 2\) 的操作 问最少操作多少次后变为 \(y\) \(x,y \leq 10^{18 ...

  4. AtCoder Beginner Contest 137 F

    AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...

  5. AtCoder Beginner Contest 068 ABCD题

    A - ABCxxx Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement This contes ...

  6. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  7. AtCoder Beginner Contest 223

    AtCoder Beginner Contest 223 A是纯纯的水题,就不说了 B - String Shifting 思路分析 我真的sb,一开始想了好久是不是和全排列有关,然后读了好几遍题目也 ...

  8. KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解

    KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...

  9. AtCoder Beginner Contest 184 题解

    AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...

  10. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

随机推荐

  1. 2023振兴杯-Crypto wp

    crypto1 题目 from flag import flag def encrypt(x, y): key='zxb' result='' for i in range(len(x)): resu ...

  2. springboot整合mybatis步骤思路

    /** * springboot整合mybatis步骤思路 * 依赖导入 * 建表 * 实体类 * mapper配置文件 * mapper接口 * yaml配置 * properties配置数据库连接 ...

  3. 从零玩转ShardingSphere分库分表 (概括)-shardingsphere1

    title: 从零玩转ShardingSphere分库分表 (概括) date: 2022-05-25 17:58:25.61 updated: 2022-08-22 22:59:02.624 url ...

  4. JavaScript this 绑定详解

    函数内 this 绑定 函数内this的绑定和函数定义的位置没有关系,和调用的方式和调用位置有关系,函数内的this是在被调用执行时被绑定的. this的具体绑定规则 this 绑定基本包含下面4种绑 ...

  5. 国内AI大模型 VS chatgpt (20)-- H265/H264有何不同,h265有什么优势?

    H265/H264有何不同,h265有什么优势? 文心一言: H.264和H.265是两种不同的视频编码标准,它们在压缩质量和带宽需求方面有所不同. H.264是一种高效的视频压缩标准,它的编码单位是 ...

  6. Windows10 Docker安装详细教程

    前言: 在上一章节已经成功的在Linux CentOS 8.4远程服务器中安装了Docker,下面让我们一起来试试如何在Windows10中安装Docker并运行起来.有人说你既然在Linxu环境中安 ...

  7. .NET技术分享日活动-202104

    2021年4月27日下午,个人组织举办了山东地区的山东.NET技术分享日活动.围绕互联网技术.大数据.机器学习.业务实践等方向进行创新技术的实践分享. 本次技术分享日活动面向了山东地区广大的.NET ...

  8. 从大数据到AI,华为云存储加速企业大模型快速应用

    摘要:AI与大数据算法不断发展,在生产中的应用也越来越广,而应用的场景除了对算法,软件架构要求越来越高外,也对底层IaaS(基础设施即服务)提出了新的挑战. AI与大数据算法不断发展,在生产中的应用也 ...

  9. 浅析华为云基于HBase MTTR上的优化实践

    摘要:主要介绍华为云在HBase 2.x内核所做的一些MTTR优化实践. 本文分享自华为云社区<华为云在HBase MTTR上的优化实践>,作者: 搬砖小能手. 随着HBase在华为云的广 ...

  10. MySQL数据库事务隔离性的实现

    摘要:事实上在数据库引擎的实现中并不能实现完全的事务隔离,比如串行化. 本文分享自华为云社区<[数据库事务与锁机制]- 事务隔离的实现>,原文作者:技术火炬手 . 事实上在数据库引擎的实现 ...