HDU6038 - Function


做法:
展开后有,\(f(i) = b_{f(a_i)} = b_{b_{f(a_{a_i})}} = ... = b_{b_{..b_{f(i)}}}\),可以发现当 \(a_i\) 所在的循环节中确定一个时,整个循环都确定了,根据这个式子还可以发现,对于一个\(a_i\)所在的大小为\(x\)的循环节,一定映射到一个\(b_i\)中的一个大小为\(y\)循环节,且\(y|x\) 。因此答案就是:
\[ \prod_{i=1}^k \sum_{d|l_i} d·B_d \]
(其中\(a\)有\(k\)个大小为\(l_i\)的循环节,扎着\(b\)中大小为\(i\)的循环节有 \(B_i\) 个)

#include <bits/stdc++.h>
typedef long long ll;
const int N = 1e5 + 7;
const int mod = 1e9 + 7;
using namespace std;
int  n, m, a[N], b[N], in[N], CC = 0;
ll B[N];
ll cal(int st, int a[]) {int now = st; ll ans = 0;while(!in[now]) {in[now] = 1; now = a[now];++ans;}return ans;
}
int main() {while(scanf("%d%d",&n,&m)!=EOF) {for(int i = 0; i < n; ++i) scanf("%d", &a[i]);for(int i = 0; i < m; ++i) scanf("%d", &b[i]);memset(B,0,sizeof(B));memset(in,0,sizeof(in));for(int i = 0; i < m; ++i) if(!in[i]) ++B[cal(i,b)];memset(in,0,sizeof(in));ll ans = 1LL;for(int i = 0; i < n; ++i) if(!in[i]) {ll x = cal(i,a), tmp = 0;for(ll j = 1; j*j <= x; ++j) if(x%j == 0) {(tmp += j*B[j]%mod)%=mod;if(j*j==x) continue;(tmp += ((x/j)*B[x/j])%mod)%=mod;}(ans *= tmp)%=mod;}printf("Case #%d: %lld\n",++CC,ans);}
}

转载于:https://www.cnblogs.com/RRRR-wys/p/9699781.html

HDU6038 - Function相关推荐

  1. 创建一个Scalar-valued Function函数来实现LastIndexOf

    昨天有帮助网友解决的个字符串截取的问题,<截取字符串中最后一个中文词语(MS SQL)>http://www.cnblogs.com/insus/p/7883606.html 虽然实现了, ...

  2. php function集合

    /*更新商品的某个字段*/ function update_goods($goods_id, $field, $value) {if ($goods_id){/* 清除缓存 */clear_cache ...

  3. 函数指针amp;绑定: boost::functoin/std::function/bind

    see link: https://isocpp.org/wiki/faq/pointers-to-members function vs template: http://stackoverflow ...

  4. class function或class procedure是什么意思

    类函数\类过程.   它们是直接操作在类上面(没有实例化的对象) 下面是Delphi    Help    的描述            A class method is a method (oth ...

  5. Cost Function

    首先本人一直有一个疑问缠绕了我很久,就是吴恩达老师所讲的机器学习课程里边的逻辑回归这点,使用的是交叉熵损失函数,但是在进行求导推导时,google了很多的课件以及教程都是直接使用的,这个问题困扰了很久 ...

  6. error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. 的解决方法

    vs2013编译出错信息:错误    1    error C4996: 'fopen': This function or variable may be unsafe. Consider usin ...

  7. c++11 function

    是代指返回值为void型的函数指针. function 最大的功能是表达匿名函数,特别是 [] 里面捕捉了当前上下文变量的匿名函数 类模版 std::function是一种通用.多态的函数封装.std ...

  8. 避开移入移出事件内部div干扰事件,e是function(e)的e

    // 避开移入移出事件内部div干扰事件 // e是function(e)的elet element = e.toElement || e.relatedTarget;if (element.clas ...

  9. Vue子组件调用父组件方法并传参的5种方式:$emit触发、传入子组件function、访问父组件$parent.function、用inject关联父组件provide的方法、用window.fun

    如需了解老子怎么控制儿子的,传送门:https://s-z-q.blog.csdn.net/article/details/119922715 子组件child.vue <template> ...

最新文章

  1. 自己动手编写tomcat服务器(三)
  2. Kali Linux重设root密码
  3. Python当前进程信息 (os包)
  4. CodeForces #369 div2 D Directed Roads DFS
  5. springboot springcloud 热部署
  6. 资讯|WebRTC M98 更新
  7. [原创] Android SDK 安装全记录
  8. 洛谷p2234/BZOJ1588 [HNOI2002]营业额统计
  9. webpack 保存文件后自动打包_继webpack后又一打包神器Parcel
  10. 关于google拼音输入法的坑爹问题-IE浏览器浏览网页蓝屏等问题
  11. Spring的事务传播机制
  12. 计算机二级试题操作题图文讲解,计算机二级Word篇-实操真题详解26
  13. mysql-front服务器_mysql-front远程连接自己linux服务器上的mysql服务器
  14. Arduino 多LED灯控制
  15. CSCD刊源(2007年-2008年)
  16. 绝绝子!这些技巧真方便
  17. 机器学习工程师 - Udacity 项目:实现一个狗品种识别算法App
  18. DNS欺骗与钓鱼网站
  19. 《淘宝技术这十年》读书笔记 (四). 分布式时代和中间件
  20. Spring Boot 注入接口 @Autowired interface

热门文章

  1. mysql卸载时弹框,win10卸载mysql5安装mysql8
  2. java读取文件跳过_在Java中读取文本文件-为什么跳过行?
  3. java类同步_Java中方法,对象,类的同步
  4. 宝塔mysql远程链接_宝塔apache启动失败:报错 AH00526: Syntax error on line 解决方案
  5. Jdbc创建表 利用循环添加数据 ,更新数据
  6. [EDA] 第1章 EDA技术概述-潘松版
  7. 查询ecshop网站代码排查方法_提升网站访问速度,提升网站访问速度,提升网站访问速度的个人经验分享...
  8. 【Ynoi2011】成都七中【树论】【点分树】【离线】【树状数组】
  9. CF1550D Excellent Arrays(完全会了更新)
  10. Hopping Rabbit