早上睡到 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. vue中图片预览(v-viewer库使用)

    效果图:   注释: 可拖拽,可放大缩小旋转,全屏,功能齐全,底部有操作按钮 属性: npm install v-viewer --save //安装 //在main.js中引入 import Vie ...

  2. 谈谈我认识的js原型

    众所周知,JavaScript中是没有传统类的概念的,js通过原型链的方式实现继承.原型是js学习中的一大重点知识,在ES6出来之前,因为js不像php.java一样拥有类的写法,所以继承方式也就不像 ...

  3. AcWing 1220. 生命之树

    题目链接 题目描述: 在X森林里,上帝创建了生命之树. 他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值. 上帝要在这棵树内选出一个非空节点集 S,使得对于 S 中的任 ...

  4. 整合SSM框架环境搭建

    知识要求 MySQL相关操作 Maven操作 Mybatis.Spring.SpringMVC三个框架基本操作 JavaWeb等知识 搭建环境 MySQL 8.0 Mybatis 3.5.2 使用c3 ...

  5. 导出带标签的tar包(docker)-解决导出不带标签的麻烦

    需求:在docker的本地镜像库中导出tar包给其他节点使用. 如果使用:docker save -o package.tar e82656a6fc 这样形式导出的tar包,安装之后标签会消失解决办法 ...

  6. C++ 限定符Const和指针

    指向常量的指针 指向常量的指针不能用于其所指对象的值.若想存放常量对象的地址,只能使用指向常量的指针. const int a = 3; //a是个常量,其值不能改变 int *b = &a; ...

  7. 【转】python代码优化常见技巧

    https://blog.csdn.net/egefcxzo3ha1x4/article/details/97844631

  8. 企业应用架构研究系列二十八:身份认证 Beginning Out With IdentityServer4

    在.Netcore 技术栈中,一直在使用了开源组件IdentityService4进行身份管理,其功能的强大和易用性的确很受开发者喜欢,但是最近其开源组织Duende Software 开始对其进行商 ...

  9. 2.4 小白必看:零基础安装Linux系统(超级详细)

    我们以新发布的 CentOS 8.1 为例,学习如何安装Linux系统. 准备工作: 1. 一台可以访问互联网的电脑 2. VMware Workstation安装包 3. CentOS8.1镜像文件 ...

  10. PHP反序列化链分析

    前言 基本的魔术方法和反序列化漏洞原理这里就不展开了. 给出一些魔术方法的触发条件: __construct()当一个对象创建(new)时被调用,但在unserialize()时是不会自动调用的 __ ...