GDKOI 2021 Day1 PJ 爆炸记
早上睡到 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 贪心
真的比第一题还人口普查,直接排序贪心,用两个指针
- a[i]+a[j]>r ,直接删 j
- a[i]+a[j]<l ,直接删 i
- 匹配成功
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 爆炸记的更多相关文章
- GDKOI 2021 Day3 PJ 懵逼记
今天早了一点起来,初三的大奆都来做比赛了, 自然,自测的有许多 AK 虽然今天的题比昨天简单,但还是脑子还是十分迟钝,以至于贪心都想不出 真为明天的提高组而担忧 T1 斜率被卡 90 ,直接用勾股定理 ...
- GDKOI 2021 Day2 PJ 去世记
比赛时和昨天一样困,后面的大奆打代码的速度简直了 T1 用 2.4.6.8 来与 5 抵消掉末尾的 0 ,然后用周期问题的方法直接乘起来并取个位 #include<bits/stdc++.h&g ...
- GDKOI 2021 Day1 TG 。。。
看着一群群比 LHF , HQX 还强的大佬涌进了机房,本蒟蒻表示慌得一批 T1 讲题人说最简单的签到题本蒟蒻表示... \(Update\) 用 ds , dt 两个变量记录点 i 连向 s 或 t ...
- noip2018 爆炸记
noip2018 爆炸记 day-4 ~ day-2 最后考了两套模拟题,题目好水啊,但是我还是爆炸了. 第一套最后一道题竟然时一道毒瘤打表?但是我看着插头DP可做啊..(然而我并不会插头DP)然后还 ...
- GDKOI2021 爆炸记
@ 目录 GDKOI2021 爆炸记 前言 普及(Day 1~3) Day one 比赛 赛后聊天 下午讲题 下午讲课 晚上 Day two 比赛 赛后聊天 下午讲题 下午讲课 晚上 Day thre ...
- thuwc2018 爆炸记
从没考过这么差,必须好好总结一下.. $day1$: 上午到了雅礼洋湖,下午就开始考试.. 食堂饭菜还是很不错的,听说都是雅礼自己垫的? 下午的$day1$爆炸了.. 开考以后看了一下三个题,感觉一开 ...
- NOIP2018爆炸记
又是一年\(NOIP\),可能是梦结束的地方? 之所以咕了这么久是得先确定自己不会退役,因为分太低了. 和去年一样在学校门前照了相,然后上车走了.高三回来考的只剩下\(p2oileen\)学姐了.新一 ...
- noip2017爆炸记——题解&总结&反省(普及组+提高组)
相关链接: noip2018总结 noip2017是我见过的有史以来最坑爹的一场考试了. 今年北京市考点有一个是我们学校,我还恰好被分到了自己学校(还是自己天天上课的那个教室),于是我同时报了普及提高 ...
- THUWC2018 暴力+爆炸记
Day 0 没有Day0. Day 1 签到然后去宿舍,环境还行,比某偏远山区要强多了,不过这热水有点难拿??看RP有遇到煮好水的饮水机就拿,没有就苟矿泉水. 中午,那个餐还是挺好吃的,不过餐费40就 ...
随机推荐
- EMS恢复禁用邮箱
使用PowerShell命令恢复禁用邮箱 键入以下命令: [PS] C:\Windows\system32>Get-MailboxDatabase | Get-MailboxStatistics ...
- 去掉有定位的left值
left: initial; 一开始就是初始(默认值)的意思,就可以解决定位的left啦
- uni-app中 未收藏和已收藏功能展示
效果图如下: 未收藏: 已收藏: 代码实现: 1 <view class="jichu"> 2 <view class="name">x ...
- Java学习day37
动态语言:是一类在运行时可以改变其结构的语言:例如新的函数.对象.甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化. 主要动态语言:Objective-C.C#.JavaScript.PH ...
- python基础练习题(题目 打印出杨辉三角形前十行。)
day38 --------------------------------------------------------------- 实例061:杨辉三角 题目 打印出杨辉三角形前十行. 分析: ...
- 【GPLT】 2018年天梯赛全国总决赛 L2-2 小字辈(c++)
题目: 这一题并不是很难,属于常规的图论遍历题,这里我是用的bfs(dfs应该也可以,但明显bfs简单一些). 本人写的时候写了很多没必要头文件,自己可以根据内容删去,必要的我会写上注释 如有错误,请 ...
- 数据结构篇(3)ts 实现双向链表
如今终于到了双向链表了,此前在Node结构中的prev指针终于派上了用场.由于双向链表多了一个前向指针,所以有些操作和单向链表比较起来反而更加的简单. class DbList extends Cir ...
- Halo 开源项目学习(三):注册与登录
基本介绍 首次启动 Halo 项目时需要安装博客并注册用户信息,当博客安装完成后用户就可以根据注册的信息登录到管理员界面,下面我们分析一下整个过程中代码是如何执行的. 博客安装 项目启动成功后,我们可 ...
- Selenium3自动化测试【29】文件上传
日常在访问页面时,文件上传与下载操作也常常用到,因此在Web自动化测试中也会遇到文件上传的情况.针对上传功能,WebDriver并没有提供对应的方法.针对上传文件的场景主要有两种解决思路: 同步视频知 ...
- XCTF练习题---MISC---intoU
XCTF练习题---MISC---intoU flag:RCTF{bmp_file_in_wav} 解题步骤: 1.观察题目,下载附件 2.解压以后是一个音频文件,听一听,挺嗨的,一边听一边想到音频分 ...