AtCoder Beginner Contest 392(A-G)题解

A-B:略

C:可能题意比较绕,第i个答案就是穿着i这个号码(也就是Q[j] = i,这个时候j这个位置),看向的那个人的号码(也就是P[j])

代码:

void solve()
{
  int n;
  cin >> n;

  vi p(n + 1), q(n + 1), ans(n + 1);
  rep(i, 1, n) {
    cin >> p[i];
  }
  rep(i, 1, n) {
    cin >> q[i];
  }

  rep(i, 1, n) {
    ans[q[i]] = q[p[i]];
  }
  rep(i, 1, n) {
    cout << ans[i] << ' ';
  }
}

D:枚举哪两个集合[i,j]计算贡献,用map记录每个集合每个元素a个数,最后枚举i和j中间最小那个map计算贡献即可。

void solve()
{
  int n;
  cin >> n;

  vector<map<int, int>> cnt(n + 1);
  vi k(n + 1);
  rep(i, 1, n) {
    cin >> k[i];
    int x;
    rep(j, 1, k[i]) {
      cin >> x;
      cnt[i][x]++;
    }
  }

  double ans = 0;
  rep(i, 1, n) {
    rep(j, i + 1, n) {
      if (sz(cnt[i]) < sz(cnt[j])) {
        double dw = 1.0 * k[i] * k[j];
        double up = 0;
        for (auto &[x, c] : cnt[i]) {
          if (cnt[j].count(x)) {
            up += 1.0 * cnt[j][x] * c;
          }
        }
        ans = max(ans, up / dw);
      } else {
        double dw = 1.0 * k[i] * k[j];
        double up = 0;
        for (auto &[x, c] : cnt[j]) {
          if (cnt[i].count(x)) {
            up += 1.0 * cnt[i][x] * c;
          }
        }
        ans = max(ans, up / dw);
      }
    }
  }
  cout << fixed << setprecision(10) << ans << '\n';
}

E:考虑用并查集把没用到的边筛除出来,然后每次根据没用到的边再根据所在连通块合并即可,直到最后只剩下一个连通块。

void solve()
{
  int n, m;
  cin >> n >> m;

  DSU dsu(n);
  vector<pii> edges(m + 1);
  vi vec;
  rep(i, 1, m) {
    int u, v;
    cin >> u >> v;
    edges[i] = {u, v};
    if (dsu.same(u, v)) {
      vec.pb(i);
    } else {
      dsu.merge(u, v);
    }
  }

  if (dsu.getBlocks() == 1) {
    cout << 0 << '\n';
    return;
  }

  set<int> st;
  rep(i, 1, n) {
    if (i == dsu.find(i)) {
      st.insert(i);
    }
  }

  vector<tuple<int, int, int>> ans;
  for (auto &i : vec) {
    auto [u, v] = edges[i];
    int t = v;
    u = dsu.find(u);
    v = dsu.find(v);
    st.erase(u);
    int z = *st.begin();
    st.erase(z);
    dsu.merge(u, z);
    ans.pb({i, t, z});
    st.insert(dsu.find(u));
    if (sz(st) == 1) {
      break;
    }
  }

  cout << sz(ans) << '\n';
  for (auto &[i, x, y]: ans) {
    cout << i << ' ' << x << ' ' << y << '\n';
  }
}

F:因为前面的总会被后面的顶掉,所以我们直接倒置放,一定不会被顶掉,每次从头开始找到未被放数字的第a[i]个位置,这个位置就是当前数字,寻找的过程可以通过维护线段树,每次放一个数字就可以把这个位置上的sum标成1,在线段树上二分这个sum去寻找位置,复杂度nlogn。

const int N = 5e5 + 5;
struct node {
  int l, r;
  int sum;
} tr[N << 2];

void push_up(int u) {
  tr[u].sum = tr[u << 1].sum + tr[u << 1 | 1].sum;
}

void build(int u, int l, int r) {
  tr[u] = {l, r, 0};
  if (l == r) {
    tr[u].sum = 1;
    return;
  }
  int mid = (l + r) >> 1;
  build(u << 1, l, mid);
  build(u << 1 | 1, mid + 1, r);
  push_up(u);
}

void modify(int u, int p) {
  if (tr[u].l == tr[u].r) {
    tr[u].sum = 0;
    return;
  }
  int mid = (tr[u].l + tr[u].r) >> 1;
  if (p <= mid) {
    modify(u << 1, p);
  } else {
    modify(u << 1 | 1, p);
  }
  push_up(u);
}

