首页 > 其他分享 >2024暑假集训测试13

2024暑假集训测试13

时间:2024-07-27 17:07:09浏览次数:10  
标签:13 int void Tp 2024 ans inline 集训 define

前言

image

从来没见过交互题,T1 狂 CE 不止心态炸了,后面的题也没打好,T2、T3 简单题都不会了,所以为啥 T4 又放黑题。

T1 大众点评

难点主要在交互,赛时琢磨了半场比赛终于搞明白是啥玩意儿了,可以将给定库当成压缩的一部分代码,可以调用里面的函数,输入输出已在里面,因为里面有主函数了,本地不能再打主函数了。

两两配对,大的加入 \(\max\) 集合,小的加入 \(\min\) 集合,再分别扫,共需要 \(n+\dfrac{n}{2}\) 次。

点击查看代码
#include "ramen.h"
#include<bits/stdc++.h>
#define ll long long 
#define endl '\n'
#define sort stable_sort
using namespace std;
const int N=1e5+10;
template<typename Tp> inline void read(Tp&x)
{
    x=0;register bool z=true;
    register char c=getchar();
    for(;c<'0'||c>'9';c=getchar()) if(c=='-') z=0;
    for(;'0'<=c&&c<='9';c=getchar()) x=(x<<1)+(x<<3)+(c^48);
    x=(z?x:~x+1);
}
template<typename Tp> inline void wt(Tp x)
{if(x>9)wt(x/10);putchar((x%10)+'0');}
template<typename Tp> inline void write(Tp x)
{if(x<0)putchar('-'),x=~x+1;wt(x);}
void Ramen(int N)
{
    if(N==1) {Answer(0,0); return ;}
    vector<int>mx,mi;
    int maxx=0,minn=0;
    for(int i=1;i<=N-1;i+=2)
    {
        if(Compare(i-1,i)==1)
        {
            mx.push_back(i-1);
            mi.push_back(i);
            maxx=i-1,minn=i;
        }
        else 
        {
            mx.push_back(i);
            mi.push_back(i-1);
            maxx=i,minn=i-1;
        }
    }
    for(int i:mx) if(i!=maxx) if(Compare(i,maxx)==1) maxx=i;
    for(int i:mi) if(i!=minn) if(Compare(i,minn)==-1) minn=i;
    if(!((N-1)&1)) 
    {
        if(Compare(N-1,maxx)==1) maxx=N-1;
        else if(Compare(N-1,minn)==-1) minn=N-1;
    }
    Answer(minn,maxx);
}

T2 录取查询

赛时心态崩了这么简单的题都没想出来。

结论就是需满足区间单调不下降且 \(s_l+1\sim s_r-1\) 之间的字符集在这个区间出现次数等于全局出现次数,线段树维护即可,复杂度 \(O(26n\log_n)\)。

