【莫队算法】[HDU5145]NPY and girls

STM32F103学习笔记(三)-STM32F103的存储器、供电 根据最低电源消耗,最快速启动时间和可用的唤醒源的需求,选取一个最佳的折中方案来帮助用户选定一个低功耗模式。在系统复位后, SYSCLK的第4个上升沿, BOOT管脚的值将被锁存。STM32是32位CPU,数据总线是32位的,地址总线也是32位的。对0x22006008地址的写操作和对SRAM中地址0x20000300字节的位2执行读-改-写操作有着相同的效果。Byte),但是其肯定用不完4GB的空间的,所以就有了:逻辑上的地址、实际的地址。启动模式,是研究STM32复位后从哪里去执行程序的问题。 阅读详情

题目
题目大意:求区间内可重复全排列的个数
分析:如果S是一个多重集,它有K个不同的类型元素,各元素分别为n1,n2,…,nk个,那么,S的r排列个数为n! / (n1!n2!…*nr!)。
所以当我们知道区间[l,r]的答案求[l,r+1]的答案时,ans[l][r+1]=ans[l][r]*((r+1)-l+1)/cnt[a[r+1]];
由于模运算不支持除法,可以用乘以这个数的逆元来代替除法。
同时因为MOD是质数,可以用费马小定理快速求乘法逆元。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
#define MAXN 30000
#define MOD 1000000007
int n,m,block[MAXN+10],inv[MAXN+10],T,cnt[MAXN+10],ansq[MAXN+10],a[MAXN+10];
void Read(int &x){
    char c;
    while(c=getchar(),c!=EOF)
        if(c>='0'&&c<='9'){
            x=c-'0';
            while(c=getchar(),c>='0'&&c<='9')
                x=x*10+c-'0';
            ungetc(c,stdin);
            return;
        }
}
struct node{
    int l,r,pos;
    bool operator<(const node &x)const{
        if(block[l]==block[x.l])
            return r<x.r;
        return block[l]<block[x.l];
    }
}query[MAXN+10];
int quick_pow(int a,int b){
    int ret=1;
    while(b){
        if(b&1)
            ret=1ll*ret*a%MOD;
        a=1ll*a*a%MOD;
        b>>=1;
    }
    return ret;
}
void prepare(){
    for(int i=1;i<=MAXN;i++)
        inv[i]=quick_pow(i,MOD-2);
}
void init(){
    Read(n),Read(m);
    int i,t=sqrt(n+0.5);
    for(i=1;i<=n;i++){
        block[i]=(i+t-1)/t;
        Read(a[i]);
    }
    node *p;
    for(i=1;i<=m;i++){
        p=&query[i];
        Read(p->l),Read(p->r);
        p->pos=i;
    }
    sort(query+1,query+m+1);
}
void solve(){
    int i,l=1,r=0,ans=1;
    node *p;
    for(i=1;i<=m;i++){
        p=&query[i];
        while(r<p->r){
            cnt[a[++r]]++;
            ans=1ll*ans*(r-l+1)%MOD*inv[cnt[a[r]]]%MOD;
        }
        while(r>p->r){
            ans=1ll*ans*inv[r-l+1]%MOD*cnt[a[r]]%MOD;
            cnt[a[r--]]--;
        }
        while(l>p->l){
            cnt[a[--l]]++;
            ans=1ll*ans*(r-l+1)%MOD*inv[cnt[a[l]]]%MOD;
        }
        while(l<p->l){
            ans=1ll*ans*inv[r-l+1]%MOD*cnt[a[l]]%MOD;
            cnt[a[l++]]--;
        }
        ansq[p->pos]=ans;
    }
}
void print(){
    for(int i=1;i<=m;i++)
        printf("%d\n",ansq[i]);
}
int main()
{
    prepare();
    Read(T);
    while(T--){
        memset(cnt,0,sizeof cnt);
        init();
        solve();
        print();
    }
}
STM32 SRAM存储器访问指南及实践 本文还有配套的精品资源,点击获取 简介:SRAM是嵌入式系统中用于临时存储数据的高速缓存存储器,STM32微控制器系列内置不同容量的SRAM。本文详细介绍了在STM32 F103环境下访问SRAM存储器的步骤,包括内存布局理解、时钟初始化、栈指针设置、数据存取、中断服务、DMA传输以及库函数支持等关键操作。同时强调了异常处理和内存访问的安全性问题。掌握这些技术要点对于开发高... 阅读详情

相关推荐

FreeRTOS CLI实战:5分钟搞定GD32串口终端移植(附LED控制源码)

本文详细介绍了如何在GD32芯片上快速移植FreeRTOS CLI(Command Line Interface)终端,实现串口交互式调试。通过DMA+空闲中断配置和LED控制命令实战,开发者可在5分钟内构建高效嵌入式调试工具,显著提升现场维护效率。

weixin_28707365的博客 450

STM32F103芯片FSMC使用外扩SRAM芯片

