Codeforces Round #528 (Div. 2)题解

A. Right-Left Cipher

很明显这道题按题意逆序解码即可

Code:

# include <bits/stdc++.h>

int main()
{
std::string s, t;
std::cin >> s;
int len = s.length();
int cnt = 0;
for(int i = 0; i < len; i++)
{
t = t + s[((len + 1) / 2 + cnt) - 1];
if(i % 2 == 0)
cnt = -cnt, ++cnt;
else cnt = -cnt;
}
std::cout << t;
return 0;
}

B. Div Times Mod

明显要使\(x\)最小,一定要使\(x \mod k\)最大

从\(n-1\)到\(1\)找能被\(n\)整除的最大数\(y\)

答案即为\((n/y)*k+y\)

Code:

# include <bits/stdc++.h>
# define ll long long
int main()
{
ll n, k;
ll ans = 0;
scanf("%I64d%I64d", &n, &k);
for(int i = 1; i < k; i++)
if(n % i == 0)
ans = i;
printf("%I64d", (((n / ans) * k) + ans));
return 0;
}

C. Connect Three

  • 差点C没做出来退役

可以发现最优路径是曼哈顿距离上的两条路径

将\(3\)个点按\(x\)坐标排序,枚举(排序后的)\(A\)->\(B\)的两种(先上后左,先左后上),\(B\)->\(C\)的两种,共四种

取最小值输出即可

Code:

#include <bits/stdc++.h>
#define mp(i, j) std::make_pair(i, j)
#define p std::pair<int, int>
p a[4];
std::map<p, int> m1, m2, m3, m4;
void add1()
{
for (int i = a[1].first; i <= a[2].first; i++)
m1[mp(i, a[1].second)] = 1;
if (a[1].second <= a[2].second)
{
for (int i = a[1].second; i <= a[2].second; i++)
m1[mp(a[2].first, i)] = 1;
}
else
{
for (int i = a[1].second; i >= a[2].second; i--)
m1[mp(a[2].first, i)] = 1;
}
for (int i = a[2].first; i <= a[3].first; i++)
m1[mp(i, a[2].second)] = 1;
if (a[2].second <= a[3].second)
{
for (int i = a[2].second; i <= a[3].second; i++)
m1[mp(a[3].first, i)] = 1;
}
else
{
for (int i = a[2].second; i >= a[3].second; i--)
m1[mp(a[3].first, i)] = 1;
}
}
void add2()
{
for (int i = a[1].first; i <= a[2].first; i++)
m2[mp(i, a[1].second)] = 1;
if (a[1].second <= a[2].second)
{
for (int i = a[1].second; i <= a[2].second; i++)
m2[mp(a[2].first, i)] = 1;
}
else
{
for (int i = a[1].second; i >= a[2].second; i--)
m2[mp(a[2].first, i)] = 1;
} if (a[2].second <= a[3].second)
{
for (int i = a[2].second; i <= a[3].second; i++)
m2[mp(a[2].first, i)] = 1;
}
else
{
for (int i = a[2].second; i >= a[3].second; i--)
m2[mp(a[2].first, i)] = 1;
}
for (int i = a[2].first; i <= a[3].first; i++)
m2[mp(i, a[3].second)] = 1;
}
void add3()
{ if (a[1].second <= a[2].second)
{
for (int i = a[1].second; i <= a[2].second; i++)
m3[mp(a[1].first, i)] = 1;
}
else
{
for (int i = a[1].second; i >= a[2].second; i--)
m3[mp(a[1].first, i)] = 1;
}
for (int i = a[1].first; i <= a[2].first; i++)
m3[mp(i, a[2].second)] = 1;
if (a[2].second <= a[3].second)
{
for (int i = a[2].second; i <= a[3].second; i++)
m3[mp(a[2].first, i)] = 1;
}
else
{
for (int i = a[2].second; i >= a[3].second; i--)
m3[mp(a[2].first, i)] = 1;
}
for (int i = a[2].first; i <= a[3].first; i++)
m3[mp(i, a[3].second)] = 1;
}
void add4()
{
if (a[1].second <= a[2].second)
{
for (int i = a[1].second; i <= a[2].second; i++)
m4[mp(a[1].first, i)] = 1;
}
else
{
for (int i = a[1].second; i >= a[2].second; i--)
m4[mp(a[1].first, i)] = 1;
}
for (int i = a[1].first; i <= a[2].first; i++)
m4[mp(i, a[2].second)] = 1;
for (int i = a[2].first; i <= a[3].first; i++)
m4[mp(i, a[2].second)] = 1;
if (a[2].second <= a[3].second)
{
for (int i = a[2].second; i <= a[3].second; i++)
m4[mp(a[3].first, i)] = 1;
}
else
{
for (int i = a[2].second; i >= a[3].second; i--)
m4[mp(a[3].first, i)] = 1;
}
}
inline int print(std::map<p, int> m)
{
for (std::map<p, int>::iterator it = m.begin(); it != m.end(); it++)
printf("%d %d\n", it->first.first, it->first.second);
}
int main()
{
int cnt = 0;
for (int i = 1; i <= 3; i++)
scanf("%d%d", &a[i].first, &a[i].second);
std::sort(a + 1, a + 3 + 1);
add1(), add2(), add3(), add4();
cnt = std::min(std::min(m1.size(), m2.size()), std::min(m3.size(), m4.size()));
printf("%d\n", cnt);
if (m1.size() == cnt)
return 0 * print(m1);
if (m2.size() == cnt)
return 0 * print(m2);
if (m3.size() == cnt)
return 0 * print(m3);
if (m4.size() == cnt)
return 0 * print(m4);
return 0;
}

