『模拟赛』CSP-S加赛1

Rank

一般

image

A. 小W与伙伴招募

仔细想了想,发现是贪心题。

赛时想了跟正解完全有些不太一样的做法,被顶针说假了,但其实开了 long long 能有 80pts。后来发现如果思路正确打 \(\mathcal{O(nm)}\) 的暴力能有 95pts。

《对于 60% 的数据》

考虑正解的贪法,每天相当于将第 \(i\) 宝石进货 \(b_i\) 个,维护一下每种宝石当前库存,然后从小到大买即可,这样也就有了上面 \(\mathcal{O(nm)}\) 的做法。要想过最后一个点,我们可以考虑输出前缀和 我们考虑用线段树来维护这个库存,线段树上二分来解决查询,这样就做到了 \(\mathcal{O(n\log m+m)}\) 的复杂度。还有一种单调栈优化的,能达到 \(\mathcal{O(n)}\),比较牛。

点击查看代码
#include<bits/stdc++.h>
#define fo(x,y,z) for(register ll (x)((y));(x)<=(z);(x)++)
#define fu(x,y,z) for(register ll (x)((y));(x)>=(z);(x)--)
using namespace std;
typedef __int128 ll;
#define lx ll
inline lx qr()
{char ch=getchar();lx x=0,f=1;for(;ch<'0'||ch>'9';ch=getchar()) if(ch=='-') f=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<3)+(x<<1)+(ch^48);return x*f;
}
#undef lx
#define qr qr()
const int Ratio=0;
const int N=2e5+5;
const int mod=1e9+9;
int n,m;
int c[N];
long long ans;
ll numb[N],sumcos[N];
ll num[N<<2],sum[N<<2],tag[N<<2],cle[N<<2];
struct rmm
{ll a,b;
}b[N];
bool cmp(rmm A,rmm B)
{if(A.a!=B.a) return A.a<B.a;return A.b>B.b;
}
namespace Wisadel
{#define ls (rt<<1)#define rs (rt<<1|1)#define mid ((l+r)>>1)void Wpushup(int rt){num[rt]=num[ls]+num[rs];sum[rt]=sum[ls]+sum[rs];}void Wpushdown(int rt,int l,int r){num[ls]+=tag[rt]*(numb[mid]-numb[l-1]);num[rs]+=tag[rt]*(numb[r]-numb[mid]);sum[ls]+=tag[rt]*(sumcos[mid]-sumcos[l-1]);sum[rs]+=tag[rt]*(sumcos[r]-sumcos[mid]);tag[ls]+=tag[rt],tag[rs]+=tag[rt];tag[rt]=0;}void Wclerr(int rt){num[ls]=num[rs]=0;sum[ls]=sum[rs]=0;cle[ls]=cle[rs]=1;tag[ls]=tag[rs]=0;cle[rt]=0;}void Wupd(int rt,int l,int r,int k){if(k>0){num[rt]+=numb[r]-numb[l-1];sum[rt]+=sumcos[r]-sumcos[l-1];tag[rt]++;}else{num[rt]=sum[rt]=tag[rt]=0;cle[rt]=1;}}ll Wq(int rt,int l,int r,int k){if(l==r){num[rt]-=k,sum[rt]-=b[l].a*k;return b[l].a*k;}if(cle[rt]) Wclerr(rt);if(tag[rt]) Wpushdown(rt,l,r);ll res=0;if(k<=num[ls]){res+=Wq(ls,l,mid,k);Wpushup(rt);return res;}res+=sum[ls]+Wq(rs,mid+1,r,k-num[ls]);Wupd(ls,l,mid,-1);Wpushup(rt);return res;}short main(){freopen("a.in","r",stdin),freopen("a.out","w",stdout);n=qr,m=qr;fo(i,1,n) c[i]=qr;fo(i,1,m) b[i].a=qr,b[i].b=qr,b[i].b=(b[i].b==-1?1e12:b[i].b);sort(b+1,b+1+m,cmp);fo(i,1,m){numb[i]=numb[i-1]+b[i].b;sumcos[i]=sumcos[i-1]+1ll*b[i].a*b[i].b;if(b[i].b==1e12){m=i;break;}}fo(i,1,n) Wupd(1,1,m,1),ans+=Wq(1,1,m,c[i]);printf("%lld\n",ans);return Ratio;}
}
int main(){return Wisadel::main();}

B. 小W与制胡串谜题

签,但想复杂了所以没签上。

一个排序就解决了,不过看到第二个样例发现直接比较不太行,像 bcabc,于是我就想到了如果存在前缀关系,判断长串后缀与短串的大小,然后由于不清楚 cmp 的比较关系返回值导致搞错了只有 55pts。实际上比较 \(a+b\lt b+a\) 就行了。

