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

2026暑期牛客多校8题解

8fcab735f5034d4ebba113327226c025
//I
#include<bits/stdc++.h>
using namespace std;
const int maxn = 4e5 + 10;
int T, n, m;
int a[maxn];
int solve1()
{
    int res = ((a[1] + m < a[2]) ? 1 : 0);
    int now = a[1] + m;
    for (int i = 3; i <= (n << 1); i += 2)
    {
        int mn = min(a[i], a[i + 1]);
        int mx = max(a[i], a[i + 1]);        if (mn > now)
            res += 2;
        if (mn <= now && mx > now)
            res++;
        if (mx <= now)
        {
            int need = m - (now - mx) - (now - mn);
            if (need > 0)
                res++;
        }
    }
    return res;
}
int solve2()
{
    int res = ((a[1] < a[2] + m) ? 1 : 0), now = a[1];    for (int i = 3; i <= (n << 1); i += 2)
    {
        int mn = min(a[i], a[i + 1]);
        int mx = max(a[i], a[i + 1]);        if (mn > now) res += 2;
        if (mn <= now && mx > now) res += 1 + ((now - mn < m) ? 1 : 0);
        if (mx <= now)
        {
            if (now - mx < m)
                res++;
            if (m - (now - mx) > now - mn)
                res++;
        }
    }
    return res;
}
int main()
{
    cin >> T;
    while (T--)
    {
        cin >> n >> m;
        for (int i = 1; i <= (n << 1); i++)
            cin >> a[i];
        cout << solve1() << ' ' << solve2() << '\n';
    }
    return 0;
}
//G
#include<bits/stdc++.h>
using namespace std;
int a, b, c;
int main()
{
    cin >> a >> b >> c;
    int m = max(b, a + 1);
    // x1
    cout << 1;
    for (int i = 1; i <= m - 2; i++)
        cout << 0;
    cout << 1;
    for (int i = 1; i <= a; i++)
        cout << 0;
    cout << ' ';
    // y1
    for (int i = 1; i <= m; i++)
        cout << 9;
    cout << ' ';
    // x2
    cout << 1;
    for (int i = 1; i <= a + m - 1; i++)
        cout << 0;
    cout << ' ';
    // y2
    for (int i = 1; i <= m; i++)
        cout << 9;
    return 0;
}
//B
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int md=998244353;
int T,n,m,a[100010],f[100010],dp[100010],dpp[100010];
signed main(){
    ios::sync_with_stdio(0);
    cin>>T;
    while(T--){
        cin>>n>>m;
        bool fl=0;
        for(int i=0;i<=n*2+1;i++){
         f[i]=dp[i]=dpp[i]=0;
  }
        for(int i=1;i<=m;i++){
            cin>>a[i];
            if(a[i]<1||a[i]>2*n){
             fl=1;
   }
        }
        if(fl){
            cout<<0<<endl;
            continue;
        }
        for(int i=1;i<=m;i++){
            if(f[a[i]]){
             fl=1;
   }
            f[a[i]]=1;
        }
        if(fl){
            cout<<0<<endl;
            continue;
        }
        dp[0]=1;
        for(int pos=1;pos<=2*n;pos++){
            for(int i=0;i<=n;i++){
                dpp[i]=0;
            }
            for(int j=0;j<=n;j++){
                if(dp[j]==0){
                 continue;
    }
                if(!f[pos]){
                    if(2*j>=pos){
                        dpp[j]=(dpp[j]+dp[j])%md;
                    }
                }
                if(j+1<=n){
                    int nj=j+1;
                    if(2*nj>=pos){
                        dpp[nj]=(dpp[nj]+dp[j])%md;
                    }
                }
            }
            for(int i=0;i<=n;i++){
                dp[i]=dpp[i];
            }
        }
        cout<<dp[n]%md<<endl;
    }
    return 0;
}
//H
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 2e5 + 10;
const int mod = 998244353;
int T, n, x;
int a[maxn];
void write(__int128 x)
{
    if (x > 9)
        write(x 10);
    putchar(x 10 + '0');
}void solve()
{
    __int128 ans 0, t = 0;
    cin >> n >> x;
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    if (x == 1)
    {
        for (int i = 1; i <= n; i++)
            ans = (ans + a[i]) % mod;
        write(ans);
        putchar('\n');
        return ;
    }
    for (int i = 1; i <= n; i++)
    {
        t += a[i] / x;
        a[i] %= x;
    }
    sort (a 1, a + n + 1);
    for (int i = n; i >= 1; i--)
    {
        if (!a[i]) continue;
        int need = x - a[i] - 1;
        if (need <= t)
        {
            t -= need;
            a[i] 0;
        }
        else break;
    }
    for (int i = 1; i <= n; i++)
        ans = (ans + a[i]) % mod;
    write((ans + t % (x - 1)) % mod);
    putchar('\n');
    return ;
}
signed main()
{
    cin >> T;
    while (T--)
        solve();
    return 0;
}
//K
#include <bits/stdc++.h>
#define int long long 
using namespace std;
const int inf=1e17;
int T,n,a,b,k,tot,s,t,cnt,hed[100010],ver[100010],nxt[100010],edg[100010];
int dis[100010],pre[100010],incf[100010],inq[100010],cost[100010];
int pa[100010],ca[100010],pb[100010],cb[100010];
int h[100010],ansflow,anscost;
void add(int a,int b,int c,int d){
    ver[++tot]=b,nxt[tot]=hed[a],hed[a]=tot,edg[tot]=c,cost[tot]=d;
    ver[++tot]=a,nxt[tot]=hed[b],hed[b]=tot,edg[tot]=0,cost[tot]=-d;
}
bool spfa(){
    queue<int> q;
    for(int i=0;i<=cnt;i++){
        dis[i]=inf;
        inq[i]=0;
    }
    dis[s]=0;
    q.push(s);
    inq[s]=1;
    while(!q.empty()){
        int u=q.front();
        q.pop();
        inq[u]=0;
        for(int i=hed[u];i;i=nxt[i]){
            int v=ver[i];
            if(edg[i]>0&&dis[v]>dis[u]+cost[i]){
                dis[v]=dis[u]+cost[i];
                if(!inq[v]){
                    q.push(v);
                    inq[v]=1;
                }
            }
        }
    }
    for(int i=0;i<=cnt;i++){
        h[i]=(dis[i]==inf?0:dis[i]);
    }
    return dis[t]!=inf;
}
bool dijkstra(){
    priority_queue<pair<intint> > q;
    for(int i=0;i<=cnt;i++){
        dis[i]=inf;
        pre[i]=incf[i]=0;
    }
    dis[s]=0;
    incf[s]=inf;
    q.push({0,s});
    while(!q.empty()){
        int d=-q.top().first,u=q.top().second;
        q.pop();
        if(dis[u]!=d){
         continue;
  }
        for(int i=hed[u];i;i=nxt[i]){
            int v=ver[i];
            if(edg[i]>0){
                int nd=d+cost[i]+h[u]-h[v];
                if(dis[v]>nd){
                    dis[v]=nd;
                    pre[v]=i;
                    incf[v]=min(incf[u],edg[i]);
                    q.push({-nd,v});
                }
            }
        }
    }
    return dis[t]!=inf;
}
void solve(){
    cin>>n>>a>>b>>k;
    for(int i=1;i<=a;i++){
        cin>>pa[i]>>ca[i];
    }
    for(int i=1;i<=b;i++){
        cin>>pb[i]>>cb[i];
    }
    //Ain=1+(u-1)*2,out=in+1
    //Bin=a*2+(v-1)*2+1,out=in+1
    s=0,t=a*2+b*2+1;
    cnt=2*a+2*b+1,tot=1,anscost=0,ansflow=0;
    for(int i=0;i<=cnt;i++){
        hed[i]=0;
    }
    for(int u=1;u<=a;u++){
        add(u*2-1,u*2,ca[u],0);
        if(pa[u]==0){
            add(s,u*2-1,inf,0);
            continue;
        }
        add(pa[u]*2,u*2-1,inf,0);
    }
    for(int v=1;v<=b;v++){
        add(a*2+v*2-1,a*2+v*2,cb[v],0);
        if(pb[v]==0){
            add(a*2+v*2,t,inf,0);
            continue;
        }
        add(a*2+v*2,a*2+pb[v]*2-1,inf,0);
    }
    for(int i=1;i<=n;i++){
        int x,y,w;
        cin>>x>>y>>w;
        add(x*2,a*2+y*2-1,1,-w);
    }
 if(k==0){
        cout<<0<<endl;
        return ;
    }
    if(!spfa()){
        cout<<-1<<endl;
        return;
    }
    while(ansflow<k&&dijkstra()){
     for(int i=0;i<=cnt;i++){
            if(dis[i]<inf){
                h[i]+=dis[i];
            }
        }
        int f=incf[t];
        if(f>k-ansflow){
         f=k-ansflow;
  }
        for(int i=t;i!=s;i=ver[pre[i]^1]){
            edg[pre[i]]-=f;
            edg[pre[i]^1]+=f;
        }
        ansflow+=f;
        anscost+=f*(h[t]-h[s]);
    }
    if(ansflow<k){
        cout<<-1<<endl;
        return ;
    }
    cout<<-anscost<<endl;
} 
signed main(){
    ios::sync_with_stdio(0);
    cin>>T;
    while(T--){
        solve();
    }
    return 0;
}

 

