早上睡到 7:10 分才想起今天有 GDKOI ,赶紧去买了一个面包赶去机房

发现隔壁的大奆都过来了。比赛时由于昨晚一直没睡好,打了两个小时的哈欠

T1 :暴力模拟

根据 \(r\) 和 \(c\) 的错误个数有九种情况,

=0 =1 >1
=0
=1
>1
分类讨论即可

T2 :RMQ 瞎弄

对与一个询问,在左右分别找到一个最近的比他高的点

可以用 RMQ + 二分,也可以离线

本蒟蒻用了前者,复杂度\(O(n\log n+q\log n)\)

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=200005;
int x[N],n,T,p[35]={1},lg[N],f[N][35],vl;
LL sm[N],res;
inline int RMQ(int l,int r) {
register int k=lg[r-l+1];
return max(f[l][k],f[r-p[k]+1][k]);
}
int Left(int l,int r) {
register int mid;
while(l<r) {
mid=l+r>>1;
if(RMQ(mid+1,r)>=vl)l=mid+1;
else r=mid;
} return l;
}
int Right(int l,int r) {
register int mid;
while(l<r) {
mid=l+r>>1;
if(RMQ(l,mid)>=vl)r=mid;
else l=mid+1;
} return l;
}
int main() {
for(int i=1;i<31;i++)p[i]=p[i-1]<<1;
scanf("%d%d",&n,&T);
for(int i=1;i<=n;i++)scanf("%d",&x[i]),sm[i]=1LL*x[i]+sm[i-1],f[i][0]=x[i];
for(int i=2;i<=n;i++)lg[i]=lg[i>>1]+1;
++n,x[0]=x[n]=f[n][0]=f[0][0]=2000000000;
for(int j=1;j<31;j++)
for(int i=0;i+p[j-1]-1<=n;i++)
f[i][j]=max(f[i][j-1],f[i+p[j-1]][j-1]);
for(int p,u,v;T--;) {
scanf("%d%d",&p,&vl);
u=Left(0,p-1),v=Right(p+1,n+1);
res=1LL*(v-u-1)*vl-sm[v-1]+sm[u];
printf("%lld\n",res);
}
}

T3 贪心

真的比第一题还人口普查,直接排序贪心,用两个指针

  1. a[i]+a[j]>r ,直接删 j
  2. a[i]+a[j]<l ,直接删 i
  3. 匹配成功

T4 离线

贪心思想:钱都去买通票最后花费不会变多

离线,先将边按边权递增排序,再将查询按上限排序

把边权小于上限的边都删掉,并把删掉的边两点所在联通块合并

最后答案就是起点所在联通块点个数

