首页 > 其他分享 >2024年天梯成信校赛补题

2024年天梯成信校赛补题

时间:2024-03-21 21:13:23浏览次数:26  
标签:typedef const int double long 2024 补题 校赛 define

1-1代码胜于雄辩

嘿嘿

 

L1-2收水费

思路:分类讨论

 

L1-3日期

思路:模拟

 

L1-4回文数

思路:翻转后判断是否相等

 

L1-5yihan的新函数

思路:模拟

 

L1-6二进制

思路:二进制每位最多进位1,模拟下二进制加法即可

 

L1-7大山中的学院

思路:统计每个山脉对空地的贡献

 

L1-8堆积木

思路:由于n只有1e4,可以暴力枚举出每次放的最优位置

 

L2-1买!买!买!

思路:用并查集维护岛,当遍历到的两个点已经在一个岛上说明出现了环

 

L2-2洗牌&发牌

思路:模拟每次洗牌后的顺序,(注意有些牌需要转成特殊符号

 

L2-3Gwen的小剪刀

思路:二分美观度w,那么所有美观度不小于w的边都可以选,对剩余可选的边按快乐度求最小生成树即可

查看代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e5+5,INF=0x3f3f3f3f,Mod=1e9+7,mod=998244353,M=2e5+5;
const int MAXN=1e8+5;
const double eps=1e-12;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};

struct E{
    int u,v,w,c;
    bool operator<(const E&e)const{
        return c<e.c;
    }
}g[M];
int fa[N];
int n,m,t;
int find(int x){
    if(x!=fa[x])fa[x]=find(fa[x]);
    return fa[x];
}
bool check(int x){
    for(int i=1;i<=n;++i)fa[i]=i;
    vector<E>ve;
    for(int i=0;i<m;++i){
        if(g[i].w>=x)ve.push_back(g[i]);
    }
    sort(ve.begin(),ve.end());
    int res=0;
    for(int i=0;i<ve.size();++i){
        int u=find(ve[i].u),v=find(ve[i].v);
        if(u!=v){
            fa[u]=v;
            res+=ve[i].c;
        }
    }
    t=res;
    set<int>se;
    for(int i=1;i<=n;++i){
        int u=find(i);
        se.insert(u);
    }
    if(se.size()==1)return true;
    return false;
}
void solve() {
    cin>>n>>m;
    for(int i=0;i<m;++i){
        cin>>g[i].u>>g[i].v>>g[i].w>>g[i].c;
    }
    int l=1,r=1e9,res,all;
    while(l<=r){
        int mid=l+r>>1;
        if(check(mid))res=mid,all=t,l=mid+1;
        else r=mid-1;
    }
    cout<<res<<'\n'<<all;
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int T=1;
//    cin>>t;
//    init();
    while(T--){
        solve();
    }
    return 0;
}

 

L2-4超时空之恋

思路:赛时的时候题意没搞懂,就是有三个时空的道路,且不同时空之间的同一城镇能相互传送。知道了所有道路,求1到所有点的最短路即可。然后就是求到地牢的最短时间,若到某点的最短时间不大于地牢出现在该点的最后时刻即可以该点找到地牢,对所有地牢出现时间排序即可。

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=4e6+105,INF=0x3f3f3f3f,Mod=1e9+7,mod=998244353,M=2e5+5;
const int MAXN=1e8+5;
const double eps=1e-12;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};
const int dxx[8]={-1,-1,0,1,1,1,0,-1};
const int dyy[8]={0,1,1,1,0,-1,-1,-1};

void solve() {
    int n,m,k;
    cin>>n>>m>>k;
    vector<vector<PII>>ve(3*n+5);
    for(int i=0;i<m;++i){
        int x,u,v,w;
        cin>>x>>u>>v>>w;
        ve[x*n+u].push_back({x*n+v,w});
        ve[x*n+v].push_back({x*n+u,w});
    }
    for(int i=1;i<=n;++i){
        ve[i].push_back({i+n,k});
        ve[i+n].push_back({i,k});
        ve[i].push_back({i+2*n,k});
        ve[i+2*n].push_back({i,k});
    }
    vector<int>dis(3*n+5,1e18),st(3*n+5);
    dis[1]=0;
    priority_queue<PII,vector<PII>,greater<PII>>q;
    q.push({dis[1],1});
    while(q.size()){
        auto [d,u]=q.top();
        q.pop();
        if(st[u])continue;
        st[u]=1;
        for(auto [v,w]:ve[u]){
            if(dis[v]>d+w){
                dis[v]=d+w;
                q.push({dis[v],v});
            }
        }
    }
    int t;
    cin>>t;
    vector<PII>g(t);
    for(int i=0;i<t;++i){
        cin>>g[i].first>>g[i].second;
    }
    auto cmp=[](PII a,PII b){
        return a.second<b.second;
    };
    sort(g.begin(),g.end(),cmp);
    for(int i=0;i<t-1;++i){
       auto [u,w]=g[i];
       if(dis[u]<w){
           cout<<w;
           return ;
       }else if(dis[u]<g[i+1].second){
           cout<<dis[u];
           return ;
       }
    }
    if(dis[g.back().first]!=1e18)cout<<max(dis[g.back().first],g.back().second);
    else cout<<-1;
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int T=1;
//    cin>>T;
//    init();
    while(T--){
        solve();
    }
    return 0;
}

 

L3-1计算几何的梦