为什么可以利用FSMC来使用外部RAM呢,首先了解一下STM32里的FSMC。大容量且引脚数在100脚以上的STM32F103芯片都带有FSMC接口。FSMC是灵活的静态存储控制器,能够与同步或异步存储器和16位PC存储器卡接口,STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器。 EMI502NL16VM这个2M字节容量的SRAM芯片。可用于配置FSMC,利用FSMC来操作外部SRAM。在选择存储器类型时就选择SRAM。地址总线和数据总线是分开的,所以配

EVERSPIN的博客 2017

华为使用MicroG安装并使用Google服务教程

鉴于众多华为手机用户因无法使用Google服务而感到不便,我经过多次摸索和测试,总结了一份简单易懂的教程,希望能够帮助到大家。无论是需要使用Google Play商店下载应用,还是需要使用Google服务进行工作和学习,本文将详细介绍如何在华为手机上安装并使用Google服务。二、前置条件软件要求:Aurora Store(替代Google Play商店)、MicroG Companion、MicroG Server(替代Google框架)

weixin_41926602的博客 3万+

STM32F103ZE SRAM当成扩展内存使用

STM32F103ZET6,板子上有一块SRAM,这个RAM是128*16Kbit,就是256kb的, 想给程序加个RAM,本来板载就是64KB的完全不够用,FLASH 512KB 其实很简单,只要在程序中做以下几步即可。 1.首先要加个宏: DATA_IN_ExtSRAM 2. 把你的RAM地址写入: 3. start*.s里面找到 __initial_sp 把它改成...

supperThomas的专栏 2419

使用相对路径设置IAR的Additional include directories 以及 $PROJ_DIR$ 的用法

新建IAR工程时免不了要导入工程用到的头文件,那么导入头文时是用相对路径还是绝对路径呢?当然是相对路径了,因为绝对路径会有弊端,那就是,如果将来更换了工程放置的路径,那么这个相对路径就凉凉了,编译必然报错。所以最好还是用相对路径,那么相对路径怎么用呢? 请看以下 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 版权声明 本博文系广州欧科曼科技有限公司所有,转载请注明出处。 广州欧科曼科技有限公司致力于瑞萨MCU及周边相关产品开发设计。 ema

announced1的博客 5391

第一届“龙信杯”电子数据取证竞赛Writeup

第一届“龙信杯”电子数据取证竞赛Writeup

toto的博客 1万+

STM32F1_外部SRAM作为运行内存

推荐 分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang 我的网站:https://www.strongerhuang.com 我的知乎:https://www.zhihu.com/people/strongerHuang.com 前言 今天...

strongerHuang 2万+

Ubuntu22.04+PX4+Gazebo:从零到一构建无人机仿真开发环境

本文详细介绍了在Ubuntu22.04系统下搭建PX4+Gazebo无人机仿真开发环境的完整流程。从基础环境配置、PX4固件安装到Gazebo仿真环境搭建,提供了实用命令和常见问题解决方案,帮助开发者快速构建高效的无人机开发环境。

weixin_29243279的博客 435

HDU - 5145 NPY and girls 莫队算法+逆元

题目链接:https://cn.vjudge.net/problem/HDU-5145 题意:区间[l, r] 内的数全排列能得到多少种不同的排列 题解:假设sum是当前的数量,再加上一个就是乘上sum+1,乘上这个数+1 的数量的逆元,减去一个是乘上sum的逆元,乘上这个数的数量 #include<bits/stdc++.h> using namespace std; typ...

还我笑颜 223

CloudCompare里那个CSF地面滤波插件,到底怎么用?手把手教你分离点云里的地面

本文详细介绍了如何在CloudCompare中使用CSF地面滤波插件分离点云中的地面数据。通过解析布料模拟滤波算法的核心参数,如布料刚度和网格分辨率,并提供不同地形(城市、丘陵、山地)的适配策略,帮助用户高效处理复杂点云数据。文章还包含实战案例和优化技巧,确保滤波结果的精度和可靠性。

weixin_42548708的博客 221

FPGA学习笔记(一)入门背景、软件及时钟约束的概念及程序下载与固化

使用正点原子的PFPGA开拓者V2学习,通过b站上正点原子的手把手教你学FPGA-基于开拓者V2学习。

贾saisai的博客 3280

hdu 5145 NPY and girls && 莫队算法 && 逆元处理

题意:询问区间的的全排列 题解: 1. 公式很简单就能推出来 2. 莫队算法来做这个题很好,先发一个莫队算法的学习链接 3. 然后就逆元处理就出来了 #include #include #include #include using namespace std; typedef long long LL; #define MAXN 30005 #define MAXM 150 #defi

c337134154的专栏 815

泛微OA集成阿里云短信(E9保姆教程)

泛微OA集成阿里云短信(E9保姆教程)

技术分享 515

NPY and girls-HDU5145莫队算法

Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem DescriptionNPY’s girlfriend blew him out!His honey doesn’t love him any more!However, he has so many girlfr

