首页 技术 正文
技术 2022年11月17日
0 收藏 613 点赞 2,854 浏览 2952 个字
#   用  户  名  公园 计划 抽卡   总分 
19 859乔屹 100

03:15:05

40

03:14:01

  140

03:15:05

emm

怎么讲

  T2我把自己优化掉了40分

优化前:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define cin(a)scanf("%d",&a)
using namespace std;
const int maxn=1e5+5;
int dui[maxn],siz,now,last;
int a[maxn];
int m,n,qu;
int ri[maxn];
int len[maxn];
int sum[maxn];
long long ans[maxn];
struct node{
int l,r,k;
}t[maxn];
__attribute((always_inline))int h233(const node &a,const node &b)
{return a.r==b.r?a.l<b.l:a.r<b.r;}
int main()
{
//freopen("ans.in","r",stdin);
//freopen("a.out","w",stdout);
cin(n),cin(m),cin(qu);
for(int q=1;q<=n;q++)
cin>>a[q];
for(int q=1;q<=n;q++)
{
while(siz<m&&now<n)
{
++now;
if(!dui[a[now]])
++siz;
++dui[a[now]];
}
if(siz>=m)
ri[q]=now;
else
{
last=q;
break;
}
dui[a[q]]--;
if(!dui[a[q]])
--siz;
}
/*for(int q=1;q<=last;q++)
cout<<ri[q]<<" ";
cout<<endl;*/
/*for(int q=1;q<=qu;q++)
{
cin(t[q].l),cin(t[q].r),t[q].k=q;
}
sort(t+1,t+qu+1,h233);*/
/*for(int q=1;q<=qu;q++)
cout<<t[q].l<<" "<<t[q].r<<endl;*/
for(int q=1,x,y;q<=qu;q++)
{
cin(x),cin(y);
long long ans=0;
for(int w=x;w<=y;w++)
{
//cout<<w<<" "<<y<<" "<<(ri[w]+y-2*w)*(y-ri[w]+1)/2<<endl;
ans+=max(0,(ri[w]+y-2*w)*(y-ri[w]+1)/2);
}
cout<<ans<<endl;
}
/*
int tmp=0;
for(int q=1;q<=qu;q++)
{
if(tmp==t[q].r)
ans[t[q].k]=sum[t[q].l];
else
{
//cout<<t[q].l<<" "<<t[q].r<<endl;
sum[t[q].r+1]=0;
for(int w=t[q].r;w>=t[q].l;w--)
sum[w]=sum[w+1]+max(0,(ri[w]+t[q].r-2*w)*(t[q].r-ri[w]+1)/2);
tmp=t[q].r;
ans[t[q].k]=sum[t[q].l];
for(int w=t[q].l;w<=t[q].r;w++)
cout<<sum[w]<<" ";
cout<<endl<<endl;
}
}*/
/*for(int q=1;q<=qu;q++)
cout<<ans[q]<<endl;*/
}

 显然是$\Theta (n+qn)$的

 $n\leq10000$,$q\leq10000$

 时限2s

 可以过的对吧

 然而我忘了时限是2s

 强行玄学优化:

 

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define cin(a)scanf("%d",&a)
using namespace std;
const int maxn=1e5+5;
int dui[maxn],siz,now,last;
int a[maxn];
int m,n,qu;
int ri[maxn];
int len[maxn];
int sum[maxn];
long long ans[maxn];
struct node{
int l,r,k;
}t[maxn];
__attribute((always_inline))int h233(const node &a,const node &b)
{return a.r==b.r?a.l<b.l:a.r<b.r;}
int main()
{
//freopen("ans.in","r",stdin);
//freopen("a.out","w",stdout);
cin(n),cin(m),cin(qu);
for(int q=1;q<=n;q++)
cin>>a[q];
for(int q=1;q<=n;q++)
{
while(siz<m&&now<n)
{
++now;
if(!dui[a[now]])
++siz;
++dui[a[now]];
}
if(siz>=m)
ri[q]=now;
else
{
last=q;
break;
}
dui[a[q]]--;
if(!dui[a[q]])
--siz;
}
/*for(int q=1;q<=last;q++)
cout<<ri[q]<<" ";
cout<<endl;*/
for(int q=1;q<=qu;q++)
{
cin(t[q].l),cin(t[q].r),t[q].k=q;
}
sort(t+1,t+qu+1,h233);
/*for(int q=1;q<=qu;q++)
cout<<t[q].l<<" "<<t[q].r<<endl;*/
/*for(int q=1,x,y;q<=qu;q++)
{
cin(x),cin(y);
long long ans=0;
for(int w=x;w<=y;w++)
{
//cout<<w<<" "<<y<<" "<<(ri[w]+y-2*w)*(y-ri[w]+1)/2<<endl;
ans+=max(0,(ri[w]+y-2*w)*(y-ri[w]+1)/2);
}
cout<<ans<<endl;
}*/
int tmp=0;
for(int q=1;q<=qu;q++)
{
if(tmp==t[q].r)
ans[t[q].k]=sum[t[q].l];
else
{
//cout<<t[q].l<<" "<<t[q].r<<endl;
sum[t[q].r+1]=0;
for(int w=t[q].r;w>=t[q].l;w--)
sum[w]=sum[w+1]+max(0,(ri[w]+t[q].r-2*w)*(t[q].r-ri[w]+1)/2);
tmp=t[q].r;
ans[t[q].k]=sum[t[q].l];
/*for(int w=t[q].l;w<=t[q].r;w++)
cout<<sum[w]<<" ";
cout<<endl<<endl;*/
}
}
for(int q=1;q<=qu;q++)
cout<<ans[q]<<endl;
}

 于是WA40了

 以此铭记:

在打题之前,我们一定要看清时限

 以上

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,985
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,501
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,345
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,128
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,763
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,839