题目描述:

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

输入:第一行包含一个整数N(1<=N<=100000),表示表格的列数。接下来三行每行包含N个整数,每个数在1到N之间,而且第一行的数互不相同。

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


【思路解析】

  首先我们注意到红字部分的3行N列,它只有三行,所以我们可以直接手动处理输入:lin1/2/3[i] 表示的是第1/2/3行的第i列的数字,sum2/3[]表示的是第2,3行每个数(1-n中)出现的次数,然后我们就可以循环的去判断:如果可以下面两行有某些数出现次数为0,那么第一行的对应的数一定要删除,否则不可能完全一样,当这一列删除后可能还会导致下面两行另外的数出现的个数变为0的情况,我们可以在外面写一个do-while循环,当所有列都删完或者后两行元素都和第一行一致后,结束循环并输出答案。在while中我们可以写一个for循环从1-n(枚举第i列),如果该列已经被删掉或者该列的第一行的数下面两行都有(不需要删除)的话就跳过,反之则删除这一列:答案数加1,后面两行在这一列的数出现的个数-1,然后要把第一行该列的数记为0(以此为判断条件以便下一次循环时可以直接判断这一列是否已经删除)并且将bool变量的值定为真,说明在这一次循环中进行了操作,循环继续(注意,一定要在while循环头部把bool变量的值还原为0,否则会陷入死循环)。最后退出循环,输出答案 。


Code:

#include<iostream>
#include<cstdio>
using namespace std;
int lin1[]={},lin2[]={},lin3[]={};
int num2[]={},num3[]={};
int n,dele=,ans=;
int main(){
ios::sync_with_stdio(false);
cin>>n;
for(int i=;i<=;i++){
for(int j=;j<=n;j++){
if(i==) cin>>lin1[j];
else if(i==) cin>>lin2[j],num2[lin2[j]]++;
else if(i==) cin>>lin3[j],num3[lin3[j]]++;
}
}
do{
dele=;
for(int i=;i<=n;i++){
if(lin1[i]&&((!num2[lin1[i]])||(!num3[lin1[i]]))){
ans++;
lin1[i]=;
num2[lin2[i]]--;
num3[lin3[i]]--;
dele=;
}
}
}while(dele);
cout<<ans;
}

总结:该题是一道大水题,没什么知识点,就是点考验代码的实现能力,大家看看就好,毕竟我实在是太弱了。

1381. 删除 (Standard IO)的更多相关文章

  1. JZOJ 1776. 经济编码 (Standard IO)

    1776. 经济编码 (Standard IO) Time Limits: 1000 ms Memory Limits: 128000 KB Description 为降低资料储存的空间或增加资料传送 ...

  2. 1001. 温度转换 (Standard IO)

    1001. 温度转换 (Standard IO) 时间限制: 1000 ms  空间限制: 262144 KB  具体限制   题目描述 将输入的华氏温度转换为摄氏温度.由华氏温度F与摄氏温度C的转换 ...

  3. JZOJ 2137. 【GDKOI2004】城市统计 (Standard IO)

    2137. [GDKOI2004]城市统计 (Standard IO) Time Limits: 1000 ms  Memory Limits: 128000 KB  Detailed Limits  ...

  4. JZOJ 5326. LCA 的统计 (Standard IO)

    5326. LCA 的统计 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description Input Output S ...

  5. JZOJ 5307. 【NOIP2017提高A组模拟8.18】偷窃 (Standard IO)

    5307. [NOIP2017提高A组模拟8.18]偷窃 (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Description ...

  6. JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林 (Standard IO)

    5286. [NOIP2017提高A组模拟8.16]花花的森林 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Descript ...

  7. JZOJ 5305. 【NOIP2017提高A组模拟8.18】C (Standard IO)

    5305. [NOIP2017提高A组模拟8.18]C (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description ...

  8. JZOJ 5257. 小X的佛光 (Standard IO)

    5257. 小X的佛光 (Standard IO) Time Limits: 2000 ms Memory Limits: 524288 KB Description Input Output Sam ...

  9. JZOJ 5258. 友好数对 (Standard IO)

    5258. 友好数对 (Standard IO) Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits Description I ...

随机推荐

  1. 虚拟机VMware,安装中标麒麟系统,64位的,版本6.0,并安装qt

    为了使用qt开发,安装中标麒麟系统. 虚拟机中安装,本来安装的是32位麒麟系统,结果发现qt无法安装(官网提供的是64位的run程序). qt安装的是qt-opensource-linux-x64-5 ...

  2. 初涉kafka

    前言: 今天终于搭建成功kafka环境,并创建了第一个topic,并生产.消费消息,如下图: 生产: 消费: 心情真的是好激动,大家都说搭建环境其实特别简单,但是我的学习却一直卡在搭建环境上面,不是虚 ...

  3. VS code 生成html模板快捷键

    第一步:在空html文档中输入   ! 第二步:按下tab键.

  4. JavaScript深入之类数组对象与arguments(转载)

    类数组对象 所谓的类数组对象: 拥有一个 length 属性和若干索引属性的对象 举个例子: var array = ['name', 'age', 'sex']; var arrayLike = { ...

  5. Ubuntu14.04(nginx+php+mysql+vsftp)配置安装流程

    Ubuntu14.04(nginx+php+mysql+vsftp)配置安装流程 1.先切换到root用户 sudo  su 2.更新软件源 apt update apt-get upgrade 3. ...

  6. Beta-星期五

    所属课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass 作业要求  https://edu.cnblogs.com/camp ...

  7. C# 微信公众号开发本地IIS调试

    由于最近公司需要自己开发微信,这个任务也就交给我了,由于第一次接触开发微信,所以也踩了不少坑,不过园子里文章也很多,也借鉴了不少文章,弯路也是少走了不少,现在将我自己踩的坑或者一些经验留下来,希望能帮 ...

  8. 为什么我们从Angular 2迁移到Vue.js(为什么我们没有选择React)

    在Rever(www.reverscore.com),我们刚刚使用Vue.js发布了我们的Web客户端的新版本.经过641次提交和16周的紧张开发,我们非常自豪之前做出的决定.8个月前,我们的前端在使 ...

  9. C# 批量修改考勤设备时间

    自己工作中用到的小程序,每次远行后批量改一次 如下: 其中的zkemkeeper是中控的相关组件,因是系统组件,须要先注册相关文件后才有效 using System; using System.Col ...

  10. 向指定URL 发送POST请求的方法

    java发送psot请求: package com.tea.web.admin; import java.io.BufferedReader; import java.io.IOException; ...