点击查看代码
#include<bits/stdc++.h>
#define ll long long 
#define endl '\n'
#define sort stable_sort
#define f t[p]
#define ls p<<1
#define rs p<<1|1
using namespace std;
const int N=1e5+10;
template<typename Tp> inline void read(Tp&x)
{
    x=0;register bool z=true;
    register char c=getchar();
    for(;c<'0'||c>'9';c=getchar()) if(c=='-') z=0;
    for(;'0'<=c&&c<='9';c=getchar()) x=(x<<1)+(x<<3)+(c^48);
    x=(z?x:~x+1);
}
template<typename Tp> inline void wt(Tp x)
{if(x>9)wt(x/10);putchar((x%10)+'0');}
template<typename Tp> inline void write(Tp x)
{if(x<0)putchar('-'),x=~x+1;wt(x);}
int n,m,cnt[N];
char s[N],tt;
struct aa 
{
    int l,r,val[30],pre,suf;
    bool flag;
}t[N<<2];
void pushup(int p)
{
    for(int i=0;i<=25;i++)
        f.val[i]=t[ls].val[i]+t[rs].val[i];
    f.flag=(t[ls].flag&&t[rs].flag&&t[rs].pre>=t[ls].suf);
    f.pre=t[ls].pre;
    f.suf=t[rs].suf;
}
void build(int p,int l,int r)
{
    f.l=l,f.r=r;
    if(l==r)
    {
        f.val[s[l]-'a']++;
        f.pre=f.suf=s[l]-'a';
        f.flag=1;
        return ;
    }
    int mid=(l+r)>>1;
    build(ls,l,mid),build(rs,mid+1,r);
    pushup(p);
}
void change(int p,int x,int d)
{
    if(f.l==f.r)
    {
        f.val[s[x]-'a']+=d;
        f.pre=f.suf=s[x]-'a';
        f.flag=1;
        return ;
    }
    int mid=(f.l+f.r)>>1;
    if(x<=mid) change(ls,x,d);
    else change(rs,x,d);
    pushup(p);
}
aa ask(int p,int l,int r)
{
    if(l<=f.l&&r>=f.r) return f;
    int mid=(f.l+f.r)>>1;
    aa ans;
    if(r<=mid) ans=ask(ls,l,r);
    else if(l>mid) ans=ask(rs,l,r);
    else if(l<=mid&&r>mid)
    {
        aa x=ask(ls,l,r),y=ask(rs,l,r);
        for(int i=0;i<=25;i++)
            ans.val[i]=x.val[i]+y.val[i];
        ans.flag=(x.flag&&y.flag&&y.pre>=x.suf);
        ans.pre=x.pre,ans.suf=y.suf;
    }
    return ans;
}
signed main()
{
    read(n); cin>>(s+1);
    for(int i=1;i<=n;i++) cnt[s[i]-'a']++;
    build(1,1,n);
    read(m);
    for(int i=1,op,x,y;i<=m;i++)
    {
        read(op),read(x);
        if(op==1)
        {
            cin>>tt;
            cnt[s[x]-'a']--; change(1,x,-1);
            s[x]=tt;
            cnt[s[x]-'a']++; change(1,x,1);
        }
        else
        {
            read(y);
            aa ans=ask(1,x,y);
            bool flag=ans.flag;
            if(flag) for(int i=s[x]-'a'+1;i<=s[y]-'a'-1;i++)
                if(ans.val[i]!=cnt[i])
                {
                    flag=0;
                    break;
                }
            puts(flag?"Yes":"No");
        }
    }
}

T3 精准打击

是道紫但实际没那么难,比较平凡的贪心,因为 \(d\) 很小可以暴力枚举,赛时根本没时间想。

枚举深度 \(d\),即一棵深度为 \(d\) 的子树,贪心的角度一定是从大往小拿,将 \(d-1\) 层能拿的都拿了接着向下递归即可,最后取最小值。

点击查看代码
#include<bits/stdc++.h>
#define ll long long 
#define endl '\n'
#define sort stable_sort
#define f t[p]
#define ls p<<1
#define rs p<<1|1
using namespace std;
const int N=1e5+10;
template<typename Tp> inline void read(Tp&x)
{
    x=0;register bool z=true;
    register char c=getchar();
    for(;c<'0'||c>'9';c=getchar()) if(c=='-') z=0;
    for(;'0'<=c&&c<='9';c=getchar()) x=(x<<1)+(x<<3)+(c^48);
    x=(z?x:~x+1);
}
template<typename Tp> inline void wt(Tp x)
{if(x>9)wt(x/10);putchar((x%10)+'0');}
template<typename Tp> inline void write(Tp x)
{if(x<0)putchar('-'),x=~x+1;wt(x);}
ll T,d,k,x,a[N];
signed main()
{
    read(T);
    while(T--)
    {
        read(d),read(k),read(x);
        a[0]=1;
        for(int i=1;i<=d;i++) a[i]=a[i-1]*k+1;
        ll ans=1e18;
        for(int i=d;i>=0;i--)
        {
            if(a[i]>=x)
            {
                ll sum=!(i==d);
                for(ll y=a[i]-x,j=i-1;y>0&&j>=0;j--)
                {
                    sum+=y/a[j];
                    y%=a[j];
                }
                ans=min(ans,sum);
            }
            else break;
        }
        write(ans),puts("");
    }
}

T4 你画我猜

总结

有点难受心态炸了,就纯心态问题了,这次和身体没关系,硬磕交互了,但是不去磕除了能把 T2 切掉 T3 好好想想还能干什么呢,交互早晚要学,挂一次印象更深刻嘛,命中注定吧。

心态需要磨炼但还是有点难受,至少最近几次没挂这么狠过,但后面的甚至赛场上要是还这样怎么办呢。

标签:13,int,void,Tp,2024,ans,inline,集训,define
From: https://www.cnblogs.com/Charlieljk/p/18327165