点击查看代码
#include<bits/stdc++.h>
#define fo(x,y,z) for(register int (x)((y));(x)<=(z);(x)++)
#define fu(x,y,z) for(register int (x)((y));(x)>=(z);(x)--)
using namespace std;
typedef long long ll;
#define lx int
inline lx qr()
{char ch=getchar();lx x=0,f=1;for(;ch<'0'||ch>'9';ch=getchar()) if(ch=='-') f=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<3)+(x<<1)+(ch^48);return x*f;
}
#undef lx
#define qr qr()
const int Ratio=0;
const int N=5e5+5;
const int mod=1e9+9;
int n;
string s[N];
bool cmp(string s1,string s2){return string(s1+s2)<string(s2+s1);}
namespace Wisadel
{short main(){freopen("a.in","r",stdin),freopen("a.out","w",stdout);n=qr;fo(i,1,n) cin>>s[i];sort(s+1,s+1+n,cmp);fo(i,1,n) cout<<s[i];return Ratio;}
}
int main(){return Wisadel::main();}

C. 小W与屠龙游戏

由于之前学过博弈论所以看出来了是 Nim Game 的变种,因为当时不会线性基就没看 Nim-k 的实现,后面补上。

突然的考试,有点慌其实。

此 W 非彼 W,差评

打到 1.5h 左右觉得 200pts 是大众分,于是开始被 T3 折磨,想到结束也没想出点啥,感觉学东西学一半就很难受。

看来大家都挂了不少分,致敬大黄首次不挂分反向挂分模拟赛!


完结撒花~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/798016.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多线程六-线程通信之Condition使用与设计猜想

海上生明月,天涯共此时。愿大家在这个团圆的夜晚,收获满满的温馨和喜悦,团圆美满,中秋快乐!使用示例 ConditionDemoAwait :开始之后加锁,阻塞并释放锁 package com.caozz.demo5.concurrent;import java.util.concurrent.locks.Condition; import java.util.concurrent.lo…

[GXYCTF2019]BabyUpload 1

打开靶机,上传文件抓包 后缀不能带ph,大小写也无法绕过,意味着phtml后缀也无法上传对后缀只过滤ph,我们转变思路上传图片马,用.htaccess使图片马以php格式打开 上传图片马上传失败,试一试过滤了哪些字符 文件内容过滤了<?我们尝试另一种写法后成功上传<script lan…

DeepinV23安装Dotnet8

步骤: 第一步: 1.下载压缩包,2安装配置 第二步: 2准备工作:激活ROOT账号,重置密码解压目录:/home/bizuser/soft/dotnet/dotnet81.下载 直接🔗 https://download.visualstudio.microsoft.com/download/pr/14951030-5b4e-45ce-af0b-3d4aa613a70b/25acaeb050bbba6950a559…

高级Java程序员必备的技术点:你准备好了吗?

在Java编程的世界里,成为一名高级程序员不仅需要深厚的基础知识,还需要掌握一系列高级技术和最佳实践。这些技术点是通向技术专家之路的敲门砖,也是应对复杂项目挑战的利器。本文将探讨高级Java程序员必备的技术点,帮助你自我提升,迈向更高的职业巅峰。深入理解Java虚拟机…

无限debugger的解决----(一)

在尝试打开控制台时,遇到了这个问题,页面陷入无限debuuger。尝试(一)在debugger这一行点击Never pause here 也就是从不在此处暂停,但之后发现没用,关掉一个又出现一个。之后我又尝试了设置进入断点的条件,这个可以在调试过程中,期望某个变量的值大于某个具体的值的时候才停下来…

【USB3.0协议学习】Topic3三种Reset Events分析

USB3.0中的三种Reset Events 1. PowerOn Reset PowerOn Reset被用来代指上电复位,当一个device接入到root hub或者外置hub的时候,该device检测到Vbus信号从无效变为有效,会自动执行复位。(注意,self powered device不通过Vbus供电,但是Vbus发生转变的时候它同样会执行复位…

02策略模式

定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法可以独立于使用它的客户而变化1. 案例:营业员根据客户所购买商品的单价和数量,根据不同活动向客户收费**- 正常原价收费 - 八折收费 - 满300返100 2. 策略模式结构- 抽象策略类(Stategy):声明算法…

三、浅层神经网络

1、神经网络概览什么是神经网络?如下图:神经网络的结构与逻辑回归类似,只是神经网络的层数比逻辑回归多一层,多出来的中间那层称为隐藏层或中间层。从计算上来看,神经网络的正向传播和反向传播比logistic回归多了一次重复的计算。引入新的标签:方括号上标[i]表示当前所处…

windows安装rabbitmq后出现:Error::plugins_dir_does not_exist

安装的路径正常,没有空格中文字符啥的。 环境变量也配置了。原因是:安装otp_win64_24.1.7时没有选择以管理员身份运行。重新卸载安装即可

Zero-Shot,One-Shot,Few-Shot,In-Context Learning

Zero-Shot,One-Shot,Few-Shot,In-Context Learning https://blog.csdn.net/weixin_44212848/article/details/139902394In-Context Learning定义:In-context learning是一种在不显式微调模型权重的情况下,通过给模型提供相关的上下文信息(例如提示或样本)来实现模型性能…

GoLand 相关设置

GoLand 相关设置 自动导包设置

AutoCAD C# 判断多边形与点的位置关系

书上说,射线法和叉乘法感觉都不完整 下面我分享我写的基于AutoCAD BREP算法var ed = acApp.Application.DocumentManager.MdiActiveDocument.Editor;var peo = new PromptEntityOptions("Select a PolyLine : ");peo.SetRejectMessage("Only PolyLine");…