比赛链接:https://codeforces.com/contest/1421

A. XORwice

题意

给出两个正整数 \(a、b\),计算 \((a \oplus x) + (b \oplus x)\) 的最小值。

题解

\[\begin{equation} a+b = a \oplus b + ((a\ \&\ b)<<1) \end{equation}
\]
\[\begin{equation} (a \oplus x) + (b \oplus x) = ((a \oplus x) \oplus (b \oplus x)) + (((a \oplus x)\ \& \ (b \oplus x))<<1) \end{equation}
\]
\[\ \ \ \ \ \ \ \ \ \ = (a \oplus b) + (((a \oplus x)\ \&\ (b \oplus x))<<1)
\]

显然存在 \(x\)(事实上 \(x = a\ \& \ b\))使得 \(((a \oplus x)\ \& \ (b \oplus x)) = 0\) 。

所以 \((a \oplus x) + (b \oplus x) \ge a \oplus b\) 。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int a, b;
cin >> a >> b;
cout << (a ^ b) << "\n";
}
return 0;
}

B. Putting Bricks in the Wall

题意

有一个 \(01\) 方阵,起点和终点分别位于左上角和右下角,每次只能选择一条 \(0\) 路径或 \(1\) 路径到达终点。

现在要使起点终点不连通,最多可以反转两个方格,输出任一方案。

题解

如果不能连通,最简单的方案就是使得左上角和右下角相邻四个方块的状态为 \(0011\) 或 \(1100\) 。

所以枚举两种状态,如果需要更改的次数小于等于 \(2\) 输出即可。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector<string> MP(n);
for (auto &x : MP) cin >> x;
string s;
(((s += MP[0][1]) += MP[1][0]) += MP[n - 2][n - 1]) += MP[n - 1][n - 2];
for (string t : {"0011", "1100"}) {
vector<pair<int, int>> v;
if (s[0] != t[0]) v.emplace_back(1, 2);
if (s[1] != t[1]) v.emplace_back(2, 1);
if (s[2] != t[2]) v.emplace_back(n - 1, n);
if (s[3] != t[3]) v.emplace_back(n, n - 1);
if (v.size() <= 2) {
cout << v.size() << "\n";
for (auto [x, y] : v) cout << x << ' ' << y << "\n";;
break;
}
}
}
return 0;
}

C. Palindromifier

题意

给出一个字符串 \(s_1s_2 \dots s_{n-1}s_n\),每次操作有两种选择:

  • 将 \(s_2s_3 \dots s_i(i \le n-1)\) 反转后添加到字符串左侧
  • 将 \(s_is_{i+1} \dots s_{n-1}(i \ge 2)\) 反转后添加到字符串右侧

    最多操作 \(30\) 次,给出使得字符串为回文字符串的操作过程。

题解

以某一端为对称中心构造即可。

如:12345 就以 5 为中心对称构造

12345

212345

2123454321

21234543212

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
cin >> s;
cout << 3 << "\n";
cout << 'L' << ' ' << 2 << "\n";
cout << 'R' << ' ' << 2 << "\n";
cout << 'R' << ' ' << 2 * s.size() - 1 << "\n";
return 0;
}

D. Hexagons

题意

给出:

  • \(x+1\) 的花费 \(c_6\)
  • \(x+1,\ y+1\) 的花费 \(c_1\)
  • \(y+1\) 的花费 \(c_2\)
  • \(x-1\) 的花费 \(c_3\)
  • \(x-1,\ y-1\) 的花费 \(c_4\)
  • \(y-1\) 的花费 \(c_5\)

计算从 \((0,0)\) 走到 \((x,y)\) 的最小花费。

题解

计算一下六个方向的最小花费,然后分类讨论即可。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
long long x, y;
cin >> x >> y;
long long c1, c2, c3, c4, c5, c6;
cin >> c1 >> c2 >> c3 >> c4 >> c5 >> c6;
c1 = min(c1, c2 + c6);
c2 = min(c2, c1 + c3);
c3 = min(c3, c2 + c4);
c4 = min(c4, c3 + c5);
c5 = min(c5, c4 + c6);
c6 = min(c6, c1 + c5);
if (x >= 0 and y >= 0) {
if (x > y)
cout << y * c1 + (x - y) * c6 << "\n";
else
cout << x * c1 + (y - x) * c2 << "\n";
} else if (x <= 0 and y <= 0) {
if (x > y)
cout << -x * c4 + (x - y) * c5 << "\n";
else
cout << -y * c4 + (y - x) * c3 << "\n";
} else if (x >= 0 and y <= 0) {
cout << x * c6 - y * c5 << "\n";
} else if (x <= 0 and y >= 0) {
cout << -x * c3 + y * c2 << "\n";
}
}
return 0;
}

