2024.1.29 寒假训练记录(12)

昨天大半夜开了一道2000的组合数学,吗的忘记看场次,根本搜不到啥题解,只能对着别人代码一点点琢磨,终于看明白了,搞了套组合数取模的板子,还行

训练赛剩下的题目明天补

文章目录

  • CF 1912B Blueprint for Seating
  • CF 104555M Maximizing Flight Efficiency
  • CF 104555C Challenging Hike
  • CF 104555I Investigating Zeroes and Ones

CF 1912B Blueprint for Seating

题目链接

首先是求最小的不方便值,这个很容易,可以分层求,意思是靠近过道的是第一层,与第一层相邻的是第二层,每一层有 2*k 个座位,排座位时是尽量排满小的层,这样很容易求出不方便值最小是多少

比较困难的是共有多少种方式,如果一共排了 x 层,我们只需要考虑第 x 层的排列方式,因为前 x-1 层已经占满了,那第 x 层的排列方式怎么求呢?

我们可以求出第 x 层需要排多少个座位(下文里把它称为p),然后按照中间的座位(中间座位意思是两边都是过道的列, 而不是一边是窗户一边是过道的列)有多少列排两个座位来遍历计算

中间的座位一共有 k-1 列,也就是从 0 循环到 k-1,从 k-1 个中间列里选 i 个排两个座位,剩下的 k+1-i 个里面选 p-2*i 个排一个座位

除法取模需要逆元,总结了组合数的模板在这里

#include <bits/stdc++.h>using namespace std;using i64 = long long;
#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 maxn = 1e6;
const int mod = 998244353;int Jc[maxn];void calJc()	//求maxn以内的数的阶乘
{Jc[0] = Jc[1] = 1;for(int i = 2; i < maxn; i++) Jc[i] = Jc[i - 1] * i % mod;
}int pow(int a, int n, int p)
{int ans = 1;while (n){if (n & 1) ans = ans * a % p;a = a * a % p;n >>= 1;}return ans;
}int niYuan(int a, int b)	//费马小定理求逆元
{return pow(a, b - 2, b);
}int C(int a, int b)
{if(a < b) return 0;return Jc[a] * niYuan(Jc[b], mod) % mod * niYuan(Jc[a - b], mod) % mod;
}void solve()
{int n, k;cin >> n >> k;if (n <= 2 * k){cout << 0 << ' ';n -= k + 1;if (n == 0) cout << 1 << '\n';else cout << C(k - 1, n) << '\n';return;}int tmp = 2 * k;if (n % tmp == 0){int res = 0;int m = n / tmp;res = (m - 1) * m * k;cout << res << ' ' << 1 << '\n';}else{int res = 0;int m = n / tmp;res = (m - 1) * m * k;n %= tmp;res += m * n;cout << res << ' ';int ans = 0;for (int i = 0; i <= k - 1; i ++ ){if (n < 2 * i) break;int p = n - 2 * i;if (p + i > k + 1) continue;ans = (ans + C(k - 1, i) % mod * C(k + 1 - i, p) % mod) % mod;}cout << ans << '\n';}
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);calJc();int t = 1;cin >> t;while (t -- ){solve();}
}

CF 104555M Maximizing Flight Efficiency

题目链接

赛时对floyd的理解不够深+忘判重导致wa了

传统的floyd的循环层是kij,k代表的是利用前k个点,而不是经过k点,这一点需要搞清楚

这一题可以把k放到最里层,含义是经过k这个点,这样可以直接在循环内部判重

