• 【ATcoder】Panasonic Programming Contest 2020 题解


    这是本蒟蒻第一次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+2sqrt{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^{2Sigma} imes 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

    咕王重现江湖

  • 相关阅读:
    appium学习【五】【转】appium实现屏幕向左滑动
    ConfigParser模块用法
    python中的join()函数的用法
    python from import与import as 的含义
    python的termcolor模块
    python标准输入,标准输出,标准错误
    lambda匿名函数
    【二代示波器教程】第13章 RTX操作系统版本二代示波器实现
    【二代示波器教程】第12章 示波器设计—DAC信号发生器的实现
    【二代示波器教程】第11章 示波器设计—功能模块划分
  • 原文地址:https://www.cnblogs.com/zcr-blog/p/12505521.html
Copyright © 2020-2023  润新知