JZOJ5787轨道(容斥+DP)
JZOJ5787轨道
Description
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAAA/CAYAAACLpmToAAADUElEQVR4nO2aAZKjIBBFO1t7GvA4g3sc5TgLOY54HZYGTQzqTGJiCyuvytSMASv1aZvmw8U6oLArv47+AWegiExAEZmAIjIBRWQCisgEFJEJKCITUEQmoIhMQFYi6/oCl8vkqrW7a0DW0n3GbWrQ6w+6PaOSZq3V57A5oAT6KxZ4a7uF+7ztFtpzG9/2dK3l+CwQVu34k6ekL/IgpFhRpGv57DslYEXkzraCe5FnA7MjaacLI6HClCAUOOFWYMDZ9H8NPW9BuARi+vhxErAxJgjG+C4/eRGy4dxAiMgXX2sX+UIpK+Lod2lCuOjFyKdMFUjCkWygx0jkHFh0X1bRBDiZ5DQGvmDYzfU39z4uiJsG4KoNNoDVF2MPCAf0RUI0wloyXpz0XJ+hvX8Lhr+7VoT8PEx6a4/ci4Qj+XuMD3PhonOSW0MYRw0lSGgAm5mrdjEtZk12h3ZMX+PbKoHPo1yJe671uZe7/CzuZd80uilJWuRbyognqsXX3rWd1tFxrTz0oSzdRhIXORAiOromgoaKYfxuGJChmljsTxzNF/wgzlCnI9uJLyeKyARsF/nmZFUwNbK8C1av+l+nZLvIQrlJU3mPQF/N5LaaraZmFmV8/eeD8vu97qGwr70TMywKdDB0HlopC2eeXd8UGYChSaB772xxdM20gE792O1HMMIp2bPIenvi42y0bzTUfwD+LniSW9KFDTU82bUrb1fa464FsX34HOOK8ZiV3shnSjjeQmfnE97RGNm7obd+gmatXN/z25nTrPh0XUHfdNAQboiMnGcxwgV8HSAwcg6R3cJJswYO0vj9Ei55cGXqykr7gbJyM4dNuQQ8WqD0204jp5n4juQcOflgisgEFJEJyF5kIyvvf9zsj8HnJjmt+STZlnBoOt19JR7Ow6HACXrT2Uay96hHvwRXcxBsVutdQA7iqOXdAtlGssf04LcLBIOr7Aeb1QmdWFGabSQj4dgVB2a0P02YTuw+krHIJpzQRGV5c4i79iz5pgtzBe0LCAaiS1hhyDiSQ6pY3h1PjWxF7o2XmP4Y7AYyFVn7kwfkJ+Y3kqfITuGgcQ4Sn2iP70jyjOTMKCITUEQmoIhMQBGZgCIyAUVkAorIBBSRCSgiE/APv6fMR0YR1y0AAAAASUVORK5CYII=" alt=" " />
就在这个时候,他想到了一个跟这个差不多的问题,那就是对于以下公式:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAALMAAABECAYAAADKgwRSAAAD5klEQVR4nO2dAXKrIBCG1zc9jXic4DtO8DgPchzxOjwgmqZprDWBKJv/m+l0EtOuhC+wi9hWzkMAMODP1icAQCogM2ADZAZsgMyADZAZsAEyAzZAZsAGyAzYAJkBGyAzYANkBmyAzIANkBmwATIDNry1zKatqGpN8TG3aMceeUOZLXXNufNrIUiI+ixD0/kjJcXcoh07x70l2knfdLp8Sf9MiTG3aMd+ecORGbBl60/T6+mdEn4Uk9r1SjiheqelfyyUP1JSzC3asW/Kl1nLm2l27GQSTi30aux8uWJifiLWwzFz/M4E7dgjBct8rwO0U1I6QalHqFfGygmXdtynUJmnwud7wRNHKX9MJBtiXhkrJ1zaMU+RBaBpWwqrqlJrkndfIUgeRHGxcsKlHT+y9adpNVO+dzdHHKfRVNPlK2PlhEs7FihM5oVCpVcx9ztPl9NrH117XRMr8Lnmu366vhVq6XHOdpRLWTKPb/xcp0653+cAFDryQZlXxuqVGuMEqXd08WL1e1YuRckc1lNnR77LctO1SI/LvD7W9eH9LHGtbkeUPzw+zzQljdhFFoDfsB013UCxfJFypsB5YSwhafe11Gw7DiR9XjK0JihNtR02O8W1FCWzqOv43aqOpj1itmuo+kt0lBQ32EjfMaZtqHtyt83DsUxLpj7SXlxe3Q7h5TWGrNQk/fdB1Fud+nq2nhrWMk2bdFNsXT+fJGdeHcudp+0dJp+r2uHbMB3Xcke5/y9IJ/Ml//qaL+a4fPv7Uxo78AXLTrfC7NDpX/Ep8Lg6U9CSXeKR+V7R4J+76dmLZHNfpZoANuUjbdIiQy1BbSwaxqzR511ezq+v0o7wF85BahLLTPGuBzJDLCxEqJiNpF4v/tgiVVU9/0vAw7gC/sFCcpmn6tkbTa2vmP/13xevwu09P96y5kfykItcU8KbCbalcqktMe14c6Uk7eY2tQCQnjzrzEJRD5HBi0k/MgOwEUVdAQTgJyBzVnwRXFVxJaZ59vo6WAQyZ2UqghncxVEAkDk3dqChhF10DIDMmbEnQ7aud7OLjjOQOSuWTsbGLZZx//CYPyOHzkPyK4DgCnsiY2XcN0xUUy019Rqr77nAOnNGwib4xh7JHQdqGktHXEjKCkbmjAzWni/vx30o0Dg3yJmzYcgYQap35HrlC8DBy731OfEGMufCeJmnJTlxICksmVOw2VLX4a/c5wAyZ8J4mYU8jEtygg5SkFUNVeFO0gNSjhygAARswMgM2ACZARsgM2ADZAZsgMyADZAZsAEyAzZAZsAGyAzYAJkBGyAzYANkBmyAzIANkBmwATIDNkBmwIb/tzM3QIEAYCwAAAAASUVORK5CYII=" alt=" " />
已知n和k,求这n个正整数在都不大于m的情况下有多少种选择方式,使得v为与k互质正整数?
Input
Output
Data Constraint
对于20%的数据 1<=n,m<=8 k<=100
对于40%的数据 1<=n<=50 1<=m<=10^6 1<=k<=10^4
对于70%的数据 1<=n<=100 1<=m<=10^9 1<=k<=10^7
对于100%的数据 1<=n<=3000 1<=m<=10^9 1<=k<=10^7
题解
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<vector>
#define MOD 10007
using namespace std;
int n,m,k,fac[],kpri[],fsf[][],mp[];
int m1,sum;
int dp[][];
void dfs(int cnt,int p_m,int assemble)
{
if(cnt>kpri[]) {sum+=m1/assemble*p_m;return;}
dfs(cnt+,p_m,assemble);
dfs(cnt+,-p_m,assemble*kpri[cnt]);
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
int sqtk=sqrt(k);
for(int i=;i<=sqtk;i++)
if(k%i==)
{
fac[++fac[]]=i;
if(k/i>sqtk) fac[++fac[]]=k/i;
}
sort(fac+,fac++fac[]);
int tmp=k;
for(int i=;i<=sqtk;i++)
{
if(tmp==) break;
if(tmp%i==)
{
kpri[++kpri[]]=i;
while(tmp%i==) tmp/=i;
}
}
if(tmp!=) kpri[++kpri[]]=tmp;
sort(kpri+,kpri++kpri[]);
for(int i=;i<=fac[];i++)
{
mp[fac[i]]=i;
sum=,m1=m/fac[i];
dfs(,,);
dp[][i]=sum%MOD;
}
for(int i=;i<=fac[];i++){
cout<<dp[][i]<<" ";
}
cout<<endl;
for(int i=;i<=fac[];i++)
for(int j=;j<=i;j++)
if(fac[i]%fac[j]==) fsf[i][++fsf[i][]]=j;
for(int i=;i<=n;i++)
for(int j=;j<=fac[];j++)
{
if(fsf[j][]==) continue;
for(int k=;k<=fsf[j][];k++)
(dp[i][j]+=dp[i-][fsf[j][k]]*dp[][mp[fac[j]/fac[fsf[j][k]]]])%=MOD;
}
printf("%d\n",dp[n][fac[]]);
return ;
}
JZOJ5787轨道(容斥+DP)的更多相关文章
- HDU 5794 A Simple Chess (容斥+DP+Lucas)
A Simple Chess 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5794 Description There is a n×m board ...
- [CF1086E]Beautiful Matrix(容斥+DP+树状数组)
给一个n*n的矩阵,保证:(1)每行都是一个排列 (2)每行每个位置和上一行对应位置不同.求这个矩阵在所有合法矩阵中字典序排第几.考虑类似数位DP的做法,枚举第几行开始不卡限制,那么显然之前的行都和题 ...
- 【BZOJ3622】已经没有什么好害怕的了 容斥+DP
[BZOJ3622]已经没有什么好害怕的了 Description Input Output Sample Input 4 2 5 35 15 45 40 20 10 30 Sample Output ...
- $bzoj2560$ 串珠子 容斥+$dp$
正解:容斥+$dp$ 解题报告: 传送门$QwQ$ $umm$虽然题目蛮简练的了但还是有点难理解,,,我再抽象一点儿,就说有$n$个点,点$i$和点$j$之间有$a_{i,j}$条无向边可以连,问有多 ...
- 【XSY3156】简单计数II 容斥 DP
题目大意 定义一个序列的权值为:把所有相邻的相同的数合并为一个集合后,所有集合的大小的乘积. 特别的,第一个数和最后一个数是相邻的. 现在你有 \(n\) 种数,第 \(i\) 种有 \(c_i\) ...
- bzoj3782上学路线(Lucas+CRT+容斥DP+组合计数)
传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3782 有部分分的传送门:https://www.luogu.org/problemnew/ ...
- AGC 005D.~K Perm Counting(容斥 DP 二分图)
题目链接 \(Description\) 给定\(n,k\),求 满足对于所有\(i\),\(|a_i-i|\neq k\)的排列的个数. \(2\leq n\leq 2000,\quad 1\leq ...
- ARC 101E.Ribbons on Tree(容斥 DP 树形背包)
题目链接 \(Description\) 给定一棵\(n\)个点的树.将这\(n\)个点两两配对,并对每一对点的最短路径染色.求有多少种配对方案使得所有边都至少被染色一次. \(n\leq5000\) ...
- 【做题】51NOD1518 稳定多米诺覆盖——容斥&dp
题意:求有多少种方案,用多米诺骨牌覆盖一个\(n\times m\)的棋盘,满足任意一对相邻行和列都至少有一个骨牌横跨.对\(10^9+7\)取模. \(n,m \leq 16\) 首先,这个问题的约 ...
随机推荐
- LeetCode Golang 5. 最长回文子串
5. 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab&quo ...
- jsp+jdbc实现用户登录
1.1 创建数据库表 表名:user 字段: userid 保存用户的登录id name 用户名 password 密码 1.2 实现思路 a. 用户登录,则需要有个一个表单页,此页面可输 ...
- v-model指令后面跟的参数(number、lazy、debounce)
1. number 想将用户的输入自动转换为Number类型(如果原值的转换结果为NaN, 则返回原值) 2. lazy 在默认情况下, v-model在input事件中同步输入框的值和数据, 我们可 ...
- SA 学习笔记
后缀数组是解决字符串问题的有力工具--罗穗骞 后缀数组是对字符串的后缀排序的一个工具, sa将排名为i的字符串的开头位置记录下来, rnk将开头位置为i的字符串的排名记录下来. https://www ...
- centos7最小化安装Oracle11gR2
1.准备CentOS 7 系统环境 我以 CentOS-7-x86_64-DVD-1511.iso 为例,简述Oracle 11g的安装过程. 由于是使用静默模式(silent)安装的,无需使用图形化 ...
- linux软链接与硬链接详解
软连接 命令: ln -s 原文件 目标文件 特征: 1.相当于windows的快捷方式 2.只是一个符号连接,所以软连接文件大小都很小 3.当运行软连接的时候,会根据连接指向找到真正的文件,然后执行 ...
- layui select change
<select lay-filter="test"></select> layui.use([ 'form'], function() { var form ...
- JavaScript 实现留言框
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- React 中的 refs的应用
React Refs React 支持一种非常特殊的属性 Ref ,你可以用来绑定到 render() 输出的任何组件上. 这个特殊的属性允许你引用 render() 返回的相应的支撑实例( back ...
- spring boot启动原理步骤分析
spring boot最重要的三个文件:1.启动类 2.pom.xml 3.application.yml配置文件 一.启动类->main方法 spring boot启动原理步骤分析 1.spr ...