首页 > 其他分享 >Trails (Hard)

Trails (Hard)

时间:2024-12-09 10:37:29浏览次数:5  
标签:int Trails 短路 Hard 前半天 long cin 长路

算法

转化题意, 对于一个菊花图, 每次操作可以去到中心点, 再任意找一个外点跑,

首先考虑 \(\rm{dp}\) 的做法

对于每一天的后半部分, 我们考虑前半天走了长路和前一天走了短路两种情况, 显然的, 如果前半天走了长路, 那么后半天一定要走短路, 如果前半天走了短路, 后半天走长路和短路都一样

令 \(f_{i, 0 / 1}\) 表示第 \(i\) 天的前半天走了 短路 / 长路 的情况数量

那么显然的, 转移的系数为组合数

pA7bQoV.png

那么这个显然可以预处理用矩阵做

实现

不想重复写一个东西

ctj

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
constexpr int mod = 1000000007;
matrix base, res;
int m, n, s[100005], l[100005];
modint ans, f0, f1;
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin >> m >> n;
	for(int i = 1; i <= m; ++i) cin >> s[i];
	for(int i = 1; i <= m; ++i) cin >> l[i];
	for(int i = 1; i <= m; ++i) {
		base.val[0][0] += (s[i] + l[i]) * s[i], base.val[0][1] += (s[i] + l[i]) * l[i];
		base.val[1][0] += s[i] * s[i], base.val[1][1] += s[i] * l[i];
	}
	res = ksm(base, n - 1);//这里是快速幂优化
	f0 = s[1] * res.val[0][0] + l[1] * res.val[1][0];
	f1 = s[1] * res.val[0][1] + l[1] * res.val[1][1];
	for(int i = 1; i <= m; ++i) {
		ans += f0 * (s[i] + l[i]) + f1 * s[i];
	}
	cout << ans;
	return 0;
}

总结

善于推导柿子, 系数确定考虑矩阵加速

标签:int,Trails,短路,Hard,前半天,long,cin,长路
From: https://www.cnblogs.com/YzaCsp/p/18594333

相关文章

  • 【特殊子序列 DP】【hard】力扣446. 等差数列划分 II - 子序列
    给你一个整数数组nums,返回nums中所有等差子序列的数目。如果一个序列中至少有三个元素,并且任意两个相邻元素之差相同,则称该序列为等差序列。例如,[1,3,5,7,9]、[7,7,7,7]和[3,-1,-5,-9]都是等差序列。再例如,[1,1,2,5,7]不是等差序列。数组中的......
  • 题解:CF1968G2 Division + LCP (hard version)
    https://www.luogu.com.cn/problem/CF1968G2CF1968G2Division+LCP(hardversion)题解前言这题可以\(O(n\sqrt{n}\logn)\)再各种优化做,算法是二分、哈希(不知道包不包含根号分治,但是有用到根号分治的思想)。如果读题解有些抽象的话可以看代码辅助理解。题意转化由于......
  • CF2034F2 Khayyam's Royal Decree (Hard Version)
    把问题改写成在网格图上走,一个红球或蓝球对应了网格图上的一条边。最后只要把答案除以\(\dbinom{n+m}{m}\)即可。价值\(\times2\)不好表示,考虑把带\(2^c\)倍价值的球看成一个球和\(2^c-1\)个“复制品”。每次使用道具相当于将每个球都复制一遍。考虑对于每个道具,计算......
  • sharding-jdbc分表场景下的分页查询优化
    背景欢迎来到Java学院,我们学院学员众多,每年都要招收新学员。但是,我们学院并没有“毕业”这一机制,所以年复一年学员的数量就越来越多。咱们学院每年都有一次大考,需要统计所有学员的成绩,并按排名的先后顺序公示给大家。第一年我们招收了1,000名学员。在一年过后,我们的公示栏分为......
  • 【Unity 特效插件】Trails FX 帮助开发者在游戏中实现物体移动时产生的尾迹效果
    TrailsFX是一款专为Unity开发者设计的特效插件,用于创建动态的尾迹效果(TrailEffects)。这款插件提供了一种快速而高效的方式,帮助开发者在游戏中实现物体移动时产生的尾迹效果,如快速移动的物体、飞行物、粒子效果等。无论是用于角色技能、武器攻击、物体轨迹,还是火焰、光影......
  • 使用 Keil 新建 Arm Visual Hardware(AVH) 项目
    1新建并配置项目1.1新建项目我这里想模拟Cortex-M55核心,因此选择SSE-300-MPS3由于是简单教程,我只想输出一个最简单的HelloWorld,因此仅勾选串口相关的组件这里还需要特殊勾选一下以下选项1.2配置TargetSoftwareModel处选择TrustZonedisabledRead/WriteMemo......
  • Paper Reading: Relating instance hardness to classifcation performance in a d
    目录研究动机文章贡献实例空间分析ISA框架实例空间构造足迹分析单个数据集的ISA硬度度量指标算法和性能评估特征选择实例空间表示和足迹实验结果案例研究:对于COVIDprognosis数据集的ISA分析案例研究:使用ISA检测COMPAS数据集算法偏差案例分析:使用ISA分析标签噪声数据......
  • mongodb shard 分片集群基础概念
    目录一、shard集群二、ConfigServer1、config.shards2、config.database3、config.collection4、config.chunks5、config.settings6、其他三、shard机制1、PrimaryShard2、ShardKey2.1范围分片2.2哈希分片2.3ShardKey重定义2.4版本约束2.5ShardKey......
  • 题解:CF1970E1 Trails (Easy)
    基本思路设\(dp_{i,j}\)为第\(i\)天时在第\(j\)个小屋的方案数,\(r_j\)为第\(j\)个小屋共有多少条路连接(即\(s_j+l_j\))。易得转移方程为\[dp_{i,j}=\sum_{k=1}^{m}dp_{i-1,k}\cdot(r_j\cdotr_k-l_j\cdotl_k)\](因为至少走一条短路,所以减去全长路的情况)代码实现......
  • Hardware/Software Co-Exploration of Neural Architectures——神经架构的硬件/软件
    在一些研究工作中,探索实践与硬件平台端协同探索的方式来指导神经网络模型的结构设计优化,本文是对《Hardware/SoftwareCo-ExplorationofNeuralArchitectures》论文的阅读学习整体的论文阅读笔记,感兴趣的话可以参考下,如果想要进一步了解工作内容详情,建议移步阅读原英文论文,地......