首页 > 其他 > 详细

【ATcoder】Panasonic Programming Contest 2020 题解

时间:2020-03-19 00:41:55      阅读:72      评论:0      收藏:0      [点我收藏+]

这是本蒟蒻第一次ATC,虽然前几题是有点水但后面的题还是有一定难度的。

什么?你想看官方题解?告诉你那里面全是日文,进去恐怕除了代码什么都看不懂(~日语巨神除外

言归正传,我们来看一下这一次的题目

A Kth Term

技术分享图片
 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 int a[32] = {1, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 5, 1, 2, 1, 
 5 14, 1, 5, 1, 5, 2, 2, 1, 15, 2, 2, 5, 4, 1, 4, 1, 51};
 6 int k;
 7 int main() {
 8     cin >> k;
 9     cout << a[k - 1];
10     return 0;
11 }
此题太水不想多说

B Bishop

这题只要注意一下n=1或m=1的情况即可

技术分享图片
#include <iostream>
#include <cstdio>
using namespace std;
long long n, m;
int main() {
    cin >> n >> m;
    if (n == 1 || m == 1) cout << 1;
    else cout << (n * m + 1) / 2;
    return 0;
}
这题也挺水的

C Sqrt Inequality

注意这题卡了精度,所以不能直接开根号(~要不然怎么会出这么弱智的题……

我们需要做一些数学变形

 $\sqrt{a}+\sqrt{b}<\sqrt{c}$等价于$a+b+2\sqrt{ab}<c$等价于$4ab<(c-a-b)^2$

这样我们只要判断$4ab<(c-a-b)^2$成立与否即可

当然上述式子成立也有条件,那就是$c-a-b>0$,否则题目条件一定不成立

技术分享图片
 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 long long a, b, c;
 5 int main() {
 6     cin >> a >> b >> c;
 7     if (c - (a + b) < 0) puts("No");
 8     else {
 9         if (4 * a * b < a * a + b * b + c * c - 2 * a * c - 2 * b * c + 2 * a * b) puts("Yes");
10         else puts("No");
11     }
12     return 0;
13 }
万年OI一场空,不开longlong见祖宗

 D String Equivalence

这题应该算是签到题里比较难的吧(~

(~我们可以先研(打)究(表)找一找规律

我们可以枚举每个位置的字母

但如果真的暴搜的话是$O(n^{2\Sigma} \times n^2)$的,显然爆炸

我们考虑greedy,先从前往后枚举每一个位置

对于每一个位置,我们从$‘a‘$到$‘z’$枚举,找到第一个以前没有出现过的字符,设其为$lim$

则字典序$>lim$的字符都可以变成$lim$,所以直接$break$就好

技术分享图片
 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 int n;
 5 int ans[11];
 6 bool vis[30];
 7 void dfs(int x) {
 8     if (x == n) {
 9         for (int i = 1; i <= n; i++) {
10             cout << (char)(ans[i] + a);
11         }
12         puts("");
13         return;
14     }
15     for (int i = 0; i <= 26; i++) {
16         if (vis[i]) {
17             ans[x + 1] = i;
18             dfs(x + 1);
19         } else {
20             vis[i] = 1;
21             ans[x + 1] = i;
22             dfs(x + 1);
23             vis[i] = 0;
24             break;
25         }
26         
27     }
28 }
29 int main() {
30     cin >> n;
31     dfs(0);
32     return 0;
33 }
D

 

E Three Substrings

咕咕咕

F Fractal Shortest Path

咕王重现江湖

【ATcoder】Panasonic Programming Contest 2020 题解

原文:https://www.cnblogs.com/zcr-blog/p/12505521.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!