当前位置: 首页 > news >正文

携程笔试 2025.3.13

1.诗

第一行1个字,之后每行字数增加1,输出每行第一列字符。

#include <bits/stdc++.h>
using namespace std;
string s,ans;
int main() {
    int d,idx;
    cin>>s;
    idx=1;
    d=idx;
    for(int i=0;i<s.size();i++) {
        while(d) {
            if(d==idx) {
                ans+=s[i];
            }
            d--;
            i++;
        }
        idx++;
        d=idx;
        i--;
    }
    cout<<ans;
    return 0;
}

2.数组染色

数组排序,当前值+数组长度,然后去掉相同值完后循环。

#include <bits/stdc++.h>
using namespace std;
int T,n;
long long ans;
int main() {
    cin>>T;
    while(T--) {
        cin>>n;
        vector<int> v(n),s(n+1);
        for(int i=0;i<n;i++) cin>>v[i];
        sort(v.begin(),v.end());
        ans=0;
        for(int i=0;i<n;i++) {
            int t=v[i],j=i;
            while(j<n && v[i]==v[j]) j++;
            if(t+n-i>ans) ans=t+n-i;  
            i=j-1;
        }
        cout<<ans<<endl;
    }
    return 0;
}

3.数组询问

求出每个数的所有的质因数然后前缀和,计算缺少长度为k的子数组最大值

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int n,k,x;
long long a[N],s[N],ans;
bool is_prime(int x) {
    if(x==1) return 0;
    if(x==2) return 1;
    for(int i=2;i<=x/i;i++) {
        if(x%i==0) return 0;
    }
    return 1;
}
int calc(int x){
    int cnt=0;
    if(x==1) return cnt;
    for(int i=1;i<=x/i;i++) {
        if(x%i==0) {
            if(is_prime(i)) cnt++;
            if(x/i!=i) {
                if(is_prime(x/i)) cnt++;
            }
        }
    }
    return cnt;
}
int main() {
    cin>>n>>k;
    for(int i=0;i<n;i++) 
    {
        cin>>x;
        a[i]=calc(x);
    }
    for(int i=1;i<=n;i++) {
        s[i]=s[i-1]+a[i-1];
    }

    for(int i=k;i<=n;i++) {
        int t=s[i]-s[i-k];
        ans=max(ans,s[n]-t);
    }
    cout<<ans;

    return 0;
}

4.偶数路径

通过52.3%,用一个集合记录当前所包含的所有点,如果这些点的gcd为偶数就答案增加1,同时用一个大集合S把所有这个合法集合加入到里面。

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int gcd(int a,int b) {
    return b?gcd(b,a%b):a;
}
int n,a[N],ans;
int h[N],e[2*N],ne[2*N],idx;
bool st[N];
set<set<int> > S;
void dfs(int u,int fa,int curgcd,set<int>& se) {
    if(curgcd%2==0 && !S.count(se)) {
        ans++;
        S.insert(se);
        // for(auto x:se) cout<<x<<" ";
        // puts("");
    }
    for(int i=h[u];~i;i=ne[i]) {
        int j=e[i];
        if(j!=fa) {
            int tt=gcd(curgcd,a[j]);
            if(tt%2) continue;
            auto ST=se;
            ST.insert(j);
            dfs(j,u,tt,ST);
        }
    }
}
void add(int a,int b) {
    e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int main() {
    memset(h,-1,sizeof(h));
    cin>>n;
    for(int i=1;i<=n;i++) {
        cin>>a[i];
    }
    int aa,b;
    for(int i=0;i<n-1;i++) {
        cin>>aa>>b;
        add(aa,b);
        add(b,aa);
    }
    for(int i=1;i<=n;i++) {
        set<int> se;
        se.insert(i);
        dfs(i,-1,a[i],se);
    }
    cout<<ans;
    return 0;
}

相关文章:

  • docker的anythingllm和open-webui压缩包分享(国内镜像拉取,百度云压缩包分享)
  • 交互式可视化进阶(Plotly Dash构建疫情仪表盘)
  • Centos7系统基于docker下载ollama部署Deepseek-r1(GPU版不踩坑)
  • 【C++ STL】 容器详解:queue 学习
  • 从头开始开发基于虹软SDK的人脸识别考勤系统(python+RTSP开源)(五)完整源码已上传!
  • 基于MySQL有用户管理的音乐播放器
  • Java 虚拟机优化指南:CMS垃圾回收器参数调优与性能监控工具详解
  • obeaver 连接oracle 库 模式乱码
  • XXE-labs靶场通关攻略
  • 【菜鸟飞】通过vsCode用python访问公网deepseek-r1等模型(Tocken模式)
  • cs224w课程学习笔记-第7课
  • Harmony OS:用户文件操作——图片选择与渲染使用
  • Docker根目录迁移与滚动日志设置
  • leetcode日记(96)有序链表转换二叉搜索树
  • 记录致远OA服务器硬盘升级过程
  • Android第二次面试总结(项目拷打理论篇)
  • Gone v2 中 Gone-Gin 性能测试报告
  • kotlin与MVVM的结合使用总结(二)
  • hackme靶机通关攻略
  • Java数组详解(一)
  • 首次带人形机器人走科技节红毯,傅利叶顾捷:机器人行业没包袱,很多事都能从零开始
  • 朝鲜称将在各领域采取反制措施,应对美国敌对挑衅
  • 上海国际碳中和博览会下月举办,首次打造民营经济专区
  • “AD365特应性皮炎疾病教育项目”启动,助力提升认知与规范诊疗
  • 曾犯强奸罪教师出狱后办教培机构?柳州鱼峰区教育局:正核实
  • 党建评:对违规宴饮等问题要坚决露头就打