2024.1.27 寒假训练记录(10)

下午训练赛的榜歪得吓人,来补一下题。

文章目录

  • CF 1646B Quality vs Quantity
  • CF 1326C Permutation Partitions
  • CF 1355D Game With Array
  • AT ARC99B Snuke Numbers
  • AT exawizards2019C Snuke the Wizard
  • CF 1788F XOR, Tree, and Queries

CF 1646B Quality vs Quantity

题目链接

双指针两端遍历即可

#include <bits/stdc++.h>using namespace std;#define int long long
#define INF 0x3f3f3f3ftypedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef pair<int, PII> PIII;const int N = 11;void solve()
{int n;cin >> n;vector<int> a(n);for (int i = 0; i < n; i ++ ) cin >> a[i];sort(a.begin(), a.end());int i = 2, j = n - 2;int sum1 = a[0] + a[1], sum2 = a[n - 1];int cnt1 = 2, cnt2 = 1;while (i <= j){if (sum1 < sum2 && cnt1 > cnt2){cout << "YES\n";return;}else if (sum1 >= sum2){sum2 += a[j];cnt2 ++ ;j -- ;}else if (cnt1 <= cnt2){sum1 += a[i];cnt1 ++ ;i ++ ;}}if (sum1 < sum2 && cnt1 > cnt2){cout << "YES\n";return;}cout << "NO\n";
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;cin >> t;while (t -- ){solve();}
}

CF 1326C Permutation Partitions

题目链接

每个区间分一个前k大的数就行了,剩下就是简单组合数学

#include <bits/stdc++.h>using namespace std;#define int long long
#define INF 0x3f3f3f3ftypedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef pair<int, PII> PIII;const int N = 11;
const int mod = 998244353;void solve()
{int n, k;cin >> n >> k;vector<PII> a(n);for (int i = 0; i < n; i ++ ){a[i].second = i;cin >> a[i].first;}sort(a.begin(), a.end());int ans = 0;for (int i = n - 1; i >= n - k; i -- ) ans += a[i].first;int cnt = 1;vector<int> tmp;for (int i = n - 1; i >= n - k; i -- ) tmp.push_back(a[i].second);sort(tmp.begin(), tmp.end());for (int i = 1; i < tmp.size(); i ++ ) cnt = cnt * (tmp[i] - tmp[i - 1]) % mod;cout << ans << ' ' << cnt << '\n';
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;// cin >> t;while (t -- ){solve();}
}

CF 1355D Game With Array

题目链接

前面全取1,后面取S-(n-1)即可

主要思路是让能被替代的数尽可能多,如果是1 2 4 8这种取法,互相之间不能被替代,所以能够组成的数就多了

#include <bits/stdc++.h>using namespace std;#define int long long
#define INF 0x3f3f3f3ftypedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef pair<int, PII> PIII;const int N = 11;
const int mod = 998244353;void solve()
{int n,s;cin >> n >> s;if (2 * n > s){cout << "NO\n";return;}cout << "YES\n";for (int i = 0; i < n - 1; i ++ ) cout << 1 << ' ';cout << s - (n - 1) << '\n';cout << s - n << '\n';
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;// cin >> t;while (t -- ){solve();}
}

AT ARC99B Snuke Numbers

题目链接

