首页 > 编程语言 >[CodeForces-545A]题解(C++)

[CodeForces-545A]题解(C++)

时间:2023-05-05 19:22:41浏览次数:59  
标签:int 题解 ans CodeForces Part arr2 arr1 text 545A

Part I Preface

原题目(Luogu)
原题目(CodeForces)

Part II Sketch

  • 给定一个正整数 \(n\),表示汽车数量。
  • 给定一个 \(n \times n\) 阶矩阵 \(A\),第 \(i\) 行 \(j\) 列上的数字表示 \(i\) 车与 \(j\) 车的对撞情况。
  • \(\begin{aligned}\begin{cases}A_{i,j} = -1 & i,j\text{ 车没有对撞}\\A_{i,j} = 0 & i,j\text{ 车没有翻车}\\A_{i,j} = 1 & i\text{ 车翻车}\\A_{i,j} = 2 & j\text{ 车翻车}\\A_{i,j} = 3 & i,j\text{ 车均翻车}\end{cases}\end{aligned}\)
  • 求出没有翻车的数量,和它们的编号。

Part III Analysis

输入矩阵,判断每个元素对应的情况,并且设定一个 bool 数组确定每辆车的情况,最后输出即可。

Part IV Code

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 105;
int N;
int arr1[MAXN][MAXN];
bool arr2[MAXN];
int ans;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> N;
    for(int i = 1; i <= N; i++){
        for(int j = 1;j <= N;j++){
            cin>>arr1[i][j];
            if(arr1[i][j] == 1 && !arr2[i]){
                arr2[i] = true;
                ans++;
            }else if(arr1[i][j] == 2 && !arr2[j]){
                arr2[j] = true;
                ans++;
            }else if(arr1[i][j] == 3){
                if(!arr2[i]){
                    arr2[i] = true;
                    ans++;
                }
                if(!arr2[j]){
                    arr2[j] = true;
                    ans++;
                }
            }
        }
    }
    cout << N - ans << '\n';
    for(int i = 1; i <= N; i++){
        if(!arr2[i]) cout << i << ' ';
    }
    return 0; 
}

Part V Record


Record

标签:int,题解,ans,CodeForces,Part,arr2,arr1,text,545A
From: https://www.cnblogs.com/silentBlog/p/17375152.html

相关文章

  • [CodeForces-545A]题解(C++)
    PartIPreface原题目(Luogu)原题目(CodeForces)PartIISketch给定一个正整数\(n\),表示汽车数量。给定一个\(n\timesn\)阶矩阵\(A\),第\(i\)行\(j\)列上的数字表示\(i\)车与\(j\)车的对撞情况。\(\begin{aligned}\begin{cases}A_{i,j}=-1&i,j\text{车没......
  • CF1260E Tournament 题解
    妙妙题,但是感觉评不到紫。题目链接。题意luogu题意。有\(n\)个人,贿赂第\(i\)个人的代价为\(a_i\)。这些人中,贿赂代价为\(-1\)的是你的朋友。现在,你可以两两配对,使得编号小的被淘汰,但是,如果你贿赂了编号大的,那么编号大的被淘汰,而编号小的留下。问:使得你朋友夺得冠军的......
  • django迁移数据库错误问题解决
    删除所有的pyc文件,迁移文件然后重新运行python3manage.pymakemigrationsdjango.db.utils.InternalError:(1060,"Duplicatecolumnname'addr_id'")运行python3manage.pymigrate--fake然后重新运行python3manage.pymigrate成功!......
  • ABC269F 题解
    前言题目传送门!更好的阅读体验?题解区的方法思维难度都过大(?),提供一种极其容易的方法。思路题目就是求\(\sum\limits_{i=x_1}^{x_2}\sum\limits_{j=y_1}^{y_2}a_{i,j}\)。所以很容易想到先算\(\sum\limits_{j=y_1}^{y_2}a_{i,j}\)。这个并不困难:如果\(i\)是奇数,那一行应......
  • LeetCode 27. 移除元素 题解
    题目链接:LeetCode27.移除元素本题大意是要对一个数组进行原地删除数值等于val的元素。双指针算法:通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。快指针(p指针):寻找新数组的元素,新数组就是不含有目标元素的数组慢指针(q指针):指向更新新数组下标的位置当......
  • LeetCode 704. 二分查找 题解
    本题考查的就是一个基本的整数二分查找问题对于整数二分,有单调性一定可以二分,没有单调性的有时候也可以二分。算法思想(分为两种方法):查找结果是在左边区间的情况区间被划分为[l,mid]和[mid+1,r]1、确定分界点,mid=q[(l+r)/2]2、判断是否满足是:区间变成[l,mid]因此:r=mid否......
  • Educational Codeforces Round 147 (Rated for Div. 2) (贪心)
    原题链接:https://codeforces.com/contest/1821/problem/D*题意:从1开始走,走的给定区间的值要k次。且shift按了要松开,代表走了一个区间除了往右的次数,还要多两次按shift的次数,求最小次数。*思路:1.先把不可能的情况列出来,就是给出的区间大小小于k时直接输出-12.我的思路是暴......
  • 洛谷P4824题解
    题面题意:给出字符串s和t,每次操作将s中出现的第一个t删去,直到不能删为止。求最后的串。|s|<=1e6题解:hash做法。(此题也有kmp和权值线段树做法)因为涉及到删除操作,所以我们要动态的实现这个过程。所以考虑开一个栈来存储当前留下的字符。然后每有一个字符入栈,就拿当前......
  • Linux IMX6ULL RTC掉电不保存问题解决
    背景:公司临时派发的小任务,解决项目中RTC实时时钟的问题,在为解决这个问题之前,项目的实时时钟老是一断电重启就会出现出现恢复到一个固定的时间。琢磨了许久,终于解决了,特此记录一下,给读者如遇到相关问题提供一下思路拓展。平台:imx6ull开发板加Linux系统。解决步骤:1.删除Linux......
  • CWOI 2023.05.04 题解
    mzx的动态规划杂题选讲。stoARC153D-SumofSumofDigitsP7152[USACO20DEC]BovineGeneticsGCF1542E2AbnormalPermutationPairs(hardversion)题意给定\(n,m\),求有多少对长度为\(n\)的排列\(p,q\),满足以下条件:\(p\)的字典序小于\(q\);\(p\)的逆序对......