绝尘 1618

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

NPY and girls (HDU - 5145,莫队算法 + 乘法逆元)

一.题目链接: HDU-5145 二.题目大意: NPY 要在 n 个女朋友里面选取一个去约会,有些女朋友可能会同班. 女朋友编号为 1 ~ n. 为了不引起矛盾,NPY 在一个班里只会选取一名女朋友去约会. 问在第 i ~ j 个女朋友之间选择,有多少种选法(考虑顺序不同,最终答案 % 1000000007). 三.分析: 先来看选法如何计算 假设在第 i ~ j 中选取,则...

The___Flash的博客 350

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

hdu 5145 NPY and girls (莫队算法)

题意:有一个长度为n的数字序列,m次询问一个区间l-r中数字重新排列的方案数(mod 10^9+7)。             明显的莫队算法,只需要排序,然后预处理一下逆元就可以了。             所谓的莫队算法,最初版本是求曼哈顿距离最小生成树的。但是现在一般是分块排序,这样就可以做到n*sqrt(n)的复杂度,对于这个可以大概yy一下。如果对于每个区间可以O(1)的扩展区间的话

ok_again的专栏 1101

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

HDU 5145 NPY and girls (莫队算法)

题目: LINK 题目给定一个长度为n的序列,给出m个查询,[L,R],求区间内重排的个数。计算很简单 (R - L -1)! / (II 每个相同数字个数的阶乘) 即使裸着排序,递推会TLE。 可以使用莫队算法,分块的写法比较简单。 这样写就是分块,每一块的大小为sqrt(n),L按照块号排序,之后按照R排序。之后的写法和之前写的一样。 我自己估算的这样搞的复杂度约为 O(m*sqrt

Napoleon 1082

hdu5145 NPY and girls 莫队算法,分块

莫队算法可以离线解决区间查询的问题,dp[i][j]可以O(1)得到dp[i+1][j]或dp[i][j+1],将l分为sqrt(l)块,按照块排序,再按照r排序,理论复杂度nsqrt(n); #include #include #include #include #include #include #include #include #include #include #include #in

Every day 633

Hdu5145NPY and girls莫队算法

Problem Description NPY's girlfriend blew him out!His honey doesn't love him any more!However, he has so many girlfriend candidates.Because there are too many girls and for the convenience of managem...

weixin_30633949的博客 134

HDU 5145 NPY and girls 莫队算法

对于这类区间查询的问题,如果可以用O(1)的复杂度推到一个曼哈顿距离为1的另外区间的话,就可以直接用莫队算法搞。 从网上搜到的有两种搞法。第一种是先建立曼哈顿距离最小生成树,然后直接dfs遍历整棵树来求解的。 还有一种是先分块,然后把查询按照块的编号为第一关键字,右边界为第二关键字排序,排序直接直接暴力转移。 这样做的复杂度是n * sqrt(n),后面那个sqrt(n)取决于是怎么分块的。...

weixin_30367543的博客 105

HDU5145:5145 ( NPY and girls ) (莫队算法+排列组合+逆元)

传送门 题意 给出n个数,m次访问,每次询问[L,R]的数有多少种排列 分析 \(n,m<=30000\),我们采用莫队算法,关键在于区间如何\(O(1)\)转移,由排列组合知识得到,如果加入一个数,\(区间值*区间长度/该数出现次数\),减去一个数则相反操作讲解 trick 1.我的原先莫队写法不能ac,原因是我传入的L,R是全局变量,在insert和erase前就++,--了,...

anquan1533的博客 347

hdu_5145_NPY and girls(莫队算法+组合)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5145 题意:给你n,m,共有n个女孩,标号为1—n,n个数xi表示第ith个女孩在第xi个教室,然后下面有m个询问,每个询问有l,r两个数,表示要去找编号为l到r的女孩,每进一次教室只能找一个女孩,问有多少种组合方式,不同的组合方式定义为去教室的顺序不同。 题解:这题是离线的,很容易想到用莫队分块

bin_gege的博客 405

hdu 5145 NPY and girls(排列组合+莫队算法)

NPY and girls Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 792    Accepted Submission(s): 281 Problem Description NPY's girlfrie

TUT我好菜啊 951

HDU 5145 NPY and girls(莫队算法+乘法逆元)

【题目链接】http://acm.hdu.edu.cn/showproblem.php?pid=5145 【题目大意】   给出一个数列,每次求一个区间数字的非重排列数量。答案对1e9+7取模。 【题解】   我们发现每次往里加入一个新的数字或者减去一个新的数字,前后的排列数目是可以通过乘除转移的,所以自然想到用莫队算法处理。因为答案要求取模,所以在用除法的时候要计算逆...

weixin_30467087的博客 142
上一篇: 【动态树LCT】[SDOI2008]洞穴勘测
下一篇: 【莫队算法】[HDU5213]Lucky
outer_form
博客等级 码龄11年 110粉丝 170原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值