首页 > 其他分享 >(GPLT)上海理工大学校内选拔赛(重现赛)

(GPLT)上海理工大学校内选拔赛(重现赛)

时间:2024-01-31 17:22:27浏览次数:30  
标签:10 int long while 上海理工大学 solve 选拔赛 GPLT left

题目链接

A.

记录最大值和个数,和次大值
遍历数组,不是最大值,输出该数与最大值的和
是最大值,则讨论最大值个数,若只有一个,输出该数与次大值的和,否则输出最大值的两倍

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=1e5+10;

void solve() {
    int n;cin>>n;
    vector<int>a(n+1);
    int ma=-1,cnt_ma=0,tm=-1;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        if(a[i]>ma){
            tm=ma;
            ma=a[i];
            cnt_ma=1;
        }else if(a[i]==ma){
            cnt_ma++;
        }else if(a[i]>tm){
         //   cout<<"tm="<<a[i]<<'\n';
            tm=a[i];
        }
    }
   // cout<<ma<<' '<<tm;
    for(int i=1;i<=n;i++){
        if(a[i]<ma){
            cout<<a[i]+ma;
        }else if(a[i]==ma){
            if(cnt_ma>1){
                cout<<2*ma;
            }else cout<<a[i]+tm;
        }
        if(i!=n)cout<<' ';
    }
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    //cin>>left;
    while(left--){
        solve();
    }
}

B.

快速幂即可

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=1e5+10;

int ksm(int a,int b,int p){
    int ans=1;
    while(b){
        if(b&1)ans=(ans*a)%p;
        a=(a*a)%p;
        b/=2;
    }
    return ans%p;
}
void solve() {
    int n;cin>>n;
    cout<<ksm(n,n,n+2);
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    //cin>>left;
    while(left--){
        solve();
    }
}

C.

从字符串里处理出字符串并计数,用map实现

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=1e5+10;

void solve() {
    string s;getline(cin,s);
    //cout<<s;
    map<string,int>mp;
    string tmp="";
    int sum=0;
    for(int i=0;i<s.size();i++){
        if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')tmp+=s[i];
        else if(s[i]>='0'&&s[i]<='9')sum=sum*10+(s[i]-'0');
        else if(s[i]==' '){
            if(sum){
                mp[tmp]+=sum;
                sum=0;
                tmp="";
            }
        }
        if(i==s.size()-1){
            mp[tmp]+=sum;
        }
    }
    int tt;cin>>tt;
    string t;
    while(tt--){
        cin>>t;
        cout<<mp[t]<<'\n';
    }
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    //cin>>left;
    while(left--){
        solve();
    }
}

D.

K数列就是进制的定义
类比二进制串,想象一个k进制串
把n先转成二进制串,再转为k进制串即可

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=1e5+10;

const int mod=1e9+7;


void solve() {
    int n,k;cin>>n>>k;
    int ans=0,t=1;
    while(n){
        if(n&1)ans=(ans+t)%mod;
        t=(t*k)%mod;
        n/=2;
    }
    cout<<ans;
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    //cin>>left;
    while(left--){
        solve();
    }
}

E.

bfs

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=300+10;