#include<bits/stdc++.h>
using namespace std;
const int N=400005;
int n,m,T,ans[N],fa[N],sm[N],x[N],y[N],z[N],u[N],v[N],w[N];
void Sort(int l,int r) {
int i=l,j=r,mid=w[l+r>>1];
while(i<=j) {
while(w[i]<mid)++i;
while(w[j]>mid)--j;
if(i<=j) {
swap(u[i],u[j]);
swap(v[i],v[j]);
swap(w[i],w[j]);
i++,j--;
}
}
if(i<r)Sort(i,r);
if(j>l)Sort(l,j);
}
inline int Fnd(int x) {
return fa[x]^x?fa[x]=Fnd(fa[x]):x;
}
void Kp(int l,int r) {
int i=l,j=r,mid=y[l+r>>1];
while(i<=j) {
while(y[i]<mid)++i;
while(y[j]>mid)--j;
if(i<=j) {
swap(x[i],x[j]);
swap(y[i],y[j]);
swap(z[i],z[j]);
i++,j--;
}
}
if(i<r)Kp(i,r);
if(j>l)Kp(l,j);
}
int main() {
freopen("travel.in","r",stdin);
freopen("travel.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
scanf("%d%d%d",&u[i],&v[i],&w[i]);
for(int i=1;i<=m;i++)fa[i]=i,sm[i]=1;
if(m>1)Sort(1,m);
scanf("%d",&T);
for(int i=1;i<=T;i++)scanf("%d%d",&x[i],&y[i]),z[i]=i;
if(T>1)Kp(1,T);
for(int i=1,j=1,p,q;i<=T;i++) {
while(j<=m && w[j]<=y[i]) {
p=Fnd(u[j]),q=Fnd(v[j]),++j;
if(p^q)fa[q]=p,sm[p]+=sm[q];
} ans[z[i]]=sm[Fnd(x[i])];
}
for(int i=1;i<=T;i++)printf("%d\n",ans[i]);
}

End

今天的第一题情况没考虑全,要细心

T2 和 T3 发挥不错, T4 这种动态题可以想想离线

GDKOI 2021 Day1 PJ 爆炸记的更多相关文章

  1. GDKOI 2021 Day3 PJ 懵逼记

    今天早了一点起来,初三的大奆都来做比赛了, 自然,自测的有许多 AK 虽然今天的题比昨天简单,但还是脑子还是十分迟钝,以至于贪心都想不出 真为明天的提高组而担忧 T1 斜率被卡 90 ,直接用勾股定理 ...

  2. GDKOI 2021 Day2 PJ 去世记

    比赛时和昨天一样困,后面的大奆打代码的速度简直了 T1 用 2.4.6.8 来与 5 抵消掉末尾的 0 ,然后用周期问题的方法直接乘起来并取个位 #include<bits/stdc++.h&g ...

  3. GDKOI 2021 Day1 TG 。。。

    看着一群群比 LHF , HQX 还强的大佬涌进了机房,本蒟蒻表示慌得一批 T1 讲题人说最简单的签到题本蒟蒻表示... \(Update\) 用 ds , dt 两个变量记录点 i 连向 s 或 t ...

  4. noip2018 爆炸记

    noip2018 爆炸记 day-4 ~ day-2 最后考了两套模拟题,题目好水啊,但是我还是爆炸了. 第一套最后一道题竟然时一道毒瘤打表?但是我看着插头DP可做啊..(然而我并不会插头DP)然后还 ...

  5. GDKOI2021 爆炸记

    @ 目录 GDKOI2021 爆炸记 前言 普及(Day 1~3) Day one 比赛 赛后聊天 下午讲题 下午讲课 晚上 Day two 比赛 赛后聊天 下午讲题 下午讲课 晚上 Day thre ...

  6. thuwc2018 爆炸记

    从没考过这么差,必须好好总结一下.. $day1$: 上午到了雅礼洋湖,下午就开始考试.. 食堂饭菜还是很不错的,听说都是雅礼自己垫的? 下午的$day1$爆炸了.. 开考以后看了一下三个题,感觉一开 ...

  7. NOIP2018爆炸记

    又是一年\(NOIP\),可能是梦结束的地方? 之所以咕了这么久是得先确定自己不会退役,因为分太低了. 和去年一样在学校门前照了相,然后上车走了.高三回来考的只剩下\(p2oileen\)学姐了.新一 ...

  8. noip2017爆炸记——题解&总结&反省(普及组+提高组)

    相关链接: noip2018总结 noip2017是我见过的有史以来最坑爹的一场考试了. 今年北京市考点有一个是我们学校,我还恰好被分到了自己学校(还是自己天天上课的那个教室),于是我同时报了普及提高 ...

  9. THUWC2018 暴力+爆炸记

    Day 0 没有Day0. Day 1 签到然后去宿舍,环境还行,比某偏远山区要强多了,不过这热水有点难拿??看RP有遇到煮好水的饮水机就拿,没有就苟矿泉水. 中午,那个餐还是挺好吃的,不过餐费40就 ...

随机推荐

  1. EMS邮箱数据库全局监控设置

    案例任务:监控TestDB01邮箱数据库的所有邮件,监控邮箱为用户"王淑江"的邮箱. 1.EMS全局监控设置 使用PowerShell完成操作:"王淑江"监控T ...

  2. vue上拉加载下拉加载

    npm i vue-scroller <scroller :on-refresh="refresh" :on-infinite="infinite" :n ...

  3. 利用css3实现3D轮播图

    动画实现主要利用了z-index将层级关系改变,从而实现了焦点图的效果:css3属性 transform rotate 来实现图片的动画效果 .transition实现过度动画! * { margin ...

  4. MySQL发展历史

    MySQL(发音为"my ess cue el")是一种关系型数据库管理系统, MySQL数据库管理系统由瑞典的DataKonsultAB公司研发,该公司被Sun公司收购,现在Su ...

  5. uTools .SRT 转 .VTT 格式转换自动化小工具

    不想用网上的转换工具,要有网,先上传,再下载,可能还要看广告.有些工具也不是很方便.打算配合uTools的自动化助手插件搞一个一键格式转换.

  6. 从实例学习 Go 语言、"并发内容" 学习笔记及心得体会、Go指南

    第一轮学习 golang "并发内容" 学习笔记,Go指南练习题目解析.使用学习资料 <Go-zh/tour tour>.记录我认为会比较容易忘记的知识点,进行补充,整 ...

  7. Python Requests 速通爆肝、这么牛逼的库你还不会用吗?

    上网原理 爬虫原理 Get.Post Requests 介绍 安装 常用方法 Http协议 开发者工具网络界面 Response对象 下载保存一张图片.一首音乐 添加Headers发送请求 判断HTT ...

  8. [报告] Microsoft :Application of deep learning methods in speech enhancement

    Application of deep learning methods in speech enhancement 语音增强中的深度学习应用 按: 本文是DNS,AEC,PLC等国际级语音竞赛的主办 ...

  9. Elemnt ui 组件封装(table)

    <template> <div class="table"> <el-table :data="tableData2" :bord ...

  10. go-micro使用Consul做服务发现的方法和原理

    go-micro v4默认使用mdns做服务发现.不过也支持采用其它的服务发现中间件,因为多年来一直使用Consul做服务发现,为了方便和其它服务集成,所以还是选择了Consul.这篇文章将介绍go- ...