Wannafly模拟赛4 A Laptop (前缀数组)
来源:互联网 发布:软件行业前景预测 编辑:程序博客网 时间:2024/05/16 11:54
题目大意:emmmmm……中文题,不用解释了吧
解题思路:
一开始是直接就想着排个序然后开始枚举,目前水平对时间复杂度还不太会算,但是听了别人的分析,会超时,枚举肯定不行,所以就要换个思维。
题目要求被完虐的电脑数量,什么叫做被完虐呢,就是内存和速度都比别台电脑差,假如有一台电脑,存在任意一台电脑两项的值都比它大一些,那这台电脑就被完虐。因为每台电脑有2个数要比较,所以我们可以开结构体,先对其中的一个参数排好序,然后在后面比较时只要比较一个参数即可。怎么比较呢?枚举的思想是,假如我们从第i个开始比较,那么我们就要把前i-1个都比一遍,全部循环下来会超时,所以不行。根据前缀数组的思想,我们只要从第一个开始比较,第1个和第0个比(最大值就是它自己),然后第2个和前1个的最大值比,第3个和前两个的最大值比,以此类推,开一个新的数组来记录每次比较出的最大值,然后后面再用一个循环将这个新的数组和原来的排列进行比较,不符合的则记录。
代码代码:
#include<iostream>#include<algorithm>using namespace std;const int maxn=1e5+5;int n,ans;int pre[maxn];bool flag;struct node{ int m,v; bool operator < (const node &a)const { return m>a.m; }} mapn[maxn];int main(){ while(cin>>n) { for(int i=0; i<n; i++) { cin>>mapn[i].m>>mapn[i].v; } sort(mapn,mapn+n); pre[0]=mapn[0].v; for(int i=1; i<n; i++) { pre[i]=max(mapn[i].v,pre[i-1]); } ans=0; for(int i=1; i<n; i++) { if(pre[i-1]>mapn[i].v) ans++; } cout<<ans<<endl; } return 0;}
阅读全文
0 0
- Wannafly模拟赛4 A Laptop (前缀数组)
- Wannafly模拟赛4 A Laptop (RMQ)
- Wannafly模拟赛4:A-Laptop(后缀)
- Wannafly模拟赛4 A 题 Laptop 【二维偏序问题 + 树状数组维护】
- wannafly 4 laptop
- Wannafly模拟赛4 C Sum(树状数组)
- Wannafly模拟赛4
- Wannafly模拟赛2: A. Contest(Cdq分治)
- Wannafly模拟赛2 A题
- Wannafly模拟赛5 A split 二分
- Wannafly模拟赛5 A Split
- Wannafly模拟赛5 A Split 【贪心】
- Wannafly模拟赛5 A题
- Wannafly模拟赛4-C-sum(二进制拆分+树状数组)
- Wannafly模拟赛4 题解
- Wannafly挑战赛5 -- A(前缀和) B(思维)
- Wannafly模拟赛4 CSum(线段树)
- Wannafly挑战赛5 A 前缀和+暴力
- 10.22-10.23考试爆炸记题目选
- 基于Hu矩的区域相似性度量
- Spark2.2 Worker、Driver和Executor向Master注册原理剖析图解及源码
- popwindow的使用总结
- HDU
- Wannafly模拟赛4 A Laptop (前缀数组)
- linux基础学习1
- CodeForces 883C
- POJ 1324 BFS+状态压缩 蛇走迷宫
- 二叉树的镜像
- Android中TextView通过换行实现条目布局
- 几种最基础的字符串动态规划讲
- JVM(java 虚拟机)内存设置
- Binary Search:222. Count Complete Tree Nodes