打表找规律(这么有意思的题到底哪里毒瘤了 ^ _ ^

#include <bits/stdc++.h>using namespace std;#define int long long
#define INF 0x3f3f3f3ftypedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef pair<int, PII> PIII;const int N = 11;
const int mod = 998244353;void solve()
{int k;cin >> k;int d = 1;int ans = 0;auto sum = [&](int x){string s = to_string(x);int res = 0;for (int i = 0; i < s.size(); i ++ ){res += s[i] - '0';}return res;};for (int i = 0; i < k; i ++ ){if ((ans + d * 10) * sum(ans + d) < (ans + d) * sum(ans + d * 10)) d *= 10;ans += d;cout << ans << '\n';}
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;// cin >> t;while (t -- ){solve();}
}

AT exawizards2019C Snuke the Wizard

题目链接

二分左右边界即可

二分的时候可以修改条件来保证一定能找到你想找到的值,否则可能会出现没有符合条件的点的情况

#include <bits/stdc++.h>using namespace std;#define int long long
#define INF 0x3f3f3f3ftypedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef pair<int, PII> PIII;const int N = 11;
const int mod = 998244353;void solve()
{int n, q;cin >> n >> q;string s;cin >> s;s = " " + s;vector<char> t(q), d(q);for (int i = 0; i < q; i ++ ) cin >> t[i] >> d[i];auto check = [&](int x){for (int i = 0; i < q; i ++ ){if (t[i] == s[x]){if (d[i] == 'L') x -- ;else x ++ ;if (x <= 0) return 0;else if (x > n) return 1;}}return 2;};int l = 0, r = n + 1;while (l < r){int mid = l + r + 1 >> 1;if (check(mid) == 0) l = mid;else r = mid - 1;}int ansl = r;l = 0, r = n + 1;while (l < r){int mid = l + r >> 1;if (check(mid) == 1) r = mid;else l = mid + 1;}int ansr = r;cout << ansr - ansl - 1 << '\n';
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;// cin >> t;while (t -- ){solve();}
}

CF 1788F XOR, Tree, and Queries

题目链接

p[i]i到根结点的边权值异或和,根据异或的性质可以得到点uv的边权异或和就是p[u] ^ p[v]

输入边的时候记录点的度数,度数为偶数的可以不用管,因为会相抵消

根据已给的边权信息,可以利用dfs得到一组可行解(设每个连通块遍历的第一个点wp[w] = 0),同时在遍历的时候发现矛盾直接返回NO

之后就是让所有边权异或和最小了,先记录所有度为奇数的点的异或和为ans,连通块点数为偶数的,异或值会相抵消不用管,只要遇见奇数,只需要让连通块中的点与当前ans取异或就行

#include <bits/stdc++.h>using namespace std;#define int long long
#define INF 0x3f3f3f3ftypedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef pair<int, PII> PIII;const int N = 11;
const int mod = 998244353;void solve()
{int n, m;cin >> n >> m;vector<PII> edge(n - 1);vector<int> du(n + 1), p(n + 1), size(n + 1), root(n + 1);for (int i = 0; i < n - 1; i ++ ){cin >> edge[i].first >> edge[i].second;du[edge[i].first] ++ , du[edge[i].second] ++ ;}vector<vector<PII>> g(n + 1);for (int i = 0; i < m; i ++ ){int a, b, c;cin >> a >> b >> c;g[a].push_back(make_pair(b, c));g[b].push_back(make_pair(a, c));}function<void(int, int)> dfs = [&](int u, int rt){root[u] = rt;for (int i = 0; i < g[u].size(); i ++ ){int j = g[u][i].first;if (!root[j]){p[j] = (p[u] ^ g[u][i].second);dfs(j, rt);}else if (p[j] != (p[u] ^ g[u][i].second)){cout << "NO\n";exit(0);}}};for (int i = 1; i <= n; i ++ ){if (root[i]) continue;dfs(i, i);}int ans = 0;for (int i= 1; i <= n; i ++ ) {if (du[i] % 2 != 0){ans ^= p[i];size[root[i]] ++ ;}}for (int i = 1; i <= n; i ++ ){if (size[i] % 2 == 0) continue;for (int j = 1; j <= n; j ++ ){if (root[j] == i) p[j] ^= ans;}break;}cout << "YES\n";for (int i = 0; i < n - 1; i ++ ){cout << (p[edge[i].first] ^ p[edge[i].second]) << ' ';}cout << '\n';
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;// cin >> t;while (t -- ){solve();}
}

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

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

相关文章

漏洞原理反射型XSS漏洞

漏洞原理XSS漏洞 1 反射型XSS php基础链接 Web渗透编程语言基础-CSDN博客 正常思维 http://127.0.0.1/websec/day01/xss_reflect.php?name%E6%88%91%E6%98%AF%E8%B0%81 http://127.0.0.1/14_WEBSEC/DAY01/xss_reflect.php?name我是谁 黑客思维 http://127.0.0.1/websec…

centos 离线安装yum

1先找一套相同cpu的虚拟机下载rpm 2 如果新的虚拟机没有yum源就替换 修改yum源-CSDN博客 1.2使用wget下载yum源配置文件 (1)备份本地yum源配置文件 备份命令&#xff1a; mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak(2)下载yum源配置文…

Unity 开发过程中如何优化内存

在开发Unity游戏时&#xff0c;优化内存使用是非常重要的。这不仅可以提高游戏性能&#xff0c;还能保证游戏在各种设备上都能顺利运行。以下是一些关于如何在Unity中优化内存使用的建议&#xff1a; 1. 了解并监控您的内存使用情况&#xff1a;您可以使用Unity的Profiler工具…

Qt Bezier闭合曲线插值(2D)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 标准的Bezier曲线拟合并不能穿过所有节点,这是由于其随着节点数量的增加,其多项式阶数也在增加,最终其形状也会越发复杂且难以控制。因此就有学者提出,使用三阶贝塞尔曲线分段去插值一条整体光滑的曲线,这样不…

echarts option series smooth

echarts option series smooth 平滑处理 smooth&#xff1a;0.3 echarts_04_line.html <!DOCTYPE html> <html lang"en"><head> <meta charset"utf-8"> <title></title> </head><body><div id&quo…

【Git版本控制】以及搭建gitlab服务

目录 一、Git介绍二、Git安装与全局配置1、git的全局配置&#xff1a;2、为常用的指令配置别名&#xff1a;3、Git初始化本地代码仓库4、Git的基础命令 三、分支四、Git远程仓库1、操作远程仓库2、从远程仓库克隆3、从远程仓库中抓取和拉取 五、Gitlab sever部署期间出现遇到的…

python爬虫demo——爬取历史平均房价

简单爬取历史房价 需求 爬取的网站汇聚数据的城市房价 https://fangjia.gotohui.com/ 功能 选择城市 https://fangjia.gotohui.com/fjdata-3 需要爬取年份的数据&#xff0c;等等 https://fangjia.gotohui.com/years/3/2018/ 使用bs4模块 使用bs4模块快速定义需要爬取的…

python asyncio异步编程

一、协程 协程(Coroutine),也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块相互切换执行。 对于协程而言,并不是计算机所提供的,计算机所提供的只有进程和线程、而协程则是通过程序员人为所创造的。我们通常将协程称为微线…

javaScript的书写位置

javascript的书写位置有哪些呢&#xff1f;有什么注意事项吗&#xff1f;让我为大家介绍一下吧&#xff01; 1.内部 注意&#xff1a;书写位置尽量写到文档末尾</ body>的前面 在我们内部书写JS的时候 <!DOCTYPE html> <html lang"en"> <hea…

有趣的数学 了解TensorFlow的自动微分的实现

一、简述 这里主要介绍了TensorFlow的自动微分(autodiff)功能如何工作,以及与其他解决方案的比较。假设您定义了一个函数,并且需要计算它的偏导数和,通常用于执行梯度下降(或某些其他优化算法)。可用的主要选择是手动微分、有限差分近似、正向模式自动微分和反向模式自动…

ETCD高可用架构涉及常用功能整理

ETCD高可用架构涉及常用功能整理 1. etcd的高可用系统架构和相关组件1.1 Quorum机制1.2 Raft协议 2. etcd的核心参数2.1 常规配置2.2 特殊优化配置2.2.1 强行拉起新集群 --force-new-cluster2.2.2 兼容磁盘io性能差2.2.3 etcd存储quota 3. etcd常用命令3.1 常用基础命令3.1.1 列…

Java 数据结构篇-深入了解排序算法(动态图 + 实现七种基本排序算法)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 实现冒泡排序 2.0 实现选择排序 2.1 选择排序的改良升级 3.0 实现堆排序 4.0 实现插入排序 5.0 实现希尔排序 6.0 实现归并排序 6.1 递归实现归并排序 6.2 使用…

HarmonyOS鸿蒙学习基础篇 - 通用事件

一、引言 HarmonyOS鸿蒙是华为推出的分布式操作系统&#xff0c;旨在为各种智能设备提供统一的操作系统。鸿蒙系统的一大特色是其强大的分布式能力&#xff0c;而通用事件则是实现这一能力的关键技术之一&#xff0c;本篇博客将介绍HarmonyOS鸿蒙中的通用事件。 二、 点击事件…

STM32-LwESP 移植

LwESP 是一个专门解析 Espressif 公司旗下 ESP 系列芯片 AT 指令的开源库&#xff0c;具有以下特性&#xff1a; 支持 Espressif 公司 ESP32, ESP32-C2, ESP32-C3, ESP32-C6 和 ESP8266 芯片。独立平台&#xff0c;采用 C99 标准编写&#xff0c;易于移植。允许不同的配置来优…

通讯录项目(终)

Start And Stick 上一期我们将通讯录的项目的基本功能已经实现&#xff0c;这一篇文章我们将对通讯录进行完善。 目录 Start And Stick 上期回顾&#xff1a; 上期必要代码&#xff1a; 数据打印&#xff1a; 代码讲解&#xff1a; 头部插入数据&#xff1a; 代码讲解&…

【Linux】专栏文章索引

为了方便 快速定位 和 便于文章间的相互引用等 作为一个快速准确的导航工具 Linux 目录&#xff1a; &#xff08;一&#xff09;CentOS 7 安装&配置Python

深入理解MySQL中的范围访问方法:单索引与多索引优化策略

深入理解MySQL中的范围访问方法&#xff1a;单索引与多索引优化策略 范围查询方法是数据库查询优化的一种重要手段&#xff0c;它通过利用索引来减少需要检查的数据行数&#xff0c;从而提高查询的执行效率。 范围查询使用单个索引来检索表中包含在一个或多个索引值区间内的子…

CSS 多色正方形上升

<template><view class="loop cubes"><view class="item cubes"></view> <!-- 方块1 --><view class="item cubes"></view> <!-- 方块2 --><view class="item cubes"></vie…

896.单调数列(Java)

目录 题目描述&#xff1a;输入&#xff1a;输出&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 如果数组是单调递增或单调递减的&#xff0c;那么它是 单调 的。 如果对于所有 i < j&#xff0c;nums[i] < nums[j]&#xff0c;那么数组 nums 是单调递增的。 如…

day23 其他事件(页面加载事件、页面滚动事件)

目录 页面加载事件页面/元素滚动事件页面滚动事件——获取位置 页面加载事件 加载外部资源&#xff08;如图片、外联CSS和JavaScript等&#xff09;加载完毕时触发的事件为什么使用&#xff1a; 有时候需要等页面资源全部处理完毕再做一些事老代码喜欢把script写在head中&…