zoukankan      html  css  js  c++  java
  • 入门OJ 4242: [Noip模拟题]删除 (暴力)

    题目

    Description

    Alice上化学课时又分心了,他首先画了一个3N列的表格,然后把数字1N填入表格的第一行,保证每个数只出现一次,另外两行他也填入数字1N,但不限制每个数字的出现次数。Alice现在想删除若干列使得每一行排完序后完全一样,编程计算最少需要删除多少列。

    Input

    第一行包含一个整数N(1<=N<=100000),表示表格的列数。

    接下来三行每行包含N个整数,每个数在1N之间,而且第一行的数互不相同。

    Output

    输出最少需要删除的列数。

    题解

    水题

    每次找第一行中第二行第三行没有的删掉

    当枚举一遍没有删除时输出答案

    代码

    #include <cstdio>
    using namespace std;
    int n, row1[100010], row2[100010], row3[100010], count2[100010], count3[100010], tmp, ans;
    int main(int argc, char **argv) {
      scanf("%d", &n);
      for (register int i(0); i < n; ++i) {
        scanf("%d", &row1[i]);
      }
      for (register int i(0); i < n; ++i) {
        scanf("%d", &row2[i]), ++count2[row2[i]];
      }
      for (register int i(0); i < n; ++i) {
        scanf("%d", &row3[i]), ++count3[row3[i]];
      }
      register int finish_flag(0);
      while (!finish_flag) {
        finish_flag = 1;
        for (register int i(0); i < n; ++i) {
          if (row1[i] && !(count2[row1[i]] && count3[row1[i]])) {
            finish_flag = 0;
            ++ans;
            row1[i] = 0;
            --count2[row2[i]], --count3[row3[i]];
          }
        }
      }
      printf("%d
    ", ans);
      return 0;
    }
    
  • 相关阅读:
    vue实现简单的点击切换颜色
    Controller层注解详解
    分布式数据库系统的透明性概念
    utf8和utf8mb64的关系
    数据库设计的四个阶段
    IDEA自定义启动图
    编译过程划分
    Linux 之 CentOS 7 安装Tomcat9
    Linux 之 CentOS 7 安装JDK1.8
    Linux 之 CentOS 7安装MySQL5.7
  • 原文地址:https://www.cnblogs.com/forth/p/9532957.html
Copyright © 2011-2022 走看看