【2015广东工业大学新生赛A】【排序 二进制数位思想】GG和女神 数字按照数值排序后取了多少个数
来源:互联网 发布:python数据分析书籍 编辑:程序博客网 时间:2024/05/22 08:10
#include<stdio.h>#include<iostream>#include<string.h>#include<string>#include<ctype.h>#include<math.h>#include<set>#include<map>#include<vector>#include<queue>#include<bitset>#include<algorithm>#include<time.h>using namespace std;void fre(){freopen("c://test//input.in","r",stdin);freopen("c://test//output.out","w",stdout);}#define MS(x,y) memset(x,y,sizeof(x))#define MC(x,y) memcpy(x,y,sizeof(x))#define MP(x,y) make_pair(x,y)#define ls o<<1#define rs o<<1|1typedef long long LL;typedef unsigned long long UL;typedef unsigned int UI;template <class T1,class T2>inline void gmax(T1 &a,T2 b){if(b>a)a=b;}template <class T1,class T2>inline void gmin(T1 &a,T2 b){if(b<a)a=b;}const int N=1e6+10,M=0,Z=1e9+7,ms63=1061109567;int casenum,casei;int n,m,x;LL a[N];int main(){scanf("%d",&casenum);for(casei=1;casei<=casenum;++casei){scanf("%d%d",&n,&m);for(int i=1;i<=n;++i){scanf("%lld",&a[i]);a[i]<<=1;}for(int i=1;i<=m;++i){scanf("%d",&x);a[x]|=1;}sort(a+1,a+n+1);int ans=0;for(int i=1;i<=m;++i){scanf("%d",&x);ans+=a[x]&1;}printf("%d\n",ans);}return 0;}/*【题意】有n(1e6)个数,第i个数的数值为a[i](a[i]<=1e17),我们选取了其中的k(1<=k<=n)个。然而这些数被经过了数值从小到大的排序,然后再告诉你k个数,问你这k个数中,有多少个数是被我们选过的。【类型】排序 二进制数位思想【分析】我们可以利用二进制数值转化思想。把每个数左移一位,不会改变这些数的大小关系和排序结果。如果一个数之前选取,那就把最后一位|=1。那对于后来得知的k个数,我们看其对应的数的最后一位是不是1,就知道这个数之前是否选过。然后这题就做完了哦,常数超小,空间超小哦!【时间复杂度&&优化】O(nlogn)*/
0 0
- 【2015广东工业大学新生赛A】【排序 二进制数位思想】GG和女神 数字按照数值排序后取了多少个数
- 2015广工新生赛 Problem A: GG和女神
- 【2015广东工业大学新生赛G】【区间统计 左右端点计数思想】我是好人2 区间范围有多少个数 模x余y
- gdut月赛A: GG和女神(好题)
- 广东工业大学2015新生赛round2(//自己脑洞堵了,madan!)
- 【2015广东工业大学新生赛B】【数论 素因子拆分】小刀带你们玩游戏 lcm(A,B)==C下B的个数
- 【2015ZUFE新生赛网络同步赛A】【水题】水水更健康 有多少个数小于m
- 2015广东工业大学新生赛 总结+部分题解
- sql 按照数字排序
- GG的匹配串 ______(广东工业大学2015校赛初赛)
- 实现按a字段分组后,在组内再按照b字段排序,之后每组取Top n条数据
- 【2015广东工业大学新生赛H】【数论 先设再求思想】跑操场 不同速度第n次相遇的时间
- 【2015广东工业大学新生赛I】【贪心】Stubird说这是水题 给定正视图和侧视图求最少积木数
- mysql将数字组成的字符串字段按照字符串数值型的大小进行排序
- mysql将数字组成的字符串字段按照字符串数值型的大小进行排序
- MySQL取出数字字符串的一部分,然后按照数值大小排序
- matlab 矩阵按照行列数值大小排序
- SQL数据分组后取最大值或者取前几个值(按照某一列排序)
- [LeetCode]016-3Sum-Closest
- Android 和 iOS 的区别
- week14---12月8日 JS内置对象——string、Date
- next()与nextLine()
- 一些iOS常用的第三方库和控件
- 【2015广东工业大学新生赛A】【排序 二进制数位思想】GG和女神 数字按照数值排序后取了多少个数
- Opencv 任意区域选中
- http 头信息详解
- 亲情无价
- 【2015广东工业大学新生赛B】【数论 素因子拆分】小刀带你们玩游戏 lcm(A,B)==C下B的个数
- 应用跳转到系统设置里的各种设置界面
- 【2015广东工业大学新生赛C】【贪心 快速幂】长度为n的最小47倍数
- 【详解】Python下载图片
- javascript day01天,基础整理