西安电子科技大学第16届程序设计竞赛 F Operating System (unique() 去重函数)
链接:https://www.nowcoder.com/acm/contest/107/F
来源:牛客网
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
输入描述:
多组数据,请处理到输入结束。
每组数据,第一行为三个整数N,M,Q (0 < N,M,Q <= 50000)
接下来一行Q个数,表示用户请求的页面编号。
输出描述:
对于每组数据,输出一个数,表示最少的缺页次数。
输入例子:
2 3 5
3 1 2 1 2
3 4 5
3 2 1 4 3
输出例子:
3
4
-->
输入
2 3 5
3 1 2 1 2
3 4 5
3 2 1 4 3
输出
3
4
有一种简单的方法,但不知道是为什么,大佬路过的话,可以帮忙回答一下
我的麻烦思路:
比如例1:
先3 1,接下来在1之后遇到不是3,1,的开始找n个互不相同的,为2,1,所以要把3换成2,以此类推
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int a[];
bool v[];
bool v1[];
queue<int>q1;
queue<int>q;
int main()
{
int n,m,p;
while(cin>>n>>m>>p)
{
long long s=;
memset(v,,sizeof(v));
for(int i=;i<=p;i++)
cin>>a[i]; while(!q.empty())
q.pop(); int f1=;
bool ff=;
for(int i=; i<=p; i++)
{
if(!v[a[i]])
{
f1++;
memset(v1,,sizeof(v1));
while(!q1.empty()) q1.pop();
q1.push(a[i]);
v1[a[i]]=;
int k=;
int j;
for(j=i+;j<=p;j++)
{
if(!v1[a[j]])
{
v1[a[j]]=;
q1.push(a[j]);
k++;
}
if(k==n) break;
}
if(k!=n)
{
ff=;
}
i=j;
while(!q1.empty())
{
int x=q1.front();
q1.pop();
if(!v[x])
{
v[x]=; if(f1==)
{
s++;
}
q.push(x); }
}
int pp=;
int qq=q.size ();
if(ff==&&f1!=)
{
s+=qq-n;
break;
}
else
{
while(!q.empty())
{
int x=q.front();
q.pop();
pp++;
if(!v1[x])
{
v[x]=;
s++;
}
else q.push(x);
if(pp==qq) break;
}
}
} }
cout<<s<<endl;
}
return ;
}
其实还有简单的方法:
unique()函数是一个去重函数,STL中unique的函数 unique的功能是去除相邻的重复元素(只保留一个),还有一个容易忽视的特性是它并不真正把重复的元素删除。他是c++中的函数,所以头文件要加#include<iostream.h>,具体用法如下:
int num[100];
unique(num,mun+n)返回的是num去重后的尾地址,之所以说比不真正把重复的元素删除,其实是,该函数把重复的元素一到后面去了,然后依然保存到了原数组中,然后返回去重后最后一个元素的地址,因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序。
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<set>
using namespace std;
int n,m,q; int main()
{
while(cin>>n>>m>>q)
{
int a[];
for(int i=;i<q;i++)
scanf("%d",&a[i]);
sort(a,a+q);
int x=unique(a,a+q)-a;
printf("%d\n",x);
}
return ;
}
西安电子科技大学第16届程序设计竞赛 F Operating System (unique() 去重函数)的更多相关文章
- 西安电子科技大学第16届程序设计竞赛 G-小国的复仇
西安电子科技大学第16届程序设计竞赛网络同步赛 G-小国的复仇 2 链接:https://www.nowcoder.com/acm/contest/107/G来源:牛客网 题目描述 众所周知,汀老师是 ...
- 西安电子科技大学第16届程序设计竞赛网络同步赛 G-小国的复仇
sb找规律. 分解因数. #include<bits/stdc++.h> #define LL long long #define fi first #define se second # ...
- 西安电子科技大学第16届程序设计竞赛 E Xieldy And His Password
链接:https://www.nowcoder.com/acm/contest/107/E来源:牛客网 Xieldy And His Password 时间限制:C/C++ 1秒,其他语言2秒 空间限 ...
- 西安电子科技大学第16届程序设计竞赛 B Words Game
链接:https://www.nowcoder.com/acm/contest/107/B来源:牛客网 Words Game 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 13107 ...
- 电子科技大学第八届ACM趣味程序设计竞赛第四场(正式赛)题解
A. Picking&Dancing 有一列n个石子,两人交替取石子,每次只能取连续的两个,取走后,剩下的石子仍然排成1列.问最后剩下的石子数量是奇数还是偶数. 读懂题意就没什么好说的. #i ...
- 2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛题解
链接:https://www.nowcoder.com/acm/contest/118/A 来源:牛客网 PUBG 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语 ...
- 江西财经大学第一届程序设计竞赛 F题 解方程
链接:https://www.nowcoder.com/acm/contest/115/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 江西财经大学第一届程序设计竞赛 F
链接:https://www.nowcoder.com/acm/contest/115/F来源:牛客网 题目描述 对于方程 2018 * x ^ 4 + 21 * x + 5 * x ^ 3 + 5 ...
- 长春理工大学第十四届程序设计竞赛F Successione di Fixoracci——找规律&&水题
题目 链接 题意:给出x数列的定义: $T_0 = a$ $T_1 = b$ $T_n = T_{n-2} \bigoplus T_{n-1} $ 求第 $n$ 项( $0 \leqslant a,b ...
随机推荐
- Centos7.4 Nginx反向代理+负载均衡配置
Ningx是一款高性能的HTTP和反向代理服务器,配置起来也比较简单. 测试环境: 172.16.65.190 Nginx-反向代理 172.16.65.191 Ningx-Web 172.16.65 ...
- 谈谈 cci 与 i2c
cci的名字叫, camera control interface, 他由两部分组成,一是i2c ,而另一个部分是 gpio.也就是说,cci 包含i2c.一般情况下,我们只是用到了i2c 部分,没有 ...
- python的pexpect详解
Pexpect 是一个用来启动子程序并对其进行自动控制的纯 Python 模块. Pexpect 可以用来和像 ssh.ftp.passwd.telnet 等命令行程序进行自动交互.继第一部分< ...
- Mybatis入门2-动态代理实现CRUD
MyBatis动态代理生成DAO的步骤: 1) 编写数据管理的接口XxxMapper 2) 编写该接口对应的Mapper.xml a) namespace必须与Mapper接口全名一致 b) stat ...
- XML 的解析方法
四种XML解析方法: (1)Dom生成和解析XML文档 *解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构. * 优点:整个文档树在内存中,便 ...
- [转载]Google Android开发精华教程
原文地址:Android开发精华教程">Google Android开发精华教程作者:huiyi8zai Android是Google于2007年11月5日宣布的基于Linux平台的开 ...
- SolrCloud 5.5.5 + Zookeeper + HDFS使用
安装sol r 三个节点192.168.1.231,192.168.1.234,192.168.1.235 下载安装包solr.tar.gz 解压 tar -zxvf solr.tar.gz 配置ZK ...
- QT 使用QUdpSocket QUdpServer UDP 建立客户端与服务器端
1. 模拟天气监控,每隔两秒从Server发送天气信息到Client. 2. 示例代码 --------------------------- Server 端 ------------------- ...
- 保护SSH的三把锁
///////////////////////////////写在前面//////////////////////////////////////原帖地址:http://www.ibm.com/dev ...
- jquery的队列问题
队列,可以当成一个数组,也可以当成一个空间. 使用的地方: 在js这种异步操作的时候,我们不知道什么时候一个js代码加载完成,并且你还要保护一段代码只有一个模块在执行(按需加载的时候) 这个时候我们就 ...