1381. 删除 (Standard IO)
题目描述:
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)的更多相关文章
- JZOJ 1776. 经济编码 (Standard IO)
1776. 经济编码 (Standard IO) Time Limits: 1000 ms Memory Limits: 128000 KB Description 为降低资料储存的空间或增加资料传送 ...
- 1001. 温度转换 (Standard IO)
1001. 温度转换 (Standard IO) 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 题目描述 将输入的华氏温度转换为摄氏温度.由华氏温度F与摄氏温度C的转换 ...
- JZOJ 2137. 【GDKOI2004】城市统计 (Standard IO)
2137. [GDKOI2004]城市统计 (Standard IO) Time Limits: 1000 ms Memory Limits: 128000 KB Detailed Limits ...
- JZOJ 5326. LCA 的统计 (Standard IO)
5326. LCA 的统计 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description Input Output S ...
- JZOJ 5307. 【NOIP2017提高A组模拟8.18】偷窃 (Standard IO)
5307. [NOIP2017提高A组模拟8.18]偷窃 (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Description ...
- JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林 (Standard IO)
5286. [NOIP2017提高A组模拟8.16]花花的森林 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Descript ...
- 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 ...
- JZOJ 5257. 小X的佛光 (Standard IO)
5257. 小X的佛光 (Standard IO) Time Limits: 2000 ms Memory Limits: 524288 KB Description Input Output Sam ...
- JZOJ 5258. 友好数对 (Standard IO)
5258. 友好数对 (Standard IO) Time Limits: 1000 ms Memory Limits: 524288 KB Detailed Limits Description I ...
随机推荐
- 【Linux】php7.2.8 + xdebug + composer + php代码覆盖率 + jenkins配置 (实操记录,亲测可用)
[一.linux安装php 7.2.8] 1.wget http://nginx.org/download/nginx-1.9.9.tar.gz # nginx可不安 ...
- 【问题解决方案】GitHub的md中使用库中图片
参考链接: 在GitHub中使用图片功能 步骤: 在github上的仓库建立一个存放图片的文件夹,文件夹名字随意.如:image 将需要在插入到文本中的图片,push到image文件夹中. 然后打开g ...
- C#编程--第一天
C#编程 一. 了解C#: 1. C#的定义及其特点 2.vs的集成开发环境:熟悉了解vs2012 二.C#语言基础 1.C#项目的组成结构: .config----配置文件(存放配置参数文件) .c ...
- CSS-01 CSS代码标准和规范
一:代码规范 1.所有的书写都是在英文半角下进行 2.统一用table键进行缩进 3.属性值必须带引号(单引和双引都可以) 4.p,dt,h标签里不能嵌套块属性标签 5.a标签不能嵌套a 二:文件命名 ...
- 关于TVS、ESD、稳压二极管、压敏电阻
一.稳压管和TVS管的工作原理 稳压二极管(又叫齐纳二极管),是一种直到临界反向击穿电压前都具有很高电阻的半导体器件,在这临界击穿点上,反向电阻降低到一个很小的数值,在这个低阻区中电流增加而电压则保持 ...
- k8s阅读笔记2-k8s架构
前言 阅读地址 https://rootsongjc.gitbooks.io/kubernetes-handbook/content/concepts/ 架构 架构图说明: master 指服务端 1 ...
- restful风格接口和spring的运用
Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机 ...
- hihocoder 1014: Trie树(Trie树模板题)
题目链接 #include<bits/stdc++.h> using namespace std; ; struct T { int num; T* next[]; T() { num=; ...
- 零基础python教程-Python解释器是什么?
当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件.要运行代码,就需要Python解释器去执行.py文件. 由于整个Python语言从规范到解释器都是开源的 ...
- Delphi 安装Cnpack cnvcl后界面不断弹出 Memory Manager's list capablity overflow ,please enlarge it!
Delphi 安装Cnpack cnvcl后界面不断弹出 Memory Manager's list capablity overflow ,please enlarge it! 解决方法:删除指定 ...