题目描述

自从学习了动态规划后,Famer KXP对动态规划的热爱便一发不可收拾,每天都想找点题做,一天,他找到了一道题,但是不会做,于是,他找到了你。题目如下:
给出N个无序不重复的数,再有M个询问,每次询问一个数是否在那N个数中,若在,则ans增加2^K,K为该数在原数列中的位置。
由于ans过大,所以只要求你输出ans mod 10^9+7。

输入

第一行,两个数N,M,第二行N个数,第三行M个数。

输出

输出最终答案。

样例输入

5 5
1 3 4 6 5
1 8 1 3 6

样例输出

24

数据范围限制

30% 0< N,M<100
50% 0< N,M<10000
100% 0< N,M<100000
输入的数均在2^31 以内

分析
理论时间复杂度:N*logN*logN
正解:动态规划 (骗人的)
题目背景坑人的:
30%可以暴力拿到;
50%可以用二分查找或者快速幂其一得到;

正解为二分查找+快速幂。

程序:

var
a,p:array[0..100000]of int64;
i:longint;
n,m,ans,w,wz:int64;function f(b1,p1,k1:longint):int64;
var
l,t,bz:int64;
i:longint;
a1:array[1..32]of longint;
beginl:=0;t:=p1;while t<>0 dobegininc(l);a1[l]:=t mod 2;t:=t div 2;end;bz:=1;for i:=l downto 1 dobegint:=bz*bz mod k1;if a1[i]=1 then bz:=b1 mod k1 *t mod k1 else bz:=t;end;exit(bz);
end;procedure kp(l,r:longint);
var
i,j:longint;
mid:int64;
beginif l>=r then exit;i:=l;j:=r;mid:=a[(i+j) div 2];repeatwhile a[i]<mid do inc(i);while a[j]>mid do dec(j);if i<=j thenbegina[0]:=a[i];a[i]:=a[j];a[j]:=a[0];p[0]:=p[i];p[i]:=p[j];p[j]:=p[0];inc(i);dec(j);end;until i>j;kp(l,j);kp(i,r);
end;function search(k:int64):longint;
var
l,r,mid:int64;
beginl:=1;r:=n;mid:=(l+r) div 2;while (a[mid]<>k)and(l<=r) dobeginif a[mid]>k then r:=mid-1 else l:=mid+1;mid:=(l+r) div 2;end;if l>r then exit(0);exit(mid);
end;beginassign(input,'sfxx.in');reset(input);assign(output,'sfxx.out');rewrite(output);readln(n,m);for i:=1 to n dobeginread(a[i]);p[i]:=i;end;kp(1,n);readln;ans:=0;for i:=1 to m dobeginread(w);wz:=search(w);if wz>0 then ans:=ans+f(2,p[wz],1000000007);end;write(ans mod 1000000007);close(input);close(output);
end.

转载于:https://www.cnblogs.com/YYC-0304/p/9500083.html

