【题解】【A % B Problem(P1865)】-C++
题目背景
题目名称是吸引你点进来的
实际上该题还是很水的
题目描述
区间质数个数
输入输出格式
输入格式:
一行两个整数 询问次数n,范围m
接下来n行,每行两个整数 l,r 表示区间
输出格式:
对于每次询问输出个数 t,如l或r∉[1,m]输出 Crossing the line
输入输出样例
输入样例#1:
2 5
1 3
2 6
输出样例#1:
2
Crossing the line
说明
【数据范围和约定】
对于20%的数据 1<=n<=10 1<=m<=10
对于100%的数据 1<=n<=1000 1<=m<=1000000 -10^9<=l<=r<=10^9 1<=t<=1000000
这道题主要考查的是有关素数的知识,基本方法可以去这里了解一下。
好的接下来说解法。
粗看数据范围:
???为什么还要在负数里面找质数
一看样例再读题目
Crossing the line不就是来处理这种情况的吗?直接打上if(l<1||r>m)cout<<"Crossing the line"<<endl;
我看到这道题的第一思路就是用上面那篇蓝色字点进去的博客里面的第三种方法(建议看一下),毕竟这个方法的时间复杂度是我在里面列举的三种方法中特别快的了!
然后我就打了下来去luogu上提交…
很明显,虽然第三种方法已经有了很快的速度,但是在特别构造的数据下,这种速度还是不够的!
那么,我们应该进行思考:
既然这道题目的查找次数最高可以达到1k,那么我们为什么不通过打标记和记录数字来快速得出答案呢?
在我的代码中,我用ans[i]来表示从1-i的范围内有多少个质数,那么代码实现就很简单了。
具体代码就贴在下面,有需要的自取:
#include<bits/stdc++.h>
using namespace std;
int p[1000010],ans[1000010];
bool ip[1000010];
int tot=0;
int main()
{
int n,m,l,r;
cin>>n>>m;
memset(ip,true,sizeof(ip));
ip[0]=0;ip[1]=0;ans[1]=0;
for(int i=2;i<=m;i++)
{
ans[i]=ans[i-1];
if(ip[i])
{
p[++tot]=i;
ans[i]=tot;
}
for(int j=1;j<=tot&&i*p[j]<=m;++j)
{
ip[i*p[j]]=false;
if(i%p[j]==0)break;
}
}
for(int i=1;i<=n;i++)
{
cin>>l>>r;
if(l<1||r>m) cout<<"Crossing the line"<<endl;
else cout<<ans[r]-ans[l-1]<<endl;
}
return 0;
}
ov.
【题解】【A % B Problem(P1865)】-C++的更多相关文章
- 【题解】Tree-String Problem Codeforces 291E AC自动机
Prelude 传送到Codeforces:(/ω\)--- (/ω•\) Solution 很水的一道题. 对查询的串建出来AC自动机,然后树上随便跑跑就行了. 为什么要写这篇题解呢? 我第一眼看到 ...
- P1832题解 A+B Problem(再升级)
万能的打表 既然说到素数,必须先打素数表筛出素数, 每个素数可以无限取,这就是完全背包了. 这次打个质数表: bool b[1001]={1,1,0,0,1,0,1,0,1,1,1,0,1,0,1,1 ...
- 题解:T103342 Problem A. 最近公共祖先
题目链接 题目大意 求每个点对的lca深度的和 以每一层分析,得出通式 由于1e9的数据范围要化简表达式得到O(能过) 瞎搞后就是2^(2n+2)-(4n+2)*2^n-2 code: #includ ...
- 暑假训练round 3 题解
今天做题运气出奇的好,除了几处小错误调试之后忘记改掉了……最后还AK了……虽然题目不难,学长也说是福利局,但是对个人的鼓励作用还是挺大的……至此暑假训练就结束了,也算没有遗憾……. 题解如下: Pro ...
- [Luogu 1919]【模板】A*B Problem升级版(FFT快速傅里叶)
Description 给出两个n位10进制整数x和y,你需要计算x*y. Input 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. Output 输出 ...
- HDU 5296 Annoying problem LCA+树状数组
题解链接 Annoying problem Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ...
- Codeforces Round #198 (Div. 2)C,D题解
接着是C,D的题解 C. Tourist Problem Iahub is a big fan of tourists. He wants to become a tourist himself, s ...
- CF 407B Long Path[观察性质 DP]
B. Long Path time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- Codeforces Round #206 div1 C
CF的专业题解 : The problem was to find greatest d, such that ai ≥ d, ai mod d ≤ k holds for each i. Let ...
随机推荐
- SkyDrive开发申请ClientID
申请地址: http://go.microsoft.com/fwlink/p/?LinkId=193157 注意:在创建完成一个你的应用实例后,有一个很重要的任务需要你去完成. 那就是在你创建的应用实 ...
- UWP中弹出框屏幕适配问题
上次在UWP中的消息提示框(二)中谈到弹出框在虚拟导航栏的手机上被遮挡问题,今天接就着扯. 上次给用户控件指定的宽高都是Window.Current.Bounds的宽高,而这个获取到的是包含应用程序窗 ...
- 建立Linux计划命令crontab
crontab翻译:排程,命令 crontab从输入设备输入命令,并将其放入crontab文件,供守护进程crond读取并执行,crond在后台每一分钟执行一次 crontab -e:创建计划命令,进 ...
- Sysinternals套件2016年11月更新发布,诸多工具被更新
Sysinternals 实用程序可帮助您管理.解决和诊断 Windows 系统和应用程序,在 Sysinternals 的 2016 年 11 月更新中,微软增强 在 sysmon 对注册表和文件事 ...
- Model-View-Controller Explained in C++
The Permanent URL is: Model-View-Controller Explained in C++. The Model-View-Controller (MVC) is not ...
- firemonkey 手机屏幕自适应程序问题
我是新手.在我才学了2个星期的时候,那个白痴老板说什么手机屏幕自适应程序,我当时不能理解呀,觉得用Delphi的布局设计不就行了吗.结果他说:我就是想让控件内容什么的放在小屏幕手机上也不出来.我就说, ...
- Windows窗体原理及控件WM_DRAWITEM和子类化重绘演示文件
http://download.csdn.net/detail/wenzhou1219/6783959
- Postman调试中文出现乱码问题
最近在通过postman调试接口的时候,发现post的数据在中文的时候,传输到后台变成了问号(???),经过网上的资料与验证,找到了解决方案:在请求头中添加charset=UTF-8的属性,后续在进行 ...
- HTML连载15-文本属性&颜色控制属性
一.文本装饰的属性 1.格式:text-decoration:underline; 2.取值: (1)underline代表下划线 (2)line-through代表删除线 (3)overline代表 ...
- win10 下的YOLOv3 训练 wider_face 数据集检测人脸
1.数据集下载 (1)wider_face 数据集网址为 http://shuoyang1213.me/WIDERFACE/index.html 下载以上几项文件(这里推荐 google Drive ...