2013年 ACMICPC 杭州赛区H题
思路:树状数组统计。待验证,不知道是否对。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#define lowbit(x) (x&(-x))
#define Maxn 200010
using namespace std;
int C[Maxn],vi[Maxn],pre[Maxn],n,num[Maxn],ans[Maxn],ov[Maxn];
struct Qu{
int l,r,i;
}q[Maxn];
int cmp(Qu a,Qu b)
{
return a.r<b.r;
}
void update(int pos,int val)
{
while(pos){
C[pos]+=val;
pos-=lowbit(pos);
}
}
int sum(int pos)
{
int s=;
while(pos<=n){
s+=C[pos];
pos+=lowbit(pos);
}
return s;
}
int main()
{
int m,i,j;
while(scanf("%d%d",&n,&m),n||m){
memset(C,,sizeof(C));
memset(vi,,sizeof(vi));
memset(pre,,sizeof(pre));
memset(ov,,sizeof(ov));
for(i=;i<=n;i++)
scanf("%d",num+i);
for(i=;i<=m;i++){
scanf("%d%d",&q[i].l,&q[i].r);
q[i].i=i;
}
sort(q+,q++m,cmp);
int r=,temp,pos;
for(i=;i<=n;i++){
update(i,);
pos=;
for(j=;j*j<=num[i];j++){
if(num[i]%j) continue;
if(!vi[pre[j]]&&pre[j]) {
update(pre[j],-);
if(ov[pre[j]])
update(ov[pre[j]],);
vi[pre[j]]=;
}
pos=max(pos,pre[j]);
pre[j]=i;
if(j*j==num[i]) continue;
temp=num[i]/j;
if(!vi[pre[temp]]&&pre[temp]){
update(pre[temp],-);
if(ov[pre[temp]])
update(ov[pre[temp]],);
vi[pre[temp]]=;
}
pos=max(pos,pre[temp]);
pre[temp]=i;
}
if(!vi[pre[num[i]]]&&pre[num[i]]){
update(pre[num[i]],-);
if(ov[pre[num[i]]])
update(ov[pre[num[i]]],);
vi[pre[num[i]]]=;
}
pos=max(pos,pre[num[i]]);
pre[num[i]]=i;
if(pos){
update(pos,-);
ov[i]=pos;
}
while(r<=m&&q[r].r==i){
ans[q[r].i]=sum(q[r].l);
r++;
}
}
for(i=;i<=m;i++)
printf("%d\n",ans[i]);
}
return ;
}
2013年 ACMICPC 杭州赛区H题的更多相关文章
- hdu 4460 第37届ACM/ICPC杭州赛区H题 STL+bfs
题意:一些小伙伴之间有朋友关系,比如a和b是朋友,b和c是朋友,a和c不是朋友,则a和c之间存在朋友链,且大小为2,给出一些关系,求出这些关系中最大的链是多少? 求最短路的最大距离 #include& ...
- HDU 4777 Rabbit Kingdom (2013杭州赛区1008题,预处理,树状数组)
Rabbit Kingdom Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- HDU 4778 Gems Fight! (2013杭州赛区1009题,状态压缩,博弈)
Gems Fight! Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 327680/327680 K (Java/Others)T ...
- HDU 4771 Stealing Harry Potter's Precious (2013杭州赛区1002题,bfs,状态压缩)
Stealing Harry Potter's Precious Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 ...
- HDU 4770 Lights Against Dudely (2013杭州赛区1001题,暴力枚举)
Lights Against Dudely Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- 2011 ACM-ICPC 成都赛区A题 Alice and Bob (博弈动规)
题目大意: 有K堆石子,每堆有Ki个.两人的操作能够是: 1 从某一堆拿走一个 假设该堆在此之后没有石子了.就消失 2 合并两个堆 求是否 ...
- 2017北京赛区H题
题目链接 题意:在n*m的矩阵中选择变换或者不变换一个数变成p,使得最大子矩阵和最小 1<=n,m<=150, -1000<=p<=1000; 题解: 他人题解链接 涉及到知识 ...
- HDU 6270 Marriage (2017 CCPC 杭州赛区 G题,生成函数 + 容斥 + 分治NTT)
题目链接 2017 CCPC Hangzhou Problem G 题意描述很清晰. 考虑每个家庭有且仅有$k$对近亲的方案数: $C(a, k) * C(b, k) * k!$ 那么如果在第$1$ ...
- hdu 4461 第37届ACM/ICPC杭州赛区I题
题意:给两个人一些棋子,每个棋子有其对应的power,若b没有或者c没有,或者二者都没有,那么他的total power就会减1,total power最少是1,求最后谁能赢 如果b或c出现的话,fl ...
随机推荐
- (排班表三)导出列名不固定的Grid表格到Excel
将班表信息导出Excel表格保存到本地 要求:文档名称为[XXXX]年X月值班表 文档显示的效果: 实现代码: //导出Excel值班表 private void btn_export_1_Click ...
- LeetCode567. Permutation in String
Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1. I ...
- BZOJ1046: [HAOI2007]上升序列(LIS)
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5740 Solved: 2025[Submit][Status][Discuss] Descript ...
- 网页头部ico 不显示
这个都是很基础的东西,.今天整理以前的笔记,看到了记录一下 <link rel="shortcut icon" href="/favicon.ico"/& ...
- intellij中导入java包
- ethereum(以太坊)(三)--合约单继承与多继承
pragma solidity ^0.4.0; // priveta public internal contract Test{ //defualt internal uint8 internal ...
- 在程序开发中,++i 与 i++的区别
在不参与运算的情况下,i++和++i都是在变量的基础加1 ◆在参与运算的情况下 Var i=123; Var j=i++; 先将i的值123赋值给j,之后再自增 j的值为123 i 的值为124 ...
- Android面试收集录 Android布局
1.请说出Android中的五种布局,并介绍作用? FrameLayout(堆栈布局),层叠方式显示,类似于PhotoShop上的层叠图层. LinearLayout(线性布局),将视图以水平或者垂直 ...
- Spring---BeanFactory与ApplicationContext简介
BeanFactory概念 Spring通过一个配置文件描述bean和bean之间的依赖关系,然后利用java语言的反射功能实例化bean,并建立bean之间的依赖关系.Spring的IOC容器在完成 ...
- css3 3D
开通黄钻 Css3 -3D效果<!DOCTYPE html><html lang="en"><head> <meta charset=&q ...