8.20模拟赛题解

news2024/11/15 21:46:15

简单点评一下
整体上来看 ,A题拿满分的同学可能占一半吧 ,这个数据其实是不太理想的 ,说明同学们对于思维模拟题还是不熟练,没抓住题目要分析的本质。
B题显然是保证有解的,有解的情况下问最优解,说明翻到满足要求的方案不止一种,我们要找最优解,数据一看很小,应该很容易联想到dfs,把所有方案搜索到然后取min即可 ,可以从第一行开始处理,每个位置攻击还是不攻击,一共有2m 种选择 ,然后剩下的位置可以依据上一行的摆放来计算出是否要攻击,所以说整体时间复杂度 O ( 2 O(2 O(2m * n2 )

C题不会写正解为什么不会写暴力呢??? 什么叫暴力?
不考虑时间不考虑空间直接按题目意思去模拟,当然最好还是按自己能力做一些优化 ,
这都是得分技巧
D题全场0分
这两套题打完基本上可以观察出同学们水平还未达到普及+
训练应该侧重思维,模拟,以及对算法的掌握上。
未来不会再放这种难度的套题了 …
在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;
int T,num,ans;
string s;
int main()
{
    T = 1;
    while (T--)
    {
        cin>>s;
        num = ans = 0;
        for (auto &ch : s)
        {
            if (ch == 'A') num++;
            if (ch == 'P')
            {
                if (num > 0) num--; else ans++;
            }
        }
        ans = ans % 2 + num;
        cout<<ans<<endl;
    }
    return 0;
}

在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;
char st[29][29];
int n,m,ans,sum;
int a[29],b[29][29],map1[29][29];
void  ds(int x,int y)
{
 
    b[x][y]=!b[x][y];
    b[x-1][y]=!b[x-1][y];
    b[x+1][y]=!b[x+1][y];
    b[x][y-1]=!b[x][y-1];
    b[x][y+1]=!b[x][y+1];
    sum++;
}
void dfs(int dep)
{
 
    int f;
    if(dep>m)
   {
     sum=0;
     for(int i=1;i<=n;i++)
     for(int j=1;j<=m;j++)
     b[i][j]=map1[i][j];
     for(int i=1;i<=m;i++)
     if(a[i]==1)  ds(1,i);
     for(int i=2;i<=n;i++)
     for(int j=1;j<=m;j++)
     if(b[i-1][j]==1)   ds(i,j);
     f=1;
     for(int i=1;i<=m;i++)
     if(b[n][i]==1)  f=0;  
 
     if(f&&sum<ans)  ans=sum;
         return ;
     }
    a[dep]=0;
    dfs(dep+1);
    a[dep]=1;
    dfs(dep+1);
}
int main()
{
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    {
        cin>>st[i][j];
        if(st[i][j]=='X')  map1[i][j]=1;
        else
        map1[i][j]=0; 
    }
    ans=n*m;
    dfs(1);
    printf("%d",ans);
    return 0;
 }

在这里插入图片描述
当然这题暴力可以拿70分。。。。但是很多同学不去写

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#pragma GCC optimize(3, "Ofast", "inline")
#define fir(i, a, b) for (int i = a; i <= b; i++)

const int maxn=1e7+10;
const int MAX_INF=0x3f3f3f3f;
int a[maxn];
int k,n;
struct node 
{
    int l;
    int r;
    int val;
};
#define left (i<<1)
#define right (i<<1|1)
node seg[maxn*4];
void change_node(int i,int val){
    seg[i].val+=val;
}
void push_down(int i){
    if(seg[i].val){
        change_node(left,seg[i].val);
        change_node(right,seg[i].val);
        seg[i].val=0;
    }
}
void build(int l,int r,int i)
{
    seg[i].l=l;
    seg[i].r=r;
    if(l==r){
        seg[i].val=a[l];
        return;
    }
    int mid=(l+r)>>1;
    build(l,mid,left);
    build(mid+1,r,right);
}
void change(int l,int r,int i,int val){
    if(l<=seg[i].l&&seg[i].r<=r){
        change_node(i,val);
        return;
    }
    push_down(i);
    int mid=(seg[i].l+seg[i].r)>>1;
    if(l<=mid)
    change(l,r,left,val);
    if(r>mid)
    change(l,r,right,val);
}
int query(int x,int i){
    if(seg[i].l==seg[i].r&&seg[i].l==x)
    return seg[i].val;
    push_down(i);
    int mid=(seg[i].l+seg[i].r)>>1;
    if(x<=mid)return query(x,left);
    return query(x,right);
}
void work()
{
    int l=1,r=n+1;
    while(l<r){
        int mid=(l+r+1)>>1;
        if(query(mid,1)>mid)
        r=mid-1;
        else l=mid;
    }
    if(query(l,1)==l)puts("YES");
    else puts("NO");
}
int main()
{    

    scanf("%d%d",&k,&n);
    fir(i,1,n)scanf("%d",&a[i]);
    a[n+1]=MAX_INF;
    build(1,n+1,1);
    work();
    k--;
    while(k--)
    {
        int l,r,c;
//        cin>>l>>r>>c;
  	 	scanf("%d%d%d",&l,&r,&c);
        change(l,r,1,c);
        work();
    }
}

在这里插入图片描述

#include <bits/stdc++.h>

using namespace std;

#define all(x) (x).begin(), (x).end()
#define fi first
#define se second

typedef vector<int> VI;
typedef long long ll;
typedef pair<ll,int> pii;
// head
/**
7 11
1 2
2 3
2 4
3 4
3 7
4 5
4 6
4 7
5 6
5 7
6 7
*/

const int N = 10e5+5;
const int M = N * 2;
ll NN,MM,BB;

struct DSU {
  int fa[N];
  int *core_;

  int find(int x) {
    return (x == fa[x]) ? x : (fa[x] = find(fa[x]));
  }
  void init(int n, int *core_) {
    this->core_ = core_;
    for (int i = 0; i <= n; i++)
      fa[i] = i;
  }
  void joint(int u, int v) {
    u = find(u), v = find(v);
    if (u != v) {
      if ((core_[u] > core_[v]) || (core_[u] == core_[v] && u > v)) {
        swap(v, u);
      }
      fa[v] = u;
    }
  }
} dsu;

struct Graph {
  struct Edge {
    int to, nxt;
    Edge(int to, int nxt) : to(to), nxt(nxt) {}
    Edge() {}
  };

  int head[N], ec, n, max_deg;
  Edge e[M];

  void addEdge(int from, int to) {
    e[ec] = Edge(to, head[from]);
    head[from] = ec++;
    core_[to]++;
  }
  void init(int n) {
    ec = 0;
    this->n = n;
    for (int i = 0; i <= n; i++)
      head[i] = -1, core_[i] = 0;
  }

  int seq_[N], core_[N], bin_[N], kmax;

  void generate_core() {
    VI pos_(n, 0);
    memset(bin_, 0, sizeof(int) * n);

    max_deg = 0;
    for (int v = 0; v < n; ++v) {
      bin_[core_[v]]++;
      max_deg = max(max_deg, core_[v]);
    }

    int start = 0;
    for (int d = 0; d <= max_deg; ++d) {
      int num = bin_[d];
      bin_[d] = start;
      start += num;
    }

    for (int v = 0; v < n; ++v) {	//O(V) create p and D
      pos_[v] = bin_[core_[v]];
      seq_[pos_[v]] = v;
      bin_[core_[v]]++;
    }

    for (int d = max_deg; d >= 1; --d) {
      bin_[d] = bin_[d - 1];
    }
    bin_[0] = 0;
    bin_[max_deg + 1] = n;

    for (int i = 0; i < n; ++i) {	//O(E) delete all Nodes from D[]
      int v = seq_[i];
      for (int j = head[v]; ~j; j = e[j].nxt) {
        int u = e[j].to;
        if (core_[u] > core_[v]) {
          int du = core_[u], pu = pos_[u];
          int pw = bin_[du], w = seq_[pw];
          if (u != w) {
            pos_[u] = pw;
            seq_[pu] = w;
            pos_[w] = pu;
            seq_[pw] = u;
          }
          bin_[du]++;
          core_[u]--;
        }
      }
    }
    kmax = *std::max_element(core_, core_ + n);
  }

  VI get_kshell(int k) {
    return VI(seq_ + bin_[k], seq_ + bin_[k + 1]);
  }

  int tid_[N];
  int tn;
  VI pa, tk;

  void build_tree() {
    tn = 0;
    memset(tid_, -1, sizeof(int) * n);
    dsu.init(n, core_);
    pa.clear();
    tk.clear();

    for (int k = kmax; k >= 0; k--) {
      VI k_shell = get_kshell(k);

      set<int> kpc_pivot;
      for (auto v : k_shell) {
        for (int j = head[v]; ~j; j = e[j].nxt) {
          int nbr = e[j].to;
          int pivot = dsu.find(nbr);
          if (core_[pivot] > k) {
            kpc_pivot.insert(pivot);
          }
          if (core_[pivot] >= k) {
            dsu.joint(v, pivot);
          }
        }
      }
      for (auto v : k_shell) {
        int pivot = dsu.find(v);
        if (tid_[pivot] == -1) {
          tid_[pivot] = tn++;
          pa.push_back(-1);
          tk.push_back(core_[pivot]);
        }
        int cur_tid = tid_[pivot];
        tid_[v] = cur_tid;
      }
      for (auto v : kpc_pivot) {
        int pivot = dsu.find(v);
        int tid_ch = tid_[v], tid_pa = tid_[pivot];
        pa[tid_ch] = tid_pa;
      }
    }
  }

  void compute() {
    VI vert(tn, 0), edge(tn, 0), boun(tn, 0);
    for (int i = 0; i < n; i++) {
      int ci = core_[i];
      int lt = 0, eq = 0, gt = 0;
      for (int j = head[i]; ~j; j = e[j].nxt) {
        int nbr = e[j].to;
        int cnbr = core_[nbr];
        if (cnbr < ci) lt++;
        else if (cnbr == ci) { if (i < nbr) eq++; }
        else gt++;
      }
      int ti = tid_[i];
      vert[ti]++;
      edge[ti] += gt + eq;
      boun[ti] += lt - gt;
    }
    pii ans(1LL*(-1e18), -1);
    for (int i = 0; i < tn; i++) {
      int f = pa[i];
      if (f != -1) {
        vert[f] += vert[i];
        edge[f] += edge[i];
        boun[f] += boun[i];
      }
      ll score = MM*edge[i] - NN*vert[i] + BB*boun[i];
      if (tk[i]>0)
        ans = max(ans, {score, tk[i]});
    }
    printf("%d %lld\n", ans.second, ans.first);
  }
} g;
int main() {
  int n, m, u, v;
  while (scanf("%d%d", &n, &m) == 2) {
      scanf("%lld%lld%lld",&MM,&NN,&BB);
    g.init(n);
    for (int i = 0; i < m; i++) {
      scanf("%d%d", &u, &v);
      u--, v--;
      g.addEdge(u, v);
      g.addEdge(v, u);
    }
    g.generate_core();
    g.build_tree();
    g.compute();
  }
  return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2058652.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动力电池系统面向开发的测试——电池阻抗特性测试(下)

接动力电池系统面向开发的测试——开路电压测试&#xff08;上&#xff09;本文主要围绕BMS设计中的等效电路模型第二大动态特性参数——阻抗特性及测试内容来展开分享。 阻抗特性测试方法&#xff1a; 方案1&#xff1a;直流脉冲测试 前面在分享功率评估内容的时候&#xf…

【正点原子K210连载】第三十二章 音频FFT实验 摘自【正点原子】DNK210使用指南-CanMV版指南

第三十二章 音频FFT实验 本章将介绍CanMV下FFT的应用&#xff0c;通过将时域采集到的音频数据通过FFT为频域。通过本章的学习&#xff0c;读者将学习到CanMV下控制FFT加速器进行FFT的使用。 本章分为如下几个小节&#xff1a; 32.1 maix.FFT模块介绍 32.2 硬件设计 32.3 程序设…

How can OpenAI Gym‘s visualizations work within Docker?

题意&#xff1a;OpenAI Gym 的可视化功能如何在 Docker 中运行&#xff1f; 问题背景&#xff1a; Id like to get OpenAI Gym working with the rendered OpenGL visualizations within a docker container. 我想在 Docker 容器中让 OpenAI Gym 与渲染的 OpenGL 可视化一起…

数据通信基础

信道特性 信道带宽 W 模拟信道&#xff1a;WF max - F min &#xff08;信道最大频率减去最小频率&#xff0c;单位Hz&#xff09; 数字信道&#xff1a;数字信道是离散信道&#xff0c;带宽为信道能够达到的最大数据传输速率&#xff0c;单位bit/s 奈奎斯定理&#xff08;理…

IOy系列BL196MQTT远程IO模块智能农业灌溉水质监测

随着农业科技的进步和智能农业的发展&#xff0c;传统的灌溉和水质管理方式正逐渐被更为高效和智能的解决方案所取代。在智能农业系统中&#xff0c;水质监测作为灌溉管理的关键环节&#xff0c;对保障作物健康和提高水资源利用效率具有重要作用。 IOy系列BL196 MQTT远程IO模块…

第七届机械、控制与计算机工程国际学术会议(ICMCCE2024)

第七届机械、控制与计算机工程国际学术会议定于2024年10月25日至27日在中国杭州召开。本届会议由巢湖学院主办&#xff0c;主要围绕“机械”、“控制”与“计算机工程”等研究领域展开讨论。旨在为机械、控制与计算机工程方面的专家学者及企业发展人提供一个分享研究成果、讨论…

iML6602是一款60W立体声Class-D音频功率放大器集成电路

音频放大器是在产生声音的输出元件上重建输入的音频信号的设备&#xff0c;其重建的信号音量和功率级都要理想&#xff1a;如实、有效且失真低。音频范围为约20Hz&#xff5e;20000Hz&#xff0c;因此放大器在此范围内必须有良好的频率响应&#xff08;驱动频带受限的扬声器时要…

Flink常见数据源使用教程(DataStream API)

前言 一个 Flink 程序,其实就是对 DataStream 的各种转换。具体来说,代码基本上都由以下几部分构成,如下图所示: 获取执行环境(execution environment)读取数据源(source)定义基于数据的转换操作(transformations)定义计算结果的输出位置(sink)触发程序执行(exec…

深度deepin v23系统也能玩《黑神话:悟空》 8GB内存、GTX 1660 Ti丝滑流畅

首款国产现象级3A游戏《黑神话&#xff1a;悟空》正式上线&#xff0c;有玩家将其比喻为“村里这么多年终于出个大学生了”…那么&#xff0c;在国产操作系统上可以畅玩《黑神话&#xff1a;悟空》吗&#xff1f;答案是肯定的。深度系统最新版本deepin v23就展示了一番。 当然&…

最短路径树,CF 1076D - Edge Deletion

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1076D - Edge Deletion 二、解题报告 1、思路分析 考虑dijkstra实际上是…

如何将MySQL迁移到TiDB,完成无缝业务切换?

当 MySQL 数据库的单表数据量达到了亿级&#xff0c;会发生什么&#xff1f; 这个现象表示公司的业务上了一个台阶&#xff0c;随着数据量的增加&#xff0c;公司规模也进一步扩大了&#xff0c;是非常喜人的一个改变 &#xff0c;然而随之而来的其他变化&#xff0c;就没那么…

【踩坑】如何解锁微软“已暂时锁定你的帐户”

登录微软账号时候&#xff0c;提示&#xff1a;有人在使用此帐户时输入错误密码的次数过多。为了保证帐户安全&#xff0c;我们已暂时锁定你的帐户&#xff0c;请稍后再试。 进入以下网站重置密码即可&#xff1a; https://account.live.com/ResetPassword.aspx?mktzh-CN 登录…

什么是企业高性能web服务器,这一篇就够了

一.Web 服务基础介绍 正常情况下的单次web服务访问流程&#xff1a; 1.1 互联网发展历程回顾 1993年3月2日&#xff0c;中国科学院高能物理研究所租用AT&T公司的国际卫星信道建立的接入美国SLAC国家实 验室的64K专线正式开通&#xff0c;成为我国连入Internet的第一根专…

IMU用于受伤颈椎的角度监测

最近&#xff0c;一项由泰国科研团队开展的研究&#xff0c;创新性地应用了惯性测量单元&#xff08;IMU&#xff09;传感器&#xff0c;以评估和比较两种不同的颈椎固定技术——传统脊柱固定&#xff08;TSI&#xff09;和脊柱运动限制&#xff08;SMR&#xff09;——在院前急…

MacBook M系列芯片基于docker安装Oracle 19c

网上找到的镜像&#xff0c;如&#xff1a;doctorkirk/oracle-19c、registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c&#xff0c;都是linux/amd64版本&#xff0c;M系列芯片一般也是支持linux/amd64的镜像运行的&#xff0c;但是oracle的这两个镜像运行不起来&#xff…

Python入门级 [ 继上篇 进阶版 持续更新中哞哞哞!!! ]例题较多

本文主要结合例题介绍了数据集合中的元组、字符串、以及字符串的查找 替换 格式化等基础函数。下期是序列 集合 字典&#xff0c;这几种数据集合在Python中也是蛮重要的&#xff0c;对于新手比较友好。 本文例题大多来自哔站up主鱼C-小甲鱼【Python教程】的练习过程&#xff0c…

第一批AI原住民开始变现:9岁小学生,用大模型写书赚1个w

前言 当人们正在观望&#xff0c;AI什么时候抢走自己的饭碗时&#xff0c;北京一名9岁的小学生在AI的帮助下写了一本小说&#xff0c;并赚到了2万元的版税。 这件看似不可思议的事&#xff0c;他是如何做到的&#xff1f;此外&#xff0c;他还带来一个启发&#xff1a;面对AI时…

SpringBoot教程(二十四) | SpringBoot集成AOP实现日志记录

SpringBoot教程&#xff08;二十四&#xff09; | SpringBoot集成AOP实现日志记录 &#xff08;一&#xff09;AOP 概要1. 什么是 AOP &#xff1f;2. 为什么要用 AOP&#xff1f;3. AOP一般用来干什么&#xff1f;4. AOP 的核心概念 &#xff08;二&#xff09;Spring AOP1. 简…

外部环境连接kafka

修改配置文件外部环境连接kafka 1、kafka的docker官方镜像地址2、kafka官方介绍的三种连接方式3、方式一&#xff1a;Default configs默认配置4、方式二&#xff1a;File input&#xff08;文件输入&#xff1a;外部配置文件替换docker容器内的配置文件&#xff09;4.1、首先查…

PHP导出生成PDF文件开源组件:mPDF使用详情

最近在使用php要实现一个把旅游线路导出成pdf文件下载&#xff0c;在全网搜索了一遍有几个常用的开源组件&#xff0c;在PHP中生成PDF文件&#xff0c;比如FPDF、TCPDF、mPDF等。在对比了一圈后就 mPDF开源地址&#xff1a; https://github.com/mpdf/mpdf mPDF版本说明 PHP…