(当然也可以像我赛时的ac代码一样先用传统floyd求出每个点之间的非直达最短距离,然后再开一次循环判断

#include <bits/stdc++.h>using namespace std;#define int long longvoid solve()
{int n;cin >> n;vector<vector<int>> g(n + 1, vector<int>(n + 1));for (int i = 1; i <= n; i ++ )for (int j = 1; j <= n; j ++ ) cin >> g[i][j];int ans = 0;for (int i = 1; i <= n; i ++ ){for (int j = i + 1; j <= n; j ++ ){bool flag = false;for (int k = 1; k <= n; k ++ ){if (k == i || k == j) continue;if (g[i][j] > g[i][k] + g[k][j]){cout << -1 << '\n';return;}else if (g[i][j] == g[i][k] + g[k][j] && !flag){ans ++ ;flag = true;}}}}cout << ans << '\n';
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;while (t -- ){solve();}
}

CF 104555C Challenging Hike

题目链接

树上最长上升子序列的板题

首先是最长上升子序列的log做法,每遍历一个数,用二分判断这个数应该在当前最长上升子序列的哪个位置,更新最大值,把这个方法在dfs里实现,注意,每次函数结束要把修改的位数恢复成原样

#include <bits/stdc++.h>using namespace std;#define int long longvoid solve()
{int n;cin >> n;vector<vector<int>> g(n + 1);for (int i = 2; i <= n; i ++ ){int x; cin >> x;g[i].push_back(x);g[x].push_back(i);}vector<int> v(n + 1);for (int i = 1; i <= n; i ++ ) cin >> v[i];vector<int> lis(n + 1, 0x3f3f3f3f3f3f3f3f);vector<int> ans(n + 1);function<void(int, int)> dfs = [&](int u, int fa){int p = lower_bound(lis.begin() + 1, lis.end(), v[u]) - lis.begin();int tmp = lis[p];lis[p] = v[u];if (fa != -1) ans[u] = max(ans[u], max(p, ans[fa]));else ans[u] = max(ans[u], p);for (int i = 0; i < g[u].size(); i ++ ){int j = g[u][i];if (j == fa) continue;dfs(j, u);}lis[p] = tmp;};dfs(1, -1);for (int i = 2; i <= n; i ++ ) cout << ans[i] << ' ';cout << '\n';
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;while (t -- ){solve();}
}

CF 104555I Investigating Zeroes and Ones

题目链接

循环看以当前位为结尾的含奇数个1的字串有多少个,加到总答案里

我的想法是,如果前方(包括当前位)已经有奇数个1,那么以当前位结尾、以奇数个1和其之前的0开头的字串一定有奇数个1,我们遍历的时候记录下奇数1和前面的0以及偶数1和前面的0,每遍历一位在答案里加上即可

#include <bits/stdc++.h>using namespace std;#define int long longvoid solve()
{int n;cin >> n;vector<int> b(n);for (int i = 0; i < n; i ++ ) cin >> b[i];int cnt1 = 1, cnt2 = 0; // 奇偶int ans = 0, idx = 0;for (int i = 0; i < n; i ++ ){idx += b[i];if (idx % 2 != 0) ans += cnt1, cnt2 ++ ;else ans += cnt2, cnt1 ++ ;}cout << ans << '\n';
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;while (t -- ){solve();}
}

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

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

相关文章

uni-app vite+ts+vue3模式 集成微信云开发

1.创建uni-app项目 此处使用的是通过vue-cli命令行方式uni-app官网 使用vue3/vite版 创建以 typescript 开发的工程&#xff08;如命令行创建失败&#xff0c;请直接访问 gitee 下载模板&#xff09; npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project(我创建失败…

【竞技宝jjb.lol】LOL:经典大龙毁一生 WE鏖战三局力克FPX

北京时间2024年1月30日&#xff0c;英雄联盟LPL2024春季赛在昨天迎来第二周首个比赛日&#xff0c;本日首场比赛由WE对阵FPX。本场比赛双方前两局战至1-1平&#xff0c;决胜局FPX一度建立不小的经济优势&#xff0c;然而太过冒险的打大龙决策最终让其功亏一篑&#xff0c;WE鏖战…

快速入门存内计算—助力人工智能加速深度学习模型的训练和推理

存内计算&#xff1a;提高计算性能和能效的新技术 传统的计算机架构是将数据存储在存储器中&#xff0c;然后将数据传输到计算单元进行处理。这种架构存在一个性能瓶颈&#xff0c;即数据传输延迟。存内计算通过将计算单元集成到存储器中&#xff0c;消除了数据传输延迟&#…

idea控制台出现乱码的解决方案

概述&#xff1a;有时候控制台的关键说明出现乱码&#xff0c;就很令人烦恼 在 IntelliJ IDEA 中出现控制台乱码通常是由于编码设置不正确或者字体显示问题导致的。以下是一些可能的解决方案&#xff1a; 1. 设置项目编码 确保你的项目编码设置正确&#xff1a; 在 Intelli…

element -table,多行或列合并

需求:后端返回的表格数据,如果某列值一样,前端表格样式需要合并他们,需要合并的列的行数未知(所以需要有数据后遍历后端数据对需要合并的属性进行计数)即动态遍历表格合并 效果 - 重点方法;table自带的:span-method="objectSpanMethod"方法 代码环境:vue2 ,…

顺序表的奥秘:高效数据存储与检索

&#x1f37f;顺序表 &#x1f9c0;1、顺序表的实现&#x1f365;1.1 创建顺序表类&#x1f365;1.2 插入操作&#x1f365;1.3 查找操作&#x1f365;1.4 删除操作&#x1f365;1.5 清空操作 &#x1f9c0;2、ArrayList的说明&#x1f9c0;3、ArrayList使用&#x1f365;3.1 A…

app广告变现|如何提升app广告点击率?

提升app内的广告点击率&#xff08;CTR&#xff09;可以增加广告收入&#xff0c;而对广告主来说&#xff0c;广告点击率下降会直接影响广告主的投资回报率&#xff0c;因此&#xff0c;如何提升广告点击率&#xff0c;对app运营来说是一项重要的工作。 AdSet官网 | 聚合SDK广…

分类预测 | Matlab实现SCN-Adaboost随机配置网络模型SCN的Adaboost数据分类预测/故障识别

分类预测 | Matlab实现SCN-Adaboost随机配置网络模型SCN的Adaboost数据分类预测/故障识别 目录 分类预测 | Matlab实现SCN-Adaboost随机配置网络模型SCN的Adaboost数据分类预测/故障识别分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现SCN-Adaboost随机配置网…

C++ ffmpeg RTSP 视频推流实现, arm linux平台

环境&#xff1a; FFmpeg版本&#xff1a;n4.2.2 下载地址&#xff08;下载编译后请确认版本正确&#xff09;&#xff1a; https://ffmpeg.org//download.html 下面地址经过第三方git加速可能存在实效性&#xff1a; https://hub.fgit.cf/FFmpeg/FFmpeg/tree/n4.4.2实现代码…

深入解析Dubbo负载均衡策略

深入解析Dubbo负载均衡策略 I. 引言 在当今日益复杂和庞大的网络环境中&#xff0c;分布式系统的设计和实现成为了现代软件架构的重要组成部分。Dubbo框架作为一种高性能、轻量级的分布式服务框架&#xff0c;为构建分布式系统提供了强大的支持。然而&#xff0c;随着系统规模…

发票pdf文件解析

借助pdfplumber 解析 效果如下&#xff1a; { 发票号码(FPHM): 24322000000011529984, 开票日期(KPRQ): 2024年01月11日, 合计(HJ): 1205.94, 购方: 91320213586657279T, 销方: 91320214MAD1N7EN36, 价税合计(JSHJ): 1218.00, 项目(XM)-1: …

【HarmonyOS应用开发】UIAbility实践第一部分(五)

一、UIAbility概述 1、UIAbility是一种包含用户界面的应用组件&#xff0c;主要用于和用户进行交互。UIAbility也是系统调度的单元&#xff0c;为应用提供窗口在其中绘制界面。 2、每一个UIAbility实例&#xff0c;都对应于一个最近任务列表中的任务。 3、一个应用可以有一个UI…

获取文件夹下所有文件路径

有时候我们会获取文件夹下所有文件的路径以及完成的名称,这时候如果有一个函数库轻松帮我得到数据就好了,还真有. cpp void getFiles(const std::string & path, std::vector<std::string> & files) { //文件句柄 long hFile 0; //文件信息&#xff0c;_fi…

信息安全考证攻略

&#x1f525;在信息安全领域&#xff0c;拥有相关的证书不仅能提升自己的专业技能&#xff0c;更能为职业生涯增添不少光彩。下面为大家盘点了一些国内外实用的信息安全证书&#xff0c;让你一睹为快&#xff01; &#x1f31f;国内证书&#xff08;认证机构&#xff1a;中国信…

数据与资源可视化——长安链运维监控实践

前言 “链上的交易总量是多少”&#xff0c;“我的链上现在有多少区块了”&#xff0c;“节点是否存活无法第一时间感知到”&#xff0c;除sdk查询链上的相关信息外&#xff0c;今天我们介绍一种新的方式实现链上数据与相关资源的可视化的监控。 简介 监控链上数据以及链上节…

[提高工作开发效率,远离996]程序员常用的工具软件推荐

前言 现如今&#xff0c;技术发展十分迅猛&#xff0c;开发者只有通过不断的学习才能跟得上时代的步伐。而为了便于学习和工作&#xff08;减少996&#xff09;&#xff0c;涌现了很多优秀的开发工具用以帮助开发者提高工作效率。现在我把我工作多年来收集实用的开发利器分享出…

蓝桥杯-常用STL(一)

常用STL &#x1f388;1.动态数组&#x1f388;2.vector的基础使用&#x1f52d;2.1引入库&#x1f52d;2.2构造一个动态数组&#x1f52d;2.3插入元素&#x1f52d;2.4获取长度并且访问元素&#x1f52d;2.5修改元素&#x1f52d;2.6删除元素&#x1f52d;2.7清空 &#x1f38…

关于监控的那些事,你有必要了解一下

监控在整个运维和产品生命周期中扮演着至关重要的角色。其目标是在应用的各个阶段&#xff0c;从程序设计、开发、部署到下线&#xff0c;实现事前预警、事中问题定位和事后问题分析的全方位服务。 一、监控的目的 监控贯穿应用的整个生命周期&#xff0c;服务对象主要包括技…

上个厕所的时间了解链路追踪基本概念

大家好&#xff0c;我是蓝胖子&#xff0c;随着微服务的普及&#xff0c;在面对日益复杂的架构和请求链路时&#xff0c;链路追踪技术就显得更加重要&#xff0c;今天我们花5分钟的时间&#xff0c;来掌握和链路追踪相关的基本概念。不会涉及到具体的技术框架和落地&#xff0c…

07.领域驱动设计:3种常见微服务架构模型的对比和分析

目录 1、概述 2、整洁架构 3、六边形架构 4、三种微服务架构模型的对比和分析 5、从三种架构模型看中台和微服务设计 5.1 中台建设要聚焦领域模型 5.2 微服务要有合理的架构分层 5.2.1 项目级微服务 5.2.2 企业级中台微服务 5.3 应用和资源的解耦与适配 6、总结 1、概…