当前位置:网站首页>Codeforces 474 F. Ant colony
Codeforces 474 F. Ant colony
2022-07-07 20:47:00 【Full stack programmer webmaster】
Hello everyone , I meet you again , I'm the king of the whole stack .
The line segment tree seeks the GCD…..
F. Ant colony
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Mole is hungry again. He found one ant colony, consisting of n ants, ordered in a row. Each ant i (1 ≤ i ≤ n) has a strength si.
In order to make his dinner more interesting, Mole organizes a version of «Hunger Games» for the ants. He chooses two numbers l and r(1 ≤ l ≤ r ≤ n) and each pair of ants with indices between l and r (inclusively) will fight. When two ants i and j fight, ant i gets one battle point only if si divides sj (also, ant j gets one battle point only if sj divides si).
After all fights have been finished, Mole makes the ranking. An ant i, with vi battle points obtained, is going to be freed only if vi = r - l, or in other words only if it took a point in every fight it participated. After that, Mole eats the rest of the ants. Note that there can be many ants freed or even none.
In order to choose the best sequence, Mole gives you t segments [li, ri] and asks for each of them how many ants is he going to eat if those ants fight.
Input
The first line contains one integer n (1 ≤ n ≤ 105), the size of the ant colony.
The second line contains n integers s1, s2, …, sn (1 ≤ si ≤ 109), the strengths of the ants.
The third line contains one integer t (1 ≤ t ≤ 105), the number of test cases.
Each of the next t lines contains two integers li and ri (1 ≤ li ≤ ri ≤ n), describing one query.
Output
Print to the standard output t lines. The i-th line contains number of ants that Mole eats from the segment [li, ri].
Sample test(s)
input
5
1 3 2 4 2
4
1 5
2 5
3 5
4 5output
4
4
1
1Note
In the first test battle points for each ant are v = [4, 0, 2, 0, 2], so ant number 1 is freed. Mole eats the ants 2, 3, 4, 5.
In the second test case battle points are v = [0, 2, 0, 2], so no ant is freed and all of them are eaten by Mole.
In the third test case battle points are v = [2, 0, 2], so ants number 3 and 5 are freed. Mole eats only the ant 4.
In the fourth test case battle points are v = [0, 1], so ant number 5 is freed. Mole eats the ant 4.
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#include <vector>
using namespace std;
const int maxn=100100;
typedef pair<int,int> pII;
pII b[maxn];
int n,s[maxn];
int g[maxn<<2];
int gcd(int x,int y)
{
if(x==0) return y;
return gcd(y%x,x);
}
void build(int l,int r,int rt)
{
if(l==r)
{
g[rt]=s[l];
return ;
}
int mid=(l+r)/2;
build(l,mid,rt<<1); build(mid+1,r,rt<<1|1);
g[rt]=gcd(g[rt<<1],g[rt<<1|1]);
}
int query(int L,int R,int l,int r,int rt)
{
if(r<L||l>R) return 0;
if(L<=l&&r<=R)
{
return g[rt];
}
int mid=(l+r)/2;
int u=query(L,R,l,mid,rt<<1);
int v=query(L,R,mid+1,r,rt<<1|1);
return gcd(u,v);
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",s+i);
b[i]=(make_pair(s[i],i));
}
sort(b+1,b+1+n);
build(1,n,1);
int m;
scanf("%d",&m);
while(m--)
{
int Left,Right;
scanf("%d%d",&Left,&Right);
int G=query(Left,Right,1,n,1);
int from=lower_bound(b+1,b+n+1,make_pair(G,Left))-(b+1);
int to=lower_bound(b+1,b+1+n,make_pair(G,Right+1))-(b+1);
printf("%d\n",(Right-Left+1)-(to-from));
}
return 0;
}Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/116374.html Link to the original text :https://javaforall.cn
边栏推荐
- 恶魔奶爸 指南帖——简易版
- Small guide for rapid formation of manipulator (12): inverse kinematics analysis
- You want to kill a port process, but you can't find it in the service list. You can find this process and kill it through the command line to reduce restarting the computer and find the root cause of
- 【函数递归】简单递归的5个经典例子,你都会吗?
- Phoenix JDBC
- 2022如何评估与选择低代码开发平台?
- Apifox interface integrated management new artifact
- 数值法求解最优控制问题(〇)——定义
- 华泰证券可以做到万一佣金吗,万一开户安全嘛
- Jetty:配置连接器[通俗易懂]
猜你喜欢

Tensorflow2. How to run under x 1 Code of X
MySQL约束之默认约束default与零填充约束zerofill

Dachang classic pointer written test questions

Mongodb learn from simple to deep

Implement secondary index with Gaussian redis

Intelligent software analysis platform embold

I Basic concepts
CodeSonar通过创新型静态分析增强软件可靠性

Make this crmeb single merchant wechat mall system popular, so easy to use!

Network principle (1) - overview of basic principles
随机推荐
Optimization cases of complex factor calculation: deep imbalance, buying and selling pressure index, volatility calculation
Cantata9.0 | new features
Prometheus remote_write InfluxDB,unable to parse authentication credentials,authorization failed
Write a jump table
4G设备接入EasyGBS平台出现流量消耗异常,是什么原因?
写了个 Markdown 命令行小工具,希望能提高园友们发文的效率!
H3C s7000/s7500e/10500 series post stack BFD detection configuration method
Details of C language integer and floating-point data storage in memory (including details of original code, inverse code, complement, size end storage, etc.)
使用camunda做工作流设计,驳回操作
UVA 11080 – Place the Guards(二分图判定)
恶魔奶爸 A1 语音听力初挑战
凌云出海记 | 赛盒&华为云:共助跨境电商行业可持续发展
Apifox interface integrated management new artifact
[function recursion] do you know all five classic examples of simple recursion?
Referrer和Referrer-Policy简介
[award publicity] issue 22 publicity of the award list in June 2022: Community star selection | Newcomer Award | blog synchronization | recommendation Award
POJ 1742 coins (monotone queue solution) [suggestions collection]
Phoenix JDBC
HDU4876ZCC loves cards(多校题)
npm uninstall和rm直接删除的区别