CF809E Surprise me!】的更多相关文章

题解: 一道很套路的题目 首先一个结论 $\phi(xy)=\frac{\phi(x)*\phi(y)*gcd(x,y)}{\phi(gcd(x,y))}$ 这个按照$\phi$的定义很容易知道 然后我们可以枚举gcd,很套路的可以莫比乌斯反演 然后变成给出k个点,求他们$\phi(x)*\phi(y)*dis(x,y)$ 考虑所以gcd的点数为$\frac{n}{1}+\frac{n}{2}+\frac{n}{3}$=$nlogn$ 于是我们需要一个与点数相关的算法 考虑虚树 之后有两种办法解…
题目大意: 给你一棵树,树上的点编号为\(1-n\).选两个点\(i.j\),能得到的得分是\(\phi(a_i*a_j)*dis(i,j)\),其中\(dis(i,j)\)表示\(a\)到\(b\)的最短距离.求一次选择能得到的得分的期望 推式子 显然是求\(\frac{1}{n(n-1)} \sum\limits_{i=1}^n \sum\limits_{j=1}^n \phi(i*j)*dis(i,j)\) 有这样一个式子\(\phi(i*j)=\frac{\phi(i)*phi(j)*g…
传送门 简化题意:给出一棵\(n\)个点的树,编号为\(1\)到\(n\),第\(i\)个点的点权为\(a_i\),保证序列\(a_i\)是一个\(1\)到\(n\)的排列,求 \[ \frac{1}{n(n-1)} \sum\limits_{i=1}^n \sum\limits_{j=1}^n \varphi(a_ia_j) dist(i,j)\] 其中\(dist(i,j)\)为树上\(i,j\)两点的距离. 看到\(\varphi\)第一反应推式子 因为序列\(a_i\)是一个\(1\)到…
仙人掌 && 圆方树 && 虚树 总结 Part1 仙人掌 定义 仙人掌是满足以下两个限制的图: 图完全联通. 不存在一条边处在两个环中. 其中第二个限制让仙人掌的题做起来十分舒服. 仙人掌的基环DP 首先勾出一棵有根生成树. 那么树边上正常转移即可. 我们把返祖边形成的环归到环上深度最浅的点上,即环顶. 那么到环顶时,单独跑一遍关于环的\(DP\)即可. 一般写法为: void dfs(RG int u,RG int From) { dfn[u] = low[u] = +…
[CF809E]Surprise me!(动态规划,虚树,莫比乌斯反演) 题面 洛谷 CodeForces 翻译: 给定一棵\(n\)个节点的树,每个点有一个权值\(a[i]\),保证\(a[i]\)是一个\(1..n\)的排列. 求\[\frac{1}{n(n-1)}\sum_{i=1}^n\sum_{j=1}^n\varphi(a_i*a_j)·dist(i,j)\] 其中,\(\varphi(x)\)是欧拉函数,\(dist(i,j)\)表示\(i,j\)两个节点在树上的距离. 题解 神题…
题目大意 给你一棵\(n\)个点的树,每个点有权值\(a_i\),\(a\)为一个排列,求 \[ \frac{1}{n(n-1)}\sum_{i=1}^n\sum_{j=1}^n \varphi(a_ia_j)dist_{i,j} \] \(n\leq 200000\) 题解 欧拉phi函数 \[ \begin{align} ans&=\frac{1}{n(n-1)}\sum_{i=1}^n\sum_{j=1}^n \varphi(a_ia_j)dist_{i,j}\\ &=\frac{1…
题目 这是一道神仙题 看到这样一个鬼畜的柿子 \[\sum_{i=1}^n\sum_{j=1}^n\varphi(a_i\times a_j)\times dis(i,j)\] 又是树上距离又是\(\varphi\)的看起来根本就不知道怎么搞啊 首先需要知道一个这样的性质 \[\varphi(a\times b)=\frac{\varphi(a)\times \varphi(b)\times d}{\varphi(d)},d=(a,b)\] 这个性质非常显然 设\(a=p^{k_1},b=p^{…
我们要求的柿子是张这样子的: \[\frac{1}{n * (n - 1)} * \sum_{i = 1}^n\sum_{j = 1}^{n}\phi(a_i*a_j)*dis(i, j)\] 其中\(a_i\)为一个排列,\(dis(i, j)\)表示在树上的距离 这种题的套路一般是先拆柿子,但是这道题的式子-- 我们要从一个性质下手: \[\phi(a * b) = \frac{\phi(a) * \phi(b) * gcd(a, b)}{\phi(gcd(a, b))}\] 代入原式得:…
Surprise团队项目总结 项目实现情况 实现人人模式:2个用户在同一台电脑上进行切磋下棋,即实现五子棋游戏的基本功能 实现人机模式:初级模式已经实现,可以进行人机交互,但是还没达到智能判断下棋点 实现游客模式:即用户直接打开游戏界面选择游客模式,并可以进行以上2种对战模式 实现账户模式: 注册功能:用户可以注册自己的账号,进行注册时设有密码的两次校验,并且如果注册的账号已经存在则会提示注册失败. 登录功能:用户使用自己的账户进行登入,在密码正确的情况下显示登入成果,并进行游戏. 项目测试 项…
Surprise团队第四周项目总结 项目进展 这周我们小组的项目在上周的基础上进行了补充,主要注重在注册登录界面的改进优化与美观,以及关于人计算法的学习与初步实现. 我们小组针对上次APP中界面出现的错乱,以及界面的美化做了相应的改进,使得APP在使用上更加顺手.然后,我们针对游戏中APP的部分"人机对战"实现了一小部分,即"初级"人机,可以简单的与人进行对弈. 成员贡献 20145113林晶:五子棋界面的设计与优化,博客撰写. 20145221高其:五子棋人机对战…
Surprise团队第二周项目总结 项目进展 这周我们小组的项目在上周的基础上进行了补充,主要注重在注册登录界面的实现,以及关于数据库的一些学习. 在设计注册登录界面时,每一块的地方控件都不一样,比如"登录"字样就是简单的文本格式,输入账号.密码部分则要求没输入之前显示"请输入账号/密码"等字样:输完账号.密码后,点击确认能跳转到"人人模式/人机模式"部分,点击*注册,则可以跳转到注册界面,进行账号注册. 设计好界面后,则需要将其与代码块关联起来…
Surprise团队第二周项目总结 项目进展 已实现五子棋人人模式部分 人人模式: 基本方式:采取黑棋先行,黑白交替的下棋顺序. 模式:通过鼠标点击相应棋盘中的"交叉点",在layout中设计相关界面的一些控件,将界面与代码部分"关联"起来即可实现. 界面:关于界面的设置,我们项目小组找了一些图片作为背景图案,通过activity_main.xml->Design设置初始界面的一些Button控件,供用户点击选择. 算法:用户的落子点是随机的,只要是棋盘上可点…
Surprise团队第一周项目总结 团队项目 基本内容 五子棋(Gobang)的开发与应用 利用Android Studio设计一款五子棋游戏,并丰富其内涵 预期目标 实现人人模式:2个用户可以在同一台电脑上进行切磋下棋,即实现五子棋游戏的基本功能 实现人机模式:为计算机设计五子棋算法(可以考虑分为入门级和大师级),并用代码实现,效果是人可以和计算机下棋,实现人机交互 实现游客模式:即用户直接打开游戏界面选择游客模式,就可以享受游戏的乐趣了,所以满足了以上2种对战模式,基本上就解决了游客模式的难…
Row versus Set Processing, Surprise! Craig Shallahamer: 1. Set based processing will likely be much faster than row based processing. Our experiment of processing 100K rows showed row based processing was 3700 times slower than set based processing.…
Tired of boring dates, Leha and Noora decided to play a game. Leha found a tree with n vertices numbered from 1 to n. We remind you that tree is an undirected graph without cycles. Each vertex v of a tree has a number av written on it. Quite by accid…
一.使用movieLens数据集 from surprise import KNNBasic, SVD from surprise import Dataset from surprise import evaluate, print_perf # 使用公开的推荐系统数据集--MovieLens data = Dataset.load_builtin('ml-100k') # k 折交叉验证 data.split(n_folds=3) # 算法使用SVD分解 algo = SVD() # 在数据…
Surprise Surprise是scikit系列中的一个.Surprise的User Guide有详细的解释和说明 支持多种推荐算法 基础算法/baseline algorithms 基于近邻方法(协同过滤)/neighborhood methods 矩阵分解方法/matrix factorization-based (SVD, PMF, SVD++, NMF) 下面介绍几种算法 基础算法: 1. random_pred.NormalPredictor 说明:Algorithm predic…
Surprise(Simple Python Recommendation System Engine)是一款推荐系统库,是scikit系列中的一个.简单易用,同时支持多种推荐算法(基础算法.协同过滤.矩阵分解等). 设计surprise时考虑到以下目的: 让用户完美控制他们的实验.为此,特别强调 文档,试图通过指出算法的每个细节尽可能清晰和准确. 减轻数据集处理的痛苦.用户可以使用内置数据集(Movielens, Jester)和他们自己的自定义 数据集. 提供各种即用型预测算法, 例如基线算…
Let's start the built-in web server:   ./bin/console server:run Surprise! There are no commands defined in the "server" namespace. Remember: with Flex, you opt in to features. Run:   composer require server       参考:https://symfonycasts.com/scre…
一:入门 1.基本用法 (1).自动交叉验证 Surprise有一套内置的 算法和数据集供您使用.在最简单的形式中,只需几行代码即可运行交叉验证程序: from surprise import SVD from surprise import Dataset from surprise.model_selection import cross_validate # Load the movielens-100k dataset (download it if needed), # 加载movie…
1.使用预测算法 Surprise提供了一堆内置算法.所有算法都派生自AlgoBase基类,其中实现了一些关键方法(例如predict,fit和test).可以在prediction_algorithms包文档中找到可用预测算法的列表和详细信息 . 每个算法都是全局Surprise命名空间的一部分,因此您只需要从Surprise包中导入它们的名称,例如: from surprise import KNNBasic algo = KNNBasic() 这些算法中的一些可以使用基线估计,一些可以使用…
1.基础 创建自己的预测算法非常简单:算法只不过是一个派生自AlgoBase具有estimate 方法的类.这是该方法调用的predict()方法.它接受内部用户ID,内部项ID,并返回估计评级r from surprise import AlgoBase from surprise import Dataset from surprise.model_selection import cross_validate class MyOwnAlgorithm(AlgoBase): def __in…
自动交叉使用法 #-*- coding:utf-8 -*- from surprise import SVD from surprise import Dataset from surprise.model_selection import cross_validate data = Dataset.load_builtin('ml-100k') # 默认载入movielens数据集 algo = SVD() cross_validate(algo, data, measures=['RMSE'…
pip安装 安装之前要先进行numpy的安装 pip install numpy pip install surprise 安装出错: 安装surprise需要Microsoft visual c++ 14.0编译,所以需要安装. 下载地址 链接:https://pan.baidu.com/s/1sDn0KJxcT2DBecR_-rH30w 提取码:9c5q 安装完后之后打开cmd 再次输入:pip install surprise 就可以了!…
Surprise(Simple Python Recommendation System Engine)是一款推荐系统库,是scikit系列中的一个.简单易用,同时支持多种推荐算法.基础算法.协同过滤.矩阵分解等 Surprise使用 Surprise里有自带的Movielens数据集. 1.载入自带数据集 from surprise import Dataset,evaluate,print_perf #默认载入movielens数据集 data=Dataset.load_builtin('m…
Description 给定一颗 \(n\) 个顶点的树,顶点 \(i\) 的权值为 \(a_i\).求: \[\frac{1}{n(n-1)}\sum_{i=1}^n\sum_{j=1}^n\varphi(a_i\times a_j)\times\text{dist}(i, j) \] 其中 \(a\) 为一个 \(1\sim n\) 的排列. Hint \(1\le n\le 2\times 10^5\) Solution 据说是套路题 然而我不会这个套路于是我觉得是神题 开一个 blog…
洛谷 Codeforces 非常套路的一道题,很适合我在陷入低谷时提升信心-- 思路 显然我们需要大力推式子. 设\(p_{a_i}=i\),则有 \[ \begin{align*} n(n-1)ans&=\sum_i \sum_j \varphi(ij)dis(p_i,p_j)\\ &=\sum_i \sum_j \frac{\varphi(i)\varphi(j)\gcd(i,j)}{\varphi(\gcd(i,j))} dis(i,j)\\ &=\sum_d \frac{d…
题目链接 \(Description\) 给定一棵树,求\[\frac{1}{n(n-1)/2}\times\sum_{i\in[1,n],j\in[1,n],i\neq j}\varphi(a_i\times a_j)\times dis(i,j)\ \ \ \ (mod\ 10^9+7)\] 其中\(a_i\)是\([1,n]\)的一个排列,两两不同. \(Solution\) 前面直接最后乘逆元就可以.看后面的\(\sum\)怎么化. 要想办法把\(\varphi(a_i\times a_…
前言 本文的灵感是在几个月以前工作不忙(摸鱼)时想到的,老是自己一个人往前冲冲冲也没啥意思,需要想一点办法,来提高团队的效率,提高团队的幸福感(效率起来了,单位时间内代码写的更多,那不就幸福啦 ),经过几个月的摸索,总结出了几个小点,如果大家有更好的方式,欢迎一起讨论~ 永久解决不知道是什么版本 我司的产品主要分为Saas端和私有平台,分别部署在公网和客户的私有环境,先来说说私有环境的问题:不知道真正部署的项目版本,说来很可笑,运维同学在部署的时候肯定是记录过各个客户的代码版本的,但也就是这么可…
Codeforces 题目传送门 & 洛谷题目传送门 1A,就 nm 爽( 首先此题一个很棘手的地方在于贡献的计算式中涉及 \(\varphi(a_ia_j)\),而这东西与 \(i,j\) 都有关,无法拆开来计算,因此无法独立考虑 \(i,j\) 的贡献.因此我们要想方设法把这里面的 \(a_ia_j\) 拆开来,我们考虑探究 \(\varphi(a_ia_j)\) 与 \(\varphi(a_i),\varphi(a_j)\) 有什么关系,很容易发现一个性质,那就是 \(\varphi(a_…