http://www.jsqmd.com/news/1387865/

相关文章:

  • Ubuntu安装全攻略:从虚拟机到双系统,新手避坑指南
  • 邹姓最晚起源时间公元前425年铁证计算
  • 软件开发中的版本回退策略与最佳实践
  • 宝塔面板开心版风险解析与服务器安全运维实践指南
  • AI客服(文本机器人)的高并发架构:从单路对话到千万级并发的工程实践
  • 外卖CPS分销系统开发多级推手收益模块搭建
  • 如何避坑?揭秘2024年扬州网站建设公司的核心服务与价值
  • 网站规划建设与管理维护课后答案揭秘,这才是初学者最该看的硬核干货指南
  • 2026年最新广州佛山轨道交通图和 广州佛山轨道交通规划图 附图
  • VLAN技术在企业网络中的应用与配置实战
  • 2024年破局之道:如何构建高转化率的在线教育网站建设平台全流程解析
  • Llama模型本地部署实战:从GGUF量化到llama.cpp与Ollama全流程详解
  • 网安最容易被低估的黄金赛道:不用死磕渗透,零基础也能高薪稳定上岸
  • 为什么你的 CI/CD 流水线需要安全左移?——DevSecOps 理念与落地路径
  • 编程中的除法运算:原理、实现与优化技巧
  • AI Agent评估实战:从RAG评估到全链路监控的工程化方法
  • 从经典口味到新品,挑几款不容易踩雷的值得买的冰淇淋有哪些? - 企业信息资讯
  • DeepSeek公众号稿读着太像AI?去i迹改稿案例拆解!
  • 没干什么怎么写周报?夸克AI免费周报神器
  • 2026年 东莞搪胶手办厂家实力解析与源头工厂精选 - 卓企推荐
  • 2026年半导体净化改造产业链价值重构:北京鸿博龙净科技有限公司的技术溢出与生态位分析 - 卓企推荐
  • 嵌入式网络开发中lwip_select函数原理、实战与性能优化指南
  • Agent 学习路线:LangGraph、RAG、MCP 到底先学哪个?
  • 数组原地轮转算法详解与性能优化
  • 村务管理系统开发实战:从需求分析到Spring Boot+Vue技术落地
  • 常见的过电流防护器件与过电压防护器件
  • 2026年无锡伺服液压站实力厂家:高精度伺服液压系统与节能液压站源头工厂解析 - 卓企推荐
  • 最近拿到一份字节AML大模型算法岗面经
  • 2026年8月公共营养师完整报考指南|证书用途、报考条件、培训流程与机构避坑攻略 - 教育行业深析
  • 零基础学网安最忌讳的5个学习习惯,90%的人全中,越学越废