首页 > 其他分享 >AtCoder Beginner Contest 377

AtCoder Beginner Contest 377

时间:2024-10-29 14:45:33浏览次数:4  
标签:AtCoder 覆盖 Beginner int long forbid x2 y2 377

上周六咕咕咕了

省流版
  • A. 排序判断即可
  • B. 枚举判断即可
  • C. 记录覆盖位置去重,总数-覆盖数即可
  • D. 枚举右端点,考虑符合条件的左端点数量即可
  • E. 考虑排列的\(i \to p_i\)图,考虑操作数与走的边数关系,利用环循环节算偏移量即可
  • F. 考虑每个皇后实际覆盖的位置,枚举先前皇后计算覆盖交集去重,累加实际覆盖数即可
  • G. 将操作转换成Tries树的节点移动,即一条链上的到达最近叶子的距离,取最小值即可

A - Rearranging ABC (abc377 A)

题目大意

给定三个字母,问能否组成ABC

解题思路

排个序看是否是ABC即可。

神奇的代码
#include <bits/stdc++.h>
using namespace std;
using LL = long long;

int main(void) {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    string s;
    cin >> s;
    sort(s.begin(), s.end());
    if (s == "ABC")
        cout << "Yes" << '\n';
    else
        cout << "No" << '\n';

    return 0;
}



B - Avoid Rook Attack (abc377 B)

题目大意

国际象棋,车,上下左右任意走,

\(8 \times 8\)的棋盘,给定 \(m\)个车的位置。

问有多少位置,不会被车的范围覆盖。

解题思路

一个车就覆盖一行和一列。

因此就set记录被覆盖了的行和列,最后还有\(x\)行和 \(y\)列没覆盖,答案就是 \(xy\)。

当然直接花 \(O(8^4)\)枚举位置+判断是否被覆盖也可以。

神奇的代码
#include <bits/stdc++.h>
using namespace std;
using LL = long long;

int main(void) {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    set<int> r, c;
    for (int i = 0; i < 8; ++i) {
        string s;
        cin >> s;
        for (int j = 0; j < 8; ++j)
            if (s[j] == '#') {
                r.insert(i);
                c.insert(j);
            }
    }
    int ans = (8 - r.size()) * (8 - c.size());
    cout << ans << '\n';

    return 0;
}



C - Avoid Knight Attack (abc377 C)

题目大意

国际象棋,马,八个方向的字走法。

\(n \times n\)的棋盘,给定 \(m\)个马的位置。

问有多少位置,不会被马的范围覆盖。

解题思路

因为一个

标签:AtCoder,覆盖,Beginner,int,long,forbid,x2,y2,377
From: https://www.cnblogs.com/Lanly/p/18513188

相关文章

  • ABC 377 Review
    ABC377ReviewA模拟题,但是好像wa了一发,有点幽默Code#include<bits/stdc++.h>usingnamespacestd;chars[5];intmain(){ for(registerinti=1;i<=3;++i)s[i]=getchar(); sort(s+1,s+4); if(s[1]=='A'&&s[2]=='B'&&s[3]=='......
  • abc377_E
    E-PermuteKtimes2思路这题由于序列P是一个排列,所以将P表示成一个图的时候,这个图将由\(m\)个环构成对于每个环上的点来说,第一回合它会移动到距离它为\(2\)的点上,距离它为\(2\)的点同时也以相同的方式移动,那么第二回合,它就会移动到距离它为\(4\)的点上,得出规律,一个点移动\(k......
  • 【Atcoder训练记录】AtCoder Beginner Contest 377
    训练情况赛后反思D题差一点点吧?可能不去乐跑就能写出来了A题我们发现ABC是字典序单调递增的,字符串先排序再判断是否为ABC即可。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;voidsolve(){ strings;cin>>s; sort(s.begin(),s.end()); i......
  • AtCoder Regular Contest 185 题解
    A-modMGame2第一个观察是如果一个人手中还有2张牌,那么他一定不会被秒。这可以推出决定胜负的时刻一定是Alice和Bob手中只剩一张牌的时候,此时如果Alice被秒了,那么她就似了,否则她就赢了。考虑Alice什么时候能被秒。记决定胜负的时刻Alice手中的牌是\(a\),Bob手......
  • BeginnersBook-Java-示例-一-
    BeginnersBookJava示例(一)原文:BeginnersBook协议:CCBY-NC-SA4.0Java程序:计算复合利率原文:https://beginnersbook.com/2019/07/java-program-to-calculate-compound-interest/在本教程中,我们将编写一个java程序来计算复合利率。复利计算公式使用以下公式计算复利:......
  • BeginnersBook-Java-集合教程-一-
    BeginnersBookJava集合教程(一)原文:BeginnersBook协议:CCBY-NC-SA4.0如何在Java中对ArrayList进行排序原文:https://beginnersbook.com/2013/12/how-to-sort-arraylist-in-java/在本教程中,我们分享了对ArrayList<String>和ArrayList<Integer>进行排序的示例。另请阅......
  • BeginnersBook-Java-IO-教程-一-
    BeginnersBookJavaIO教程(一)原文:BeginnersBook协议:CCBY-NC-SA4.0如何在Java中创建文件原文:https://beginnersbook.com/2014/01/how-to-create-a-file-in-java/在本教程中,我们将了解如何使用createNewFile()方法在Java中创建文件。如果文件在指定位置不存在并且......
  • BeginnersBook-C-语言示例-一-
    BeginnersBookC语言示例(一)原文:BeginnersBook协议:CCBY-NC-SA4.0C程序:检查阿姆斯特朗数原文:https://beginnersbook.com/2014/06/c-program-to-check-armstrong-number/如果数字的各位的立方和等于数字本身,则将数字称为阿姆斯特朗数。在下面的C程序中,我们检查输入的......
  • BeginnersBook-C---教程-一-
    BeginnersBookC++教程(一)原文:BeginnersBook协议:CCBY-NC-SA4.0C++中的for循环原文:https://beginnersbook.com/2017/08/cpp-for-loop/循环用于重复执行语句块,直到满足特定条件。例如,当您显示从1到100的数字时,您可能希望将变量的值设置为1并将其显示100次,在每......
  • BeginnersBook-Servlet-教程-一-
    BeginnersBookServlet教程(一)原文:BeginnersBook协议:CCBY-NC-SA4.0项目的web.xml文件中的welcome-file-list标签原文:https://beginnersbook.com/2014/04/welcome-file-list-in-web-xml/你有没见过web.xml文件中的<welcome-file-list>标签并想知道它是什么?在本文中,我将......