首页 > 其他分享 >题解:AT_abc372_f [ABC372F] Teleporting Takahashi 2

题解:AT_abc372_f [ABC372F] Teleporting Takahashi 2

时间:2024-12-03 17:13:53浏览次数:5  
标签:Teleporting int 题解 LL MAXN 环走 id abc372 Takahashi

https://www.luogu.com.cn/problem/AT_abc372_f


简单易懂易写

考虑一步一步走。要么顺着环走,要么走那 \(m\) 条边。

设 \(id(k, i) = (i - 1 - k) \bmod n + 1\)。

设 \(g_{k,id(k, i)}\) 表示走了 \(k\) 步走到 \(i\) 的方案数。

这样设计下标就不需要管顺着环走了。顺着环走的转移就是直接 \(g_{k+1,\cdots} = g_{k,\cdots}\) 整体转移。

如果第 \(k\) 步选择走 \(m\) 条边,对于边 \((u,v)\),就是 \(g_{k,id(k,v)}\) 由 \(g_{k-1,id(k-1,u)}\) 转移来。记得转移的时候建临时数组。

实现可以直接省略第一维,具体可以看代码。

#include <bits/stdc++.h>

using namespace std;
using LL = long long;
using PII = pair<int, int>;

const int MAXN = 2e5 + 3;
const LL mod = 998244353;

int n, m, k;
PII eg[53];
LL dp[MAXN], tmp[MAXN];

int Ri(int t, int i){
  i--;
  return (i + t % n + n) % n + 1;
}
int _Ri(int t, int i){
  i--;
  return (i - t % n + n) % n + 1;
}

int main(){
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n >> m >> k;
  for(int i = 1; i <= m; i++){
    cin >> eg[i].first >> eg[i].second;
  }
  dp[1] = 1;
  for(int t = 1; t <= k; t++){
    for(int i = 1; i <= m; i++){
      int U = _Ri(t - 1, eg[i].first), V = _Ri(t, eg[i].second);
      tmp[U] = dp[U];
    }
    for(int i = 1; i <= m; i++){
      int U = _Ri(t - 1, eg[i].first), V = _Ri(t, eg[i].second);
      dp[V] = (dp[V] + tmp[U]) % mod;
    }
  }
  LL ans = 0;
  for(int i = 1; i <= n; i++){
    ans = (ans + dp[i]) % mod;
  }
  cout <<ans;
  return 0;
}

标签:Teleporting,int,题解,LL,MAXN,环走,id,abc372,Takahashi
From: https://www.cnblogs.com/huangqixuan/p/18584524

相关文章

  • 题解:CF843D Dynamic Shortest Path
    https://www.luogu.com.cn/problem/CF843DluoguRMJ加油.......如果每修改一次就dij复杂度\(O(q(n+m\logn))\)过不去的。暴力dij是因为值域很大需要用到堆,带个log,要是值域很小就可以直接分层BFS了……每次增加的边权很小,求最短路增量?设\(dis_i\)表示这次修......
  • 题解:AT_abc356_f [ABC356F] Distance Component Size Query
    https://www.luogu.com.cn/problem/AT_abc356_f前言纪念我场上WA8发没调出来,最后发现是1e18的问题。题目传送门:[ABC356F]DistanceComponentSizeQuery。不会线段树分治怎么办???那就用set+01-trie。思路一个联通块内的元素在值域上也是连续的,考虑维护一个联通快内......
  • 题解:CF1827C Palindrome Partition
    CF1827CPalindromePartition题解题面题目传送门。称一个字符串是好的,当且仅当它是一个长度为偶数的回文串或由若干长度为偶数的回文串拼接而成。给定一个长度为\(n\)的字符串\(s\),求有多少\(s\)的子串是好的。$1\len\le5\cdot10^5\(,\)s$仅包含小写字母。与......
  • 题解:CF1968G2 Division + LCP (hard version)
    https://www.luogu.com.cn/problem/CF1968G2CF1968G2Division+LCP(hardversion)题解前言这题可以\(O(n\sqrt{n}\logn)\)再各种优化做,算法是二分、哈希(不知道包不包含根号分治,但是有用到根号分治的思想)。如果读题解有些抽象的话可以看代码辅助理解。题意转化由于......
  • 题解:P10217 [省选联考 2024] 季风
    P10217[省选联考2024]季风题解题目传送门。初步化简题目注:本篇题解的所有下标均从\(1\)开始。设\(sumx_h\)表示\(\sum_{i=1}^{h}{x_i}\),\(sumy_i\)表示\(\sum_{i=1}^{h}{y_i}\)。于是题目给出的三个公式可以转化为:\((\sum_{i=1}^{m}{x_{i}^{′}})+sumx_{[(m-1......
  • 题解:AT_abc282_h [ABC282Ex] Min + Sum
    [ABC282Ex]Min+Sum题解题面传送门。题目要求有多少对\((l,r)\)满足\(1\lel\ler\len\)且\(\sum_{i=l}^{r}{b_i}+\min_{i=l}^{r}{a_i}\leS\)。考虑CDQ分治,那么我们需要不断寻找有多少对\((l,r)\)满足\(L\lel\leM<r\leR\)且\(\sum_{i=l}^{r}{b......
  • 【Mysql 数据库 undo log 文件无限膨胀,性能下降问题解决方案】
    数据库undolog文件无限膨胀,性能下降问题解决方案1.问题描述在Mysql数据目录中发现有个undo文件非常大,并且持续增长并且Historylistlength非常大------------TRANSACTIONS------------Trxidcounter3569860310Purgedonefortrx'sn:o<3185146100......
  • CentOS7 yum 安装 提示 网络问题解决办法
    1.sudovi/etc/yum.repos.d/CentOS-Base.repo2.将里边文件替换(insert%d  清除所有内容)  [base]name=CentOS-$releasever-Base-Aliyunbaseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/gpgcheck=1gpgkey=http://mirrors.aliyun.com/centos/RP......
  • 牛客周赛 Round 70题解
    牛客周赛Round70题解A小苯晨跑#include<bits/stdc++.h>usingnamespacestd;voidsolve(){inta[4];for(inti=0;i<4;i++)cin>>a[i];sort(a,a+4);if(a[0]==a[3]){cout<<"NO\n";}els......
  • 宇视网络摄像机IPC通过国标28181协议,无法接入国产系统部署的视频接入汇聚平台的问题解
    目录一.客户问题具体描述二.问题解决过程2.1网络排查2.2检查摄像机本身设置三.问题排查结果3.1平台查看设备是否在线3.2设置相关观看权限3.2.1新增并设置相关资源组3.2.2设置需要观看视频的角色3.2.3设置客户端登录用户3.3最终观看结果四.补充知识4.1ping的相关知......