int g[N][N];
int n,m,k,a,b,c,d;
int vis1[N][N],vis2[N][N];
struct node{
    int x,y,dep;
};
int dx[10]={-2,-2,-1,-1,2,2,1,1};
int dy[10]={1,-1,2,-2,1,-1,2,-2};
int cx[10]={-1,-1,0,0,1,1,0,0};
int cy[10]={0,0,1,-1,0,0,1,-1};
int bfs1(){
    queue<node>q;
    while(q.size())q.pop();
    if(a==c&&b==d)return 0;
    q.push({a,b,0});
    vis1[a][b]=1;
    while(q.size()){
        auto t=q.front();q.pop();
        for(int i=0;i<8;i++){
            int xx=t.x+dx[i],yy=t.y+dy[i];
            if(xx>=1&&xx<=n&&yy>=1&&yy<=m){
                if(vis1[xx][yy]||g[xx][yy])continue;
                vis1[xx][yy]=1;
                if(xx==c&&yy==d)return t.dep+1;
                q.push({xx,yy,t.dep+1});
            }
        }
    }
    return -1;
}
int bfs2(){
    queue<node>q;
    while(q.size())q.pop();
    if(a==c&&b==d)return 0;
    q.push({a,b,0});
    vis2[a][b]=1;
    while(q.size()){
        auto t=q.front();q.pop();
        for(int i=0;i<8;i++){
            int xx=t.x+dx[i],yy=t.y+dy[i];
            int tx=t.x+cx[i],ty=t.y+cy[i];
            if(xx<1||xx>n||yy<1||yy>m)continue;
            if(g[xx][yy]||g[tx][ty])continue;
            if(vis2[xx][yy])continue;
            vis2[xx][yy]=1;
            if(xx==c&&yy==d)return t.dep+1;
            q.push({xx,yy,t.dep+1});
        }
    }
    return -1;
}
void solve() {
    for(int i=1;i<N;i++){
        for(int j=1;j<N;j++){
            g[i][j]=0;vis1[i][j]=0;vis2[i][j]=0;
        }
    }
    cin>>n>>m>>k>>a>>b>>c>>d;
    while(k--){
        int x,y;cin>>x>>y;
        g[x][y]=1;
    }
    cout<<bfs1()<<' '<<bfs2()<<'\n';
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    cin>>left;
    while(left--){
        solve();
    }
}

F.

最大配最小

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=1e5+10;


void solve() {
    int n;cin>>n;
    vector<int>a(n+1),b(n+1);
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++)cin>>b[i];
    sort(a.begin()+1,a.end());
    sort(b.begin()+1,b.end());
    int ans=0;
    for(int i=1;i<=n;i++){
        ans+=a[i]*b[n-i+1];
    }
    cout<<ans<<'\n';
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    cin>>left;
    while(left--){
        solve();
    }
}

J.

dij板子

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N=1e5+10;

vector<pair<int,int>>g[N];
#define inf 0x3f3f3f3f3f3f3f3f
int dist[N];
bool st[N];
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> q;
void dij(){
    memset(dist,inf,sizeof(dist));
    dist[1]=0;
    q.push({0,1});
    while(q.size()){
        auto k=q.top();q.pop();
        int ver=k.second,distance=k.first;
        if(st[ver])continue;
        st[ver]=true;
        for(int i=0;i<g[ver].size();i++){
            int j=g[ver][i].first;
            if(dist[j]>distance+g[ver][i].second){
                dist[j]=distance+g[ver][i].second;
                q.push({dist[j],j});
            }
        }
    }
}
void solve() {
    int n,m;cin>>n>>m;
    for(int i=1,v,w,d;i<=m;i++){
        cin>>v>>w>>d;
        g[v].push_back({w,d});
        g[w].push_back({v,d});
    }
    dij();
    int tt;cin>>tt;
    while(tt--){
        int s,t;cin>>s>>t;
        cout<<dist[s]+dist[t]<<'\n';
    }
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int left=1;
    //cin>>left;
    while(left--){
        solve();
    }
}

标签:10,int,long,while,上海理工大学,solve,选拔赛,GPLT,left
From: https://www.cnblogs.com/wwww-/p/17999727