相关文章

  • 怎么判断电脑屏幕被监控?电脑被监控可以看到什么?丨2024超强科普!
    各位同仁,是不是正在怀疑自己的电脑被监控了?那么又该怎么盘点自己的电脑是不是正在被监控,假如真的被监控,老板又会看到什么内容呢?别急,且听我慢慢道来!一、电脑被监控的表现黑屏闪烁当电脑被监控时,屏幕可能会出现短暂的黑屏或频繁闪烁。这种情况多出现在电脑启动或打开特定程......
  • 运行 Github Action 测试 Docker 镜像时退出代码 137
    我正在学习Testdriven.io:使用FastAPI和Docker进行测试驱动开发课程,目前正在学习持续集成部分。在本节中,您将使用github操作来构建docker映像并运行测试和linting等。在流程的测试Docker映像步骤中,当尝试进行pytest时,我收到以下错误:错误:进程已完成并退出代码......
  • AP2813宽输入电压5-80V 双路降压恒流LED芯片_外围简单内置功率管驱动IC
    产品描述AP2813是一款双路降压恒流驱动器,高效率、外围简单、内置功率管,适用于5-80V输入的高精度降压LED恒流驱动芯片。内置功率管输出最大功率可达12W,最大电流1.2A。AP2813一路直亮,另外一路通过MODE1切换全亮,爆闪。AP2813工作频率固定在150KHZ左右,同时内置抖频......
  • P2024 [NOI2001] 食物链
    原题链接题解关系具有矢量特性,因此可以带权并查集维护code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;intfa[50006];intval[50006];intfinds(intnow){if(now==fa[now])returnnow;inttem=fa[now];fa[now]=finds(fa[now])......
  • YOLOv8-seg——基于自定义数据集训练图像分割模型
    目录一、制作分割数据集1标注2json文件转txt文件3数据集划分二、训练图像分割模型1环境搭建2训练网络3预测三、训练结果解读一.制作分割数据集1标注运用labelme软件进行手动标注,得到数据的json格式标注文件。*注意区别于labelimg软件,labelimg软件对每个......
  • (超详细)备赛笔记2024年全国职业院校(中职组)技能大赛(ZZ052大数据应用与服务)第二套试题
    2024年职业院校中职组ZZ052大数据应用与服务赛项赛题第02套【子任务一:基础环境准备】模块一:平台搭建与运维(一)任务一:大数据平台搭建1.子任务一:基础环境准备(1)对三台环境更新主机名,配置hosts文件,以node01作为时钟源并进行时间同步;#分别在不同主机上面执......
  • 随笔之甲辰年(2024)
    前言之所以用天干地支,大概是因为最近追《一人之下》,里面提到了“甲申之乱”。自己又年近不惑,突然感慨六十年一个甲子,俗话说“三十年河东,三十年河西”,也刚好六十年。估摸着我大概也许六十岁的时候,也会喜欢上这种颇具中国传统色彩的叫法,仅此而已辛未月(7月)壬辰日(27日)农历六月......
  • 暑假集训csp提高模拟9
    赛时rank15T10,T2100,T30,T40T1,T3都会做,然后都挂了。恼了,挂200,不愧是我,唐T1大众点评「JOISC2014Day1」拉面比较简单的交互。考虑选择相邻的两组,小的单独存一个,大的单独存一个,是比较200次再将大的互相比较,小的互相比较,各200次点此查看代码#include<bits/stdc++.......
  • 2024AGI面试官 常问的问题以及答案(附最新的AI大模型算法面试大厂必考100题 )
    前言在这个人工智能飞速发展的时代,AI大模型已经成为各行各业创新与变革的重要驱动力。从自动驾驶、医疗诊断到金融分析,AI大模型的应用场景日益广泛,为我们的生活带来了前所未有的便捷。作为一名程序员,了解并掌握AI大模型的相关知识,无疑将大大提升我们的竞争力。在这个充满......
  • 暑假集训CSP提高模拟9
    暑假集训CSP提高模拟9组题人:@Delov\(T1\)P161.大众点评\(0pts\)原题:JOISC2014Day1ラーメンの食べ比べ。思路来自1037-CSP2021提高级第一轮第5题。\(2n\)次比较是好做的。不难发现在这些比较是有多余的,考虑减少多余比较。将\(n\)座拉面馆两两......