思路:可以将一个数转化成质数的次方的形式,每3个相同质因子可提到根号外,对于不到3个的相同质因子对根号外没有贡献,直接消掉即可。但是枚举所有质因子的复杂度为1e6,2e4个数据会超时,枚举的质因子最大为4e4。这里考虑,若n存在不小于3个的大于4e4的相同质因子,将3个其质因子提出根号外后根号内的数一定是小于1e6的,对于1e6内可提到根号外的数在上一步枚举质因子时就已经被提出了。即枚举完4e4内的质因子后的数要么是完全立方数要么是不可提出到根号外的数

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=4e4+5,INF=0x3f3f3f3f,Mod=1e9+7,mod=998244353;
const int MAXN=1e8+5;
const double eps=1e-12;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};

vector<int>st(N),primes(N);
int idx=0;
void init(){
    for(int i=2;i<=4e4;++i){
        if(!st[i])primes[idx++]=i;
        for(int j=0;primes[j]*i<=4e4;++j){
            st[primes[j]*i]=1;
            if(i%primes[j]==0)break;
        }
    }
}
void solve() {
    int n;
    cin>>n;
    int ans=1;
    for(int i=0;i<idx;++i){
        if(primes[i]>n)break;
        int c=0;
        while(n%primes[i]==0){
            c++;
            n/=primes[i];
            if(c==3){ans*=primes[i],c=0;}
        }
    }
    int l=1,r=1e6,p=1;
    while(l<=r){
        int mid=(l+r)/2;
        if(mid*mid*mid<=n)p=mid,l=mid+1;
        else r=mid-1;
    }
    if(p*p*p==n)ans*=p;
    cout<<ans<<'\n';
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    cin>>t;
    init();
    while(t--){
        solve();
    }
    return 0;
}

标签:typedef,const,int,double,long,2024,补题,校赛,define
From: https://www.cnblogs.com/bible-/p/18088236

相关文章

  • 2024年3月21日-发射子弹
    创建组件子弹,然后挂上材质发光之后,然后给子弹加逻辑,选中自带模型角色新建图表→设置按1发射→输入从类然后选择spawnactorfromclass选择刚才设置的子弹然后点spawntransform,进行发射点设置,选择分割  把碰撞设置改成不碰撞输入self,然后输入位置,获取自身位置......
  • 20240321打卡
    第四周第一天第二天第三天第四天第五天第六天第七天所花时间1h5h3h1.5h代码量(行)212359274547博客量(篇)1111知识点了解Kotlin编写用户注册与登录功能jetpack的深入使用hilt依赖注入与kotlin协程等知识了解蓝桥杯题目练习......
  • 20240321每日一题题解
    20240321每日一题题解Problem已知\(f(x,n)=\sqrt{n+\sqrt{(n-1)+\sqrt{(n-2)+\sqrt{...+2+\sqrt{1+x}}}}}\)。计算\(f\)的值。输入\(x\)和\(n\)​。输出这个函数值,并且注意需要保留两位小数。例如,输入4.210,则应该输出3.68Solution递归?循环?说实话这道题是有一定思考......
  • Cinema 4D 2024.1(C4D2024)安装包下载及安装教程
    下载链接:https://docs.qq.com/doc/DTE5lQ2RmR2JKWk5w1.双击进行解压,点击“开始”2.选中“MaxonCINEMA4DStudio2024.1.exe”右键以管理员身份运行3.点击“前进”4.选择安装路径,点击“前进”(建议和我的安装路径保持一致)5.软件正在安装中,请耐心等待安装完成......
  • 【IEEE会议征稿】第七届计算机信息科学与应用技术国际学术会议(CISAT 2024)
    【IEEE出版】第七届计算机信息科学与应用技术国际学术会议(CISAT2024)20247th InternationalConferenceonComputerInformationScience andApplicationTechnology 第七届计算机信息科学与应用技术国际学术会议(CISAT2024)定于2024年7月12-14日在中国杭州召开,会议由浙......
  • 【EI会议征稿通知】第十届机械工程、材料和自动化技术国际会议(MMEAT 2024)
    2024年第十届机械工程、材料和自动化技术国际会议(MMEAT2024)202410th InternationalConferenceonMechanicalEngineering,MaterialsandAutomationTechnology 2024年第十届机械工程、材料和自动化技术国际会议(MMEAT2024)将于2024年06月21-23日在中国武汉举行。......
  • 学术大咖云集!电子、通信与智能科学国际会议(ECIS 2024)与您相约“星城“长沙
    电子、通信与智能科学国际会议(ECIS2024)TheInternationalConferenceonElectronics,CommunicationsandIntelligentScience2024年5月24日~27日中国·长沙www.icecis.org【会议简介】电子、通信与智能科学国际会议旨在聚集领先的科学家、研究人员和学者,共同交流和......
  • 2024.2.29校招 实习 内推 面经
    绿*泡*泡VX:neituijunsir  交流*裙,内推/实习/校招汇总表格1、校招|影石Insta3602024春季校园招聘启动(内推)校招|影石Insta3602024春季校园招聘启动(内推)2、校招|虹软科技2024届校招春招批通道开启(内推)校招|虹软科技2024届校招春招批通道开启(内推)3、校招|......
  • AI新工具(20240321) 又一个开源的Sora实现;高质量动漫风格图像的文本到图像模型;字节跳
    ✨1:Mora利用多智能体合作生成视频任务的多智能体框架Mora是一种多智能体框架,专为通用视频生成任务设计。它通过多个视觉智能体的协作,实现了在多种视频生成任务中的高质量输出,旨在复制并扩展OpenAISora的能力。以下是通俗语言总结的Mora功能以及可能的使用情景......
  • 【征稿进行时|见刊、检索快速稳定】2024年区块链、物联网与复合材料与国际学术会议 (I
    【征稿进行时|见刊、检索快速稳定】2024年区块链、物联网与复合材料与国际学术会议 (ICBITC2024)大会主题:(主题包括但不限于,更多主题请咨询会务组苏老师)区块链:区块链技术和系统分布式一致性算法和协议块链性能信息储存系统区块链可扩展性区块链分散自治组织区......