博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法复习——分块算法
阅读量:5213 次
发布时间:2019-06-14

本文共 1912 字,大约阅读时间需要 6 分钟。

题目:

Description

 

Input

修正一下

l = (l_0 + x - 1) mod n + 1, r = (r_0 + x - 1) mod n + 1

Output

Sample Input

6 3
1 2 3 2 1 2
1 5
3 6
1 5

Sample Output

1
2
1

HINT

 

修正下:

n <= 40000, m <= 50000

 

Source

题解:

 

题解如上·····一个分块模板题打了我2个小时·····不得不说代码能力和专注度还不够·····另外还学到了节约复杂度和空间的好方法···(具体见getans中的tot是如何每次重新变为1的)

代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int N=4e4+5;int visit[N],tim,n,m,num[N],cnt[N][205],ans[205][205],tot[N],temp[N],id[N],s,idx[N],len,tots,Left[N],Right[N];bool jud[N];inline int R(){ char c;int f=0; for(c=getchar();c<'0'||c>'9';c=getchar()); for(;c<='9'&&c>='0';c=getchar()) f=(f<<3)+(f<<1)+c-'0'; return f;}inline void pre(){ sort(temp+1,temp+n+1); len=unique(temp+1,temp+n+1)-temp-1; for(int i=1;i<=n;i++) { int t=num[i]; num[i]=lower_bound(temp+1,temp+len+1,num[i])-temp; idx[num[i]]=t; } //离散化------------------------------------------------------- s=(int)sqrt(n); tots=0; for(int i=1;i<=n;i++) { if(i%s==0) id[i]=tots,Right[tots]=i,jud[i]=true; else if(i%s==1) id[i]=++tots,Left[tots]=i; else id[i]=tots; } Right[tots]=n,jud[n]=1; //分块------------------------------------------------ for(int i=1;i<=n;i++) cnt[num[i]][id[i]]++; for(int i=2;i<=tots;i++) for(int j=1;j<=len;j++) cnt[j][i]+=cnt[j][i-1]; //统计cnt------------------------------------------ for(int i=1;i<=tots;i++) { int maxx=0,anss=1e+8; memset(tot,0,sizeof(tot)); for(int j=Left[i];j<=n;j++) { tot[num[j]]++; if(tot[num[j]]>maxx||(tot[num[j]]==maxx&&num[j]
maxx||((tot[num[i]]==maxx)&&num[i]
maxx||((tot[num[i]]+cnt[num[i]][rights]-cnt[num[i]][lefts-1]==maxx)&&num[i]
maxx||((tot[num[i]]+cnt[num[i]][rights]-cnt[num[i]][lefts-1]==maxx)&&num[i]
b) swap(a,b); t=getans(a,b); printf("%d\n",t); } return 0;}

 

转载于:https://www.cnblogs.com/AseanA/p/7506113.html

你可能感兴趣的文章
浏览器兼容性问题
查看>>
2. Add Two Numbers
查看>>
ORA-39070
查看>>
冲刺博客四
查看>>
nginx实现跨域访问
查看>>
多平台下Modbus通信协议库的设计(一)
查看>>
驱动初步学习
查看>>
linux 实时查看Tomcat日志信息
查看>>
不显示bootstrap模态框,只有背景变遮住
查看>>
vue 对数组置顶操作
查看>>
HDU - 3336 Count the string
查看>>
CodeForces - 940E Cashback
查看>>
Apache Rewrite的配置
查看>>
NOIP模拟题 管道
查看>>
Unix-IO-同步,异步,阻塞,非阻塞-笔记篇
查看>>
【uoj#180】[UR #12]实验室外的攻防战 结论题+树状数组
查看>>
dos与unix文件格式之间的转换
查看>>
[iOS] 为文本加上横线方法
查看>>
201571030303 小学四则混合元算 龚继恒
查看>>
【Activiti 进阶一】简单流程实例helloworld
查看>>