Codeforces Round #676 (Div. 2)【ABCD】的更多相关文章

  1. Codeforces Round #682 (Div. 2)【ABCD】

    比赛链接:https://codeforces.com/contest/1438 A. Specific Tastes of Andre 题意 构造一个任意连续子数组元素之和为子数组长度倍数的数组. ...

  2. Codeforces Round #678 (Div. 2)【ABCD】

    比赛链接:https://codeforces.com/contest/1436 A. Reorder 题解 模拟一下这个二重循环发现每个位置数最终都只加了一次. 代码 #include <bi ...

  3. Codeforces Round #675 (Div. 2)【ABCD】

    比赛链接:https://codeforces.com/contest/1422 A. Fence 题意 给出三条边 $a,b,c$,构造第四条边使得四者可以围成一个四边形. 题解 $d = max( ...

  4. Codeforces Round #668 (Div. 2)【ABCD】

    比赛链接:https://codeforces.com/contest/1405 A. Permutation Forgery 题意 给出一个大小为 $n$ 的排列 $p$,定义 \begin{equ ...

  5. Codeforces Round #732 (Div. 2)【ABCD】

    比赛链接:https://codeforces.com/contest/1546 A. AquaMoon and Two Arrays 题意 给出两个大小为 \(n\) 的数组 \(a, b\) ,每 ...

  6. Codeforces Round #677 (Div. 3)【ABCDE】

    比赛链接:https://codeforces.com/contest/1433 A. Boring Apartments 题解 模拟即可. 代码 #include <bits/stdc++.h ...

  7. Codeforces Round #382 Div. 2【数论】

    C. Tennis Championship(递推,斐波那契) 题意:n个人比赛,淘汰制,要求进行比赛双方的胜场数之差小于等于1.问冠军最多能打多少场比赛.题解:因为n太大,感觉是个构造.写写小数据, ...

  8. Codeforces Round #684 (Div. 2)【ABC1C2】

    比赛链接:https://codeforces.com/contest/1440 A. Buy the String 题解 枚举字符串中 \(0\) 或 \(1\) 的个数即可. 代码 #includ ...

  9. Codeforces Round #658 (Div. 2)【ABC2】

    做完前四题还有一个半小时... 比赛链接:https://codeforces.com/contest/1382 A. Common Subsequence 题意 给出两个数组,找出二者最短的公共子序 ...

随机推荐

  1. 十八般武艺玩转GaussDB(DWS)性能调优:路径干预

    摘要:路径生成是表关联方式确定的主要阶段,本文介绍了几个影响路径生成的要素:cost_param, scan方式,join方式,stream方式,并从原理上分析如何干预路径的生成. 一.cost模型选 ...

  2. 新蜂商城的mybatis plus版本,添加了秒杀专区、优惠卷领取以及后台搜索功能

    本项目是在newbee-mall项目的基础上改造而来,将orm层由mybatis替换为mybatis-plus,添加了秒杀功能.优惠劵功能以及后台搜索功能,喜欢的话麻烦给我个star 后台管理模块添加 ...

  3. MySQL 使用sql添加和创建用户

    用户管理 SQL 命令操作 用户表:mysql.user 本质:对mysql.user 表进行增删改查 -- ============== 用户管理 ============= -- 创建用户 -- ...

  4. CVE-2019-15107_webmin漏洞复现

    一.漏洞描述 Webmin的是一个用于管理类Unix的系统的管理配置工具,具有网络页面.在其找回密码页面中,存在一处无需权限的命令注入漏洞,通过这个漏洞攻击者即可以执行任意系统命令.它已知在端口100 ...

  5. 【Web】block、inline、inline-block元素与background属性概述(案例实现社交账号注册按钮效果)

    步骤三:社交账号注册按钮效果 文章目录 步骤三:社交账号注册按钮效果 案例的演示与分析 CSS属性与HTML标签 块级元素 内联元素 行内块级元素 CSS的display属性 CSS中的背景图片属性 ...

  6. Netty中使用的设计模式

    创建型 简单工厂 public class DefaultThreadFactory implements ThreadFactory { @Override public Thread newThr ...

  7. OLE NumberFormat

    设置单元格的数字格式, $3.00 想搞出这样的格式,在VBA里的格式定义如下 $#,##0.00;-$#,##0.00 可是在abap里,就是不行.最后尝试了很多次,原来在在$前面加\变成\$#,# ...

  8. 核酸检测:让我明白AQS原理

    春节越来越近了,疫情也越来越严重,但挡不住叫练携一家老小回老家(湖北)团聚的冲动.响应国家要求去我们做核酸检测了. 独占锁 早上叫练带着一家三口来到了南京市第一医院做核酸检测,护士小姐姐站在医院门口拦 ...

  9. apache状态显示报错AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdo...is message

    今天启动apache查看状态发现报错,说不能确认服务器完全确认域名,以下是报错内容: [root@localhost ~]# service httpd status Redirecting to / ...

  10. (10)-Python3之--引入

    1.什么是模块 .py文件就是模块 模块名有命名要求: 1.不要以数字.下划线开头.特殊符号.也不要以中文开头. 2.通常来说,都是以字母开头. 3.不要以关键字来命名.内置函数.内置模块.不要以第三 ...