int find_pos(int u, int sum) {
  if (tr[u].l == tr[u].r) {
    return tr[u].l;
  }
  if (tr[u << 1].sum >= sum) {
    return find_pos(u << 1, sum);
  }
  return find_pos(u << 1 | 1, sum - tr[u << 1].sum);
}

void solve()
{
  int n;
  cin >> n;

  vi a(n + 1);
  vi ans(n + 1);
  rep(i, 1, n) {
    cin >> a[i];
  }
  build(1, 1, n);
  per(i, n, 1) {
    int p = find_pos(1, a[i]);
    ans[p] = i;
    modify(1, p);
  }
  rep(i, 1, n) {
    cout << ans[i] << ' ';
  }
}

G:经典FFT,考虑把值域a[i]看成多项式的x^a[i],把方案数看成系数,最后把多项式相乘系数就是每个值的方案数,由于原式子可以化成A+C=2B,因此我们枚举2B,只可能是偶数,且B一定要出现在原来的a数组中,这就可以计算到答案中去。

void solve()
{
  vl A(1e6 + 1), B(1e6 + 1), C(1e6 + 1);

  int n;
  cin >> n;
  rep(i, 1, n) {
    int x;
    cin >> x;
    A[x]++;
    B[x]++;
    C[x]++;
  }
  auto ret = atcoder::convolution_ll(A, B);
  ll ans = 0;
  REP(i, 2, 2000000, 2) {
    if (C[i >> 1]) {
      ans += ret[i] / 2;
    }
  }
  cout << ans;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机组成原理(3)

计算机组成原理&#xff08;3&#xff09; 存储器层次结构存储器概述存储器分类存储器性能指标 半导体随机存储SRAM和DRAM 存储器层次结构 主存-辅存&#xff1a;实现了虚拟存储系统&#xff0c;解决了主存容量不足的问题&#xff1b; Cache-主存&#xff1a;解决了主存于CPU速…

计算机网络-SSH基本原理

最近年底都在忙&#xff0c;然后这两天好点抽空更新一下。前面基本把常见的VPN都学习了一遍&#xff0c;后面的内容应该又继续深入一点。 一、SSH简介 SSH&#xff08;Secure Shell&#xff0c;安全外壳协议&#xff09;是一种用于在不安全网络上进行安全远程登录和实现其他安…

【理论知识】 2D 卷积、3D 卷积与 3D 池化

摘要 卷积神经网络&#xff08;Convolutional Neural Networks, CNNs&#xff09;在计算机视觉、视频处理和医学影像分析等领域取得了显著的成功。卷积操作作为CNN的核心&#xff0c;主要包括二维卷积&#xff08;2D Convolution&#xff09;、三维卷积&#xff08;3D Convolu…

apisix网关ip-restriction插件使用说明

ip-restriction插件可以在网关层进行客户端请求ip拦截。 当然了&#xff0c;一般不推荐使用该方法&#xff0c;专业的事专业工具做。建议有条件&#xff0c;还是上防火墙或者waf来做。 官方文档&#xff1a;ip-restriction | Apache APISIX -- Cloud-Native API Gateway whit…

uniapp 编译生成鸿蒙正式app步骤

1&#xff0c;在最新版本DevEco-Studio工具新建一个空项目并生成p12和csr文件&#xff08;构建-生成私钥和证书请求文件&#xff09; 2&#xff0c;华为开发者平台 根据上面生成的csr文件新增cer和p7b文件&#xff0c;分发布和测试 3&#xff0c;在最新版本DevEco-Studio工具 文…

在亚马逊云科技上云原生部署DeepSeek-R1模型(下)

在本系列的上篇中&#xff0c;我们介绍了如何通过Amazon Bedrock部署并测试使用了DeepSeek模型。在接下来的下篇中小李哥将继续介绍&#xff0c;如何利用亚马逊的AI模型训练平台SageMaker AI中的&#xff0c;Amazon Sagemaker JumpStart通过脚本轻松一键式部署DeepSeek预训练模…

A new release of pip is available: 24.2 -> 25.0

您可以使用官方提供的 get-pip.py 脚本来安装或升级pip。 1&#xff0c;下载 get-pip.py 脚本&#xff1a; curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 2&#xff0c;运行脚本以安装或升级pip&#xff1a; python get-pip.py 3&#xff0c;实际运行效果

使用WebUI访问本地Deepseek(Ollama集成Open WebUI)

在《deepseek本地部署和使用&#xff08;Linux虚拟机&#xff09;》中&#xff0c;我们使用Ollama部署了Deepseek-r1&#xff0c;但是只能通过命令行方式交互&#xff0c;默认Ollama启动后&#xff0c;会启动一个监听到127.0.0.1&#xff0c;用以接收POST 请求&#xff0c;服务…

[NKU]C++安装环境 VScode

bilibili安装教程 vscode 关于C/C的环境配置全站最简单易懂&#xff01;&#xff01;大学生及初学初学C/C进&#xff01;&#xff01;&#xff01;_哔哩哔哩_bilibili 1安装vscode和插件 汉化插件 ​ 2安装插件 2.1 C/C 2.2 C/C Compile run ​ 2.3 better C Syntax ​ 查看已…

DeepSeek图解10页PDF

以前一直在关注国内外的一些AI工具&#xff0c;包括文本型、图像类的一些AI实践&#xff0c;最近DeepSeek突然爆火&#xff0c;从互联网收集一些资料与大家一起分享学习。 本章节分享的文件为网上流传的DeepSeek图解10页PDF&#xff0c;免费附件链接给出。 1 本地 1 本地部…

如何将Excel的表格存为图片?

emmm&#xff0c;不知道题主具体的应用场景是什么&#xff0c;就分享几个我一般会用到的场景下奖excel表格保存为图片的技巧吧&#xff01; 先来个总结&#xff1a; 方法 适用场景 画质 操作难度 截图&#xff08;WinShiftS&#xff09; 快速保存表格&#xff0c;方便粘贴…

UnrealEngine dotnet.exe 请求的操作需要提升 解决方案

一、问题如图 二、解决方式 按照图片路径找到dotnet.exe&#xff0c;鼠标右键-属性- 兼容性&#xff0c;勾选以管理员方式运行后重启UE。如下图&#xff1a;

活动预告 |【Part 1】Microsoft 安全在线技术公开课:通过扩展检测和响应抵御威胁

课程介绍 通过 Microsoft Learn 免费参加 Microsoft 安全在线技术公开课&#xff0c;掌握创造新机遇所需的技能&#xff0c;加快对 Microsoft Cloud 技术的了解。参加我们举办的“通过扩展检测和响应抵御威胁”技术公开课活动&#xff0c;了解如何更好地在 Microsoft 365 Defen…

「vue3-element-admin」告别 vite-plugin-svg-icons!用 @unocss/preset-icons 加载本地 SVG 图标

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …

SAP HCM PFCG读取结构化权限参数

权限&#xff1a;HCM的权限分两套&#xff0c;一套是PFCG的普通权限&#xff0c;一套是结构化权限是根据组织ID限制访问权限的&#xff0c;今天我们讨论的话题如何把这两类的权限组合起来 场景&#xff1a;例如下载有个薪酬管理人员&#xff0c;他复制A和B部门&#xff0c;但是…

3D数字化营销:重塑家居电商新生态

随着电商的蓬勃发展&#xff0c;网上订购家具已成为众多消费者的首选。然而&#xff0c;线上选购家具的诸多挑战&#xff0c;如风格不匹配、尺寸不合适、定制效果不如预期以及退换货不便等&#xff0c;一直困扰着消费者。为解决这些问题&#xff0c;家居行业急需一种全新的展示…

发布:大彩科技DN系列2.8寸高性价比串口屏发布!

一、产品介绍 该产品是一款2.8寸的工业组态串口屏&#xff0c;采用2.8寸液晶屏&#xff0c;分辨率为240*320&#xff0c;支持电阻触摸、电容触摸、无触摸。可播放动画&#xff0c;带蜂鸣器&#xff0c;默认为RS232通讯电平&#xff0c;用户短接屏幕PCB上J5短接点即可切换为TTL电…

【C++篇】C++11新特性总结2

目录 1&#xff0c;可变参数模板 1.1&#xff0c;基本语法及原理 1.2&#xff0c;包扩展 4.3&#xff0c;emplace系列接口 2&#xff0c;新的类功能 2.1&#xff0c;默认的移动构造和移动赋值 2.2&#xff0c;default和delete 2.3&#xff0c;final与override 3&…

TCP三次握手全方面详解

文章目录 (1) 三次握手各状态CLOSE状态SYN_SENT状态SYN_RECV状态ESTABLISHED状态 (2) 为什么握手时的seqnum是随机值&#xff0c;以及acknum的功能(3) 三次握手中的半连接队列&#xff08;SYN队列&#xff09;和全连接队列&#xff08;ACCEPT队列&#xff09;半连接队列全连接队…

模拟开发小鹅通首页网站练习

HTML代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>小鹅通-首页</title><!-- 引入页…