JZOJ__Day 9:【普及模拟】算法学习(sfxx)相关推荐

  1. ACM竞赛学习整理--模拟算法举例POJ1068

    什么是模拟 仅仅使用较简单的算法和数据结构的题目. 模拟顾名思义,就是按照题目的要求,一步步写出代码. 常见的模拟方法 a.用数学量和图形描述问题 计算机处理的是数学量.若要用计算机解决实际问题,需要 ...

  2. Python算法学习: 竞码编程-蓝桥杯模拟赛3题解

    文章目录 A. 试题A:生存还是毁灭,这是一个问题 7' B. 试题B:小小神枪手 开局98K 8' C. 试题C:关云长单刀会金莲,贾宝玉三打白骨精 10' D. 试题D:抽刀断水水更流,举杯销愁愁 ...

  3. python机器学习(一)算法学习的步骤、机器学习的应用及流程(获取数据、特征工程、模型、模型评估)

    机器学习入门 机器学习中需要理论性的知识,如数学知识为微积分(求导过程,线性回归的梯度下降法),线性代数(多元线性回归,高纬度的数据,矩阵等),概率论(贝叶斯算法),统计学(贯穿整个学习过程),算法根 ...

  4. C++初级算法-学习笔记

    目录 算法的基本概念 什么是算法 什么是数据结构 模拟与高精度 模拟算法 高精度运算 算法评价与算法复杂度 算法"评价员" 如何评价算法 暴力枚举 枚举 子集枚举 排列枚举 排序 ...

  5. 无限风光 : 近来地形算法学习小结【转】

    无限风光 : 近来地形算法学习小结 原文链接   目录 -写在前面 -本文话题整体观 -概念(Concepts): 入门须知      -高度图(HeightMap)      -分形(Fractal ...

  6. 拿下斯坦福和剑桥双offer,00后的算法学习之路

    董文馨,00后,精通英语,西班牙语.斯坦福大学计算机系和剑桥大学双Offer,秋季将进入斯坦福大学学习. 10岁开始在国外上学:12岁学Scratch: 13岁学HTML & CSS: 14岁 ...

  7. 原创 | 初学者友好!最全算法学习资源汇总(附链接)

    在计算机发展飞速的今天,也许有人会问,"今天计算机这么快,算法还重要吗?"其实永远不会有太快的计算机,因为我们总会想出新的应用.虽然在摩尔定律的作用下,计算机的计算能力每年都在飞快 ...

  8. 【基础】基础算法学习笔记(状态空间)

    基础算法学习笔记(状态空间) 一.状态空间 1.定义(什么是状态空间):一个实际问题的各种可能情况构成的集合.(解释:为什么需要算法来和程序来处理问题?如果一道题可以手算得到答案,换句话说就是存在通过 ...

  9. 给实践者的算法学习指南

    几乎是所有最顶尖的互联网和软件公司都会用算法和数据结构来考察软件工程师,然而我并不打算在这里再讨论算法的重要性和对实际工作是否有用(我认为这对一个优秀的程序员是不可或缺的基本技能),也不讨论「Goog ...

最新文章

  1. 祝51CTO 生日快乐
  2. 【聊透SpringMVC】自学java和三大框架要多久
  3. Keil中的警告的解决
  4. python matplotlib 画图神器
  5. 3、使用Statement接口实现增,删,改操作
  6. 面试让你手撕红黑树?30张图带你彻底理解红黑树~
  7. 数据库切换时的一个傻逼的错误。
  8. [PHP]常量的一些特性
  9. 解决IE10以下对象不支持“bind“属性或方法
  10. 【计算机系统设计】实践笔记(2)数据通路构建:第一类R型指令分析(2)
  11. 10 FI配置-财务会计-把会计年度变式分配给公司代码
  12. Team Foundation Server 2010 安装、部署与配置(三):安装 .
  13. LeetCode--151. 翻转字符串里的单词(字符串翻转,字符串分割)
  14. 官宣了!受疫情影响,程序员可免费领这些!
  15. 二等水准数据平差_二等水准点高程平差计算表(1)
  16. 饭客网络(基础教程)
  17. 自动化测试面试题整理出炉附答案,建议收藏
  18. (CCF202109-4)收集卡牌(概率DP)
  19. Lenovo y40-70安装Ubuntu 16.04*后出现的[Firmware Bug]
  20. HTML元素脱离文档流的三种方法

热门文章

  1. [云炬Python学习笔记] Python读取指定文件夹下的文件
  2. 重磅!PyTorch 中文手册已开源!理论、实践、应用都有了!
  3. 吴恩达《卷积神经网络》精炼笔记(2)-- 深度卷积模型:案例研究
  4. mysql和oracle的锁_关于数据库行锁与表锁的认识
  5. python最基本的规则是什么_Python基础介绍(一)
  6. Go进阶(2): 变量+数据类型
  7. 3DSlicer15:Scripted Module
  8. Uncaught TypeError: Object #Document has no method 'load'
  9. 批处理之显示隐藏文件
  10. 贯穿你一生的14条社会生计