boxmoe_header_banner_img

欢迎来到DRheEheAM的blog

加载中

文章导读

Week5 Day6 | Aug. 23rd


avatar
DRheEheAM_Gary 2025年8月23日 6

S+CSP2025模拟赛8

A. 输出字符串

模拟即可

#include<bits/stdc++.h>
using namespace std;
#define intc const int
#define int long long
#define Cios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
int n,k,cnt[35];
string s;
vector<string> st[35];
int toint(char c) {
    return c-'a'+1;
}
signed main() {
    Cios;
    freopen("zigzag.in","r",stdin);
    freopen("zigzag.out","w",stdout);
    cin>>n>>k;
    for (int i=1;i<=n;i++) {
        cin>>s;
        st[toint(s[0])].push_back(s);
    }
    for (int i=1;i<=26;i++) sort(st[i].begin(),st[i].end());
    for (int i=1;i<=k;i++) {
        char c;
        cin>>c;
        cout<<st[toint(c)][cnt[toint(c)]++]<<endl;
        if (cnt[toint(c)]>=st[toint(c)].size()) cnt[toint(c)]=0;
    }
    return 0;
}
C++

B. 最优排列翻转

赛时写了一个 $O(n^3)$ 的暴力,拿了 30 分(

#include<bits/stdc++.h>
using namespace std;
#define intc const int
#define int long long
#define Cios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
intc N=5e5+10;
int n,now=-1,w,p[N];
//k->i+j-k
signed main() {
    Cios;
    freopen("reverse.in","r",stdin);
    freopen("reverse.out","w",stdout);
    cin>>n;
    for (int i=1;i<=n;i++) {
        cin>>p[i];
        w+=p[i]==i;
    }
    now=w;
    for (int i=1;i<=n;i++) {
        for (int j=i+1;j<=n;j++) {
            int wh=w;
            for (int k=i;k<=j;k++) {
                wh-=p[k]==k;
                wh+=p[k]==(i+j-k);
            }
            now=max(now,wh);
        }
    }
    cout<<now-w<<endl;
    return 0;
}
C++

C. 比赛

赛时写了一个不知道什么复杂度反正很高的暴力,然后5000都过不去……,没拿到分,但是也贴一下:

#include<bits/stdc++.h>
using namespace std;
#define intc const int
#define int long long
#define Cios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
intc N=2e5+10;
int n,m,q,fa[N];
vector<int> g[N];
struct mapp {
    int k,v;
};
vector<mapp> x[N];
void dfs(int u) {
    for (int v:g[u]) {
        if (v==fa[u]) continue;
        fa[v]=u;
        dfs(v);
    }
}
int dff(int u,int k) {
    int vl=INT_MAX;
    if (u==1) return 0;
    if (k) vl=dff(fa[u],k-1);
    for (mapp mp:x[u]) {
        vl=min(vl,dff(fa[u],k+mp.k-1)+mp.v);
    }
    return vl;
}
signed main() {
    Cios;
    freopen("match.in","r",stdin);
    freopen("match.out","w",stdout);
    cin>>n>>m>>q;
    for (int i=1;i<n;i++) {
        int u,v;
        cin>>u>>v;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    dfs(1);
    for (int i=1;i<=m;i++) {
        int xi,k,v;
        cin>>xi>>k>>v;
        x[xi].push_back({k,v});
    }
    for (int i=1;i<=q;i++) {
        int w;
        cin>>w;
        cout<<dff(w,0)<<endl;
    }
    return 0;
}
C++


评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码
DRheEheAM Blog

返回

您的消息已发送

需要反馈文章问题?点击这里...

警告
警告
警告
警告

隐私政策...

请给出具有实用,建设性的建议!
注意:若频繁发送邮件,或发送过多无意义邮件,可能会遭到临时封禁,严重者永久封禁!

警告。