Codeforces Round #528 (Div. 2)题解的更多相关文章

  1. Codeforces Round #182 (Div. 1)题解【ABCD】

    Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...

  2. Codeforces Round #608 (Div. 2) 题解

    目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 ...

  3. Codeforces Round #525 (Div. 2)题解

    Codeforces Round #525 (Div. 2)题解 题解 CF1088A [Ehab and another construction problem] 依据题意枚举即可 # inclu ...

  4. Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F

    Codeforces Round #466 (Div. 2) 题解 A.Points on the line 题目大意: 给你一个数列,定义数列的权值为最大值减去最小值,问最少删除几个数,使得数列的权 ...

  5. Codeforces Round #677 (Div. 3) 题解

    Codeforces Round #677 (Div. 3) 题解 A. Boring Apartments 题目 题解 简单签到题,直接数,小于这个数的\(+10\). 代码 #include &l ...

  6. Codeforces Round #665 (Div. 2) 题解

    Codeforces Round #665 (Div. 2) 题解 写得有点晚了,估计都官方题解看完切掉了,没人看我的了qaq. 目录 Codeforces Round #665 (Div. 2) 题 ...

  7. Codeforces Round #160 (Div. 1) 题解【ABCD】

    Codeforces Round #160 (Div. 1) A - Maxim and Discounts 题意 给你n个折扣,m个物品,每个折扣都可以使用无限次,每次你使用第i个折扣的时候,你必须 ...

  8. Codeforces Round #383 (Div. 2) 题解【ABCDE】

    Codeforces Round #383 (Div. 2) A. Arpa's hard exam and Mehrdad's naive cheat 题意 求1378^n mod 10 题解 直接 ...

  9. Codeforces Round #271 (Div. 2)题解【ABCDEF】

    Codeforces Round #271 (Div. 2) A - Keyboard 题意 给你一个字符串,问你这个字符串在键盘的位置往左边挪一位,或者往右边挪一位字符,这个字符串是什么样子 题解 ...

随机推荐

  1. Android--Fragment嵌套的问题

    项目中遇到Fragment嵌套应用的问题 子Fragment中要用getChildFragmentManager()方法获取FragmentManager,否则会出问题!

  2. h5开发微信公众号重定向到关注页面没有关注按钮 (微信你个坑)

    搜索微信公众号是这样的 微信公众号重定向到关注页面没有关注按钮 如何微信公众号重定向到关注页面没有关注按钮,请看上篇笔记 无解,微信一直在封这种通过链接跳转到公众号关注页面的方法.只有放个二维码提示长 ...

  3. 近期学习python的小问题及解决方案

    ①定义空的二维列表来读取放置文件的内容: 在python中定义二维数组 - woshare - 博客园https://www.cnblogs.com/woshare/p/5823303.html ②调 ...

  4. C#使用管理员权限打开cmd执行命令行

    最近遇到个棘手的问题,服务器远程连不上,但是ftp可以,可能远程连接的服务挂了或者防火墙入站规则有点问题,想要重启,得找机房工作人员,还是挺麻烦的 想了想可以上传个执行cmd命令的东西,然后远程访问触 ...

  5. hdu 2822 ~!!!!!!坑死我

    首先 在此哀悼...  为我逝去的时间哀悼...  每一步都确定再去写下一步吧...日狗 不过还是有点收获的..  对优先队列的使用 有了进一步的理解 先上代码 #include<iostrea ...

  6. DotNet 使用阿里云媒体转码服务

    公司项目中一部分文件放到了阿里云 OSS 上,其中有些音频文件是 amr 类型的,在后期使用的时候比较麻烦,所以需要转换成 mp3 的文件,方便以后使用.本来想使用 ffmpeg 处理,但由于文件都存 ...

  7. Identityserver4证书

      dotnet应用用IdentityServer4做了登陆的功能,本地运行没有问题,部署到服务器上面就出现上面的问题,打开服务器的日志记录开关,获取到下面的异常信息.原来是     通过分析日志信息 ...

  8. win7 ReadyBoot 文件位置修改

    右键我的电脑,依次点开系统工具-性能-数据收集器集-系统-事件跟踪会话 在右边找到ReadyBoot,右键打开属性,会话框上方选择文件,根据示例文件名的路径找到ReadyBoot.etl文件,复制到你 ...

  9. 【日语】【ZZ】日语人称小结

    [ZZ]日语人称小结 日语中有关人称的词很多,也有不少朋友问 现整理了一下,希望能对那些不太清楚的朋友有点帮助 如果您认为在下有写错的地方,或者您有什么高见,请不吝赐教 第一人称 “我” 1.私 わた ...

  10. Shiro安全框架入门使用方法

    详见:https://blog.csdn.net/qq_32651225/article/details/77199464 框架介绍Apache Shiro是一个强大且易用的Java安全框架,执行身份 ...