相关文章

  • 软件测试|华新学院在 2022 年全国大学生“火焰杯”软件测试高校就业选拔赛取得佳绩
    近期,华新学院信工学院在全国大学生“火焰杯”软件测试高校就业选拔赛中取得了杰出的成绩。该比赛共有全国146所高校的2180名学生参加,而我校共派出9名学生代表参赛。令人骄傲的是,其中的何奉莲、陆钇霖和徐忠豪三位同学成功闯过初赛,晋级总决赛。何奉莲同学在全国比赛中获得了令......
  • 计算机科学系举办“火焰杯”软件测试开发选拔赛颁奖仪式
    2023年3月9日,南海楼124会议室举行了第三届“火焰杯”软件测试开发选拔赛颁奖仪式。出席此次仪式的有计算机科学系系主任龙锦益教授、指导老师孙玉霞副教授、测吧科技有限公司的总监王雪冬,以及获奖的学生。仪式伊始,龙锦益教授热烈欢迎了王雪冬总监的到来,并对获奖学生的出色表......
  • 软件测试|第二届、第三届<火焰杯>软件测试开发选拔赛河北赛区颁奖典礼落幕
    3月25日下午,河北工程技术学院图书馆报告厅隆重举行了第二届和第三届“火焰杯”软件测试开发选拔赛河北赛区的颁奖典礼。颁奖典礼迎来了一众重要嘉宾,包括河北工程技术学院副校长田光、教学科研部部长吴书博、对外合作部部长王俊昆、软件学院院长赵冬梅,以及来自测吧(北京)科技有限公......
  • 第四届“火焰杯”软件测试高校就业选拔赛颁奖典礼
    第四届“火焰杯”软件测试高校就业选拔赛颁奖典礼于10月10日下午在9A206举行,该比赛由软件测试就业联盟主办,吸引了来自测吧(北京)科技有限公司的项目总监王雪冬、计算机科学与技术学院副院长刘文果以及计算机科学与技术学院软件工程系主任张福勇等重要嘉宾前来颁奖。在本次比赛中,我......
  • 我院五名学子获第四届“火焰杯”软件测试开发选拔赛全国奖项
    第四届“火焰杯”软件测试开发选拔赛于9月20日在精工园1号楼隆重举行,测吧(北京)科技有限公司的项目总监王雪冬莅临我院,为获奖学生颁发奖项。本届比赛吸引了全国28个省份的158所高校的3221名学生踊跃参赛。我院软件工程系的2020级学生,包括谢奇江、林颂扬、陈艺梅、何万......
  • 我院学子在第三届“火焰杯”软件测试开发选拔赛中 取得佳绩
    近日,第三届“火焰杯”软件测试开发选拔赛圆满结束,来自我校人工智能与大数据学院的多位选手,在王雪涛老师的悉心指导下,在激烈竞争中脱颖而出,取得了卓越的成绩。特别值得一提的是,何鸿彬和贾文聪同学获得了决赛的二等奖,而王静宇同学则斩获了预选赛的三等奖。“火焰杯”软件测试高校就......
  • 人工智能学院学生在“火焰杯”软件测试开发选拔赛总决赛获奖
    2023年3月22日,第三届“火焰杯”软件测试开发选拔赛颁奖典礼在人工智能学院的D2-102机房举行,这一活动吸引了来自软件工程20级的学生以及软件测试社团的全体成员的热烈参与。颁奖典礼的特邀嘉宾是测吧(北京)科技有限公司的项目总监王雪冬,他不仅为获奖同学颁发了奖项,还为学生......
  • 计算机科学系举办“火焰杯”软件测试开发选拔赛颁奖仪式
    2023年3月9日,南海楼124会议室举行了第三届“火焰杯”软件测试开发选拔赛颁奖仪式。出席此次仪式的有计算机科学系系主任龙锦益教授、指导老师孙玉霞副教授、测吧科技有限公司的总监王雪冬,以及获奖的学生。仪式伊始,龙锦益教授热烈欢迎了王雪冬总监的到来,并对获奖学生的出色......
  • 软件测试|华新学院在 2022 年全国大学生“火焰杯”软件测试高校就业选拔赛取得佳绩
    近期,华新学院信工学院在全国大学生“火焰杯”软件测试高校就业选拔赛中取得了杰出的成绩。该比赛共有全国146所高校的2180名学生参加,而我校共派出9名学生代表参赛。令人骄傲的是,其中的何奉莲、陆钇霖和徐忠豪三位同学成功闯过初赛,晋级总决赛。何奉莲同学在全国比赛中获得了......
  • 软件测试|网安学院举办第二届“火焰杯”软件测试高校就业选拔赛颁奖典礼
    软件测试就业联盟主办的第二届“火焰杯”软件测试高校就业选拔赛颁奖典礼于11月25日下午在9A206报告厅举行,庄严隆重。网络空间安全学院首次参与了这一赛事,派出了6位同学参加,他们都成功入围了决赛。其中,19级软件工程2班的梁垧同学获得了决赛的三等奖,奖金为2000元,而其......