2015广工新生赛 Problem A: GG和女神
2015-12-10 17:25
274 查看
Problem A: GG和女神
Description
大家都知道,GG不仅长得帅,而且还长得帅,所以就连女神都喜欢他,这不,GG正打算跟女神出国旅游。女神觉得一定要选最好的衣服跟GG出去,给他留个好印象。所以女神打算在新买的n件衣服里面选k件带出国,所以她打算问她的好朋友xdlove,但是xdlove暂时没空回她,所以女神就自己选好了k件,把衣服标号写在了一个笔记本上。等xdlove闲下来找女神的时候,发现女神不在家里,只看到一堆衣服,有强迫症的他就把衣服按照价格从低到高排了序。这时刚吃完饭的女神就来了,看到被xdlove弄乱了的衣服,当然不高兴了,于是xdlove就跟她说,虽然我弄乱了,但我全都记得,然后跟女神说了k个编号之后说这就是你刚才选的k件(当然是假的)。GG知道了这件事之后,打算拆穿xdlove,毕竟他不容忍别人欺骗他的女神。于是他搜集了女神一开始的衣服价格序列,女神写了编号的笔记本,以及xdlove随口说的k个编号,现在他想知道xdlove说的K件衣服里面有多少件是女神挑好的,如果你能帮GG解决这个问题,那么他将会送你一个独家气球。Input
第一行输入样例个数T(T<=20)。每个样例格式如下
第一行两个数字n(1<=n<=1e6)和k(1<=k<=n),n,k如题目所述。
第二行是n件衣服价格vi,保证每个vi都不相同(vi<=1e17)
第三行,k个数字A1-An,代表女神笔记本上的k个编号。
第四行,k个数字B1-Bn,代表xdlove随口说的k个编号。
Output
每一个样例输出一个答案,换行Sample Input
12 1
4 3
1
2
Sample Output
1题解
表示一开始连题目都读不懂….意思就是给你n个数,其中选了k个出来,可是后来被经过排序后,再告诉你k(下标)个数,问这k个中有多少个是原来选过的,数据量很大,如果普通的做法必然超时到死,那么自然想起了位运算…
输入n个数后把它们全部左移一位,原来的大小关系是不会改变的,然后选了的在末尾标志1,然后&1就知道是不是原来选过的了
代码
#include <cstdio> #include <queue> #include <cstring> #include <iostream> #include <cstdlib> #include <algorithm> #include <vector> #include <map> #include <string> #include <set> #include <ctime> #include <cmath> #include <cctype> using namespace std; const int MAX = 1e6+10; #define LL long long int cas=1,T; LL cloth[MAX]; int main() { scanf("%d",&T); while (T--) { int n,k; scanf("%d%d",&n,&k); for (int i = 1;i<=n;i++) { scanf("%lld",&cloth[i]); cloth[i]<<=1; } for (int i = 1;i<=k;i++) { int temp; scanf("%d",&temp); cloth[temp]|= 1; } sort(cloth+1,cloth+n+1); int ans = 0; for (int i = 1;i<=k;i++) { int temp; scanf("%d",&temp); /*if (cloth[temp]&1) //多加个判断也会超时.. ans+=1;*/ ans+=(cloth[temp]&1); } printf("%d\n",ans); memset(cloth,0,sizeof(cloth)); } //freopen("in","r",stdin); //scanf("%d",&T); //printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC); return 0; }
相关文章推荐
- 以非 root 用户身份使用 Wireshark 抓包(Sniffing with Wireshark as a Non-Root User)
- 初识MariaDB存储引擎
- 156 Identify the persistent configuration setting for the target database that can be set for the ba
- nodejs入门
- linux 程序运行监控
- 老李分享:loadrunner的java user脚本开发
- 一致性哈希算法
- 老李分享:Eclipse中开发性能测试loadrunner脚本
- ProGuard的作用、使用及bug分析
- 155 Which three statements are true about windows? (Choose three.) A. Only one window can be open at
- h5+百度地图获取地理位置
- 80后辣妈的原因2015年749一万毕业生的一封信
- 动态规划 - 搬寝室
- Linux域名解析得到ip地址
- 老李分享:loadrunner用javavuser进行接口测试
- Ansible :一个配置管理和IT自动化工具
- 设置NSTimer限制ImageView图片显示时间
- Qt 程序异常结束,并且crashed
- linux的poll机制
- VolleySupport使用说明