P10185 [YDOI R1] Necklace

news2024/10/6 13:07:26

[YDOI R1] Necklace - 洛谷

因为是方案数求和

我们考虑计算每种珠子单独贡献的方案数有

\sum_{i=1}^{n}2^{sum-a[i]}*\binom{a[i]}{x}*v^{x}

因为有二项式定理

(a+b)^{n}=\sum_{i=0}^{n}\binom{n}{i}*a^{i}*b^{n-i}

构造

\sum_{i=1}^{n}2^{sum-a[i]}*\binom{a[i]}{x}*v^{x}*1^{a[i]-x}

因为n不取0,便有

\sum_{i=1}^{n}2^{sum-a[i]}*((v+1)^{a[i]}-1)

时间复杂度O(nlogs)

modint + qmi code

#include <bits/stdc++.h>

#define INF (1ll<<60)
#define eps 1e-6
using namespace std;
typedef long long ll;
typedef long long LL;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef unsigned long long ull;
typedef vector<vector<int> > vii;
typedef vector<vector<vector<int> > > viii;
typedef vector<ll> vl;
typedef vector<vector<ll> > vll;
typedef vector<double> vd;
typedef vector<vector<double> > vdd;
#define time mt19937_64 rnd(chrono::steady_clock::now().time_since_epoch().count());//稳定随机卡牛魔 ull
const int mod=1e9+7;
template<class T>
constexpr T power(T a, LL b) {
    T res = 1;
    for (; b; b /= 2, a *= a) {
        if (b % 2) {
            res *= a;
        }
    }
    return res;
}

template<int P>
struct MInt {
    int x;
    constexpr MInt() : x{} {}
    constexpr MInt(LL x) : x{norm(x % getMod())} {}

    static int Mod;
    constexpr static int getMod() {
        if (P > 0) {
            return P;
        } else {
            return Mod;
        }
    }
    constexpr static void setMod(int Mod_) {
        Mod = Mod_;
    }
    constexpr int norm(int x) const {
        if (x < 0) {
            x += getMod();
        }
        if (x >= getMod()) {
            x -= getMod();
        }
        return x;
    }
    constexpr int val() const {
        return x;
    }
    explicit constexpr operator int() const {
        return x;
    }
    constexpr MInt operator-() const {
        MInt res;
        res.x = norm(getMod() - x);
        return res;
    }
    constexpr MInt inv() const {
        assert(x != 0);
        return power(*this, getMod() - 2);
    }
    constexpr MInt &operator*=(MInt rhs) & {
        x = 1LL * x * rhs.x % getMod();
        return *this;
    }
    constexpr MInt &operator+=(MInt rhs) & {
        x = norm(x + rhs.x);
        return *this;
    }
    constexpr MInt &operator-=(MInt rhs) & {
        x = norm(x - rhs.x);
        return *this;
    }
    constexpr MInt &operator/=(MInt rhs) & {
        return *this *= rhs.inv();
    }
    friend constexpr MInt operator*(MInt lhs, MInt rhs) {
        MInt res = lhs;
        res *= rhs;
        return res;
    }
    friend constexpr MInt operator+(MInt lhs, MInt rhs) {
        MInt res = lhs;
        res += rhs;
        return res;
    }
    friend constexpr MInt operator-(MInt lhs, MInt rhs) {
        MInt res = lhs;
        res -= rhs;
        return res;
    }
    friend constexpr MInt operator/(MInt lhs, MInt rhs) {
        MInt res = lhs;
        res /= rhs;
        return res;
    }
    friend constexpr std::istream &operator>>(std::istream &is, MInt &a) {
        LL v;
        is >> v;
        a = MInt(v);
        return is;
    }
    friend constexpr std::ostream &operator<<(std::ostream &os, const MInt &a) {
        return os << a.val();
    }
    friend constexpr bool operator==(MInt lhs, MInt rhs) {
        return lhs.val() == rhs.val();
    }
    friend constexpr bool operator!=(MInt lhs, MInt rhs) {
        return lhs.val() != rhs.val();
    }
};

template<>
int MInt<0>::Mod = 1e9 + 7;

template<int V, int P>
constexpr MInt<P> CInv = MInt<P>(V).inv();

constexpr int P = 1e9 + 7;
using Z = MInt<P>;

const int N=2e5+9;

Z inv[N],f[N],invf[N];

//组合数
void init(){
    inv[1]=1;
    for(int i=2;i<N;i++){
        inv[i]=inv[mod%i]*(mod-mod/i);
    }
    f[0]=1,invf[0]=1;
    for(int i=1;i<N;i++){
        f[i]=f[i-1]*i;
        invf[i]=invf[i-1]*inv[i];
    }
}
Z C(ll n,ll m){
    if(n<m || m<0){
        return 0;
    }
    return f[n]*invf[m]*invf[n-m];
}
Z qmi(Z a,ll b){
    Z res=1;
    while(b){
        if(b&1){
            res=res*a;
        }
        b>>=1;
        a=a*a;
    }
    return res;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    int n;
    cin>>n;
    vi a(n+1);
    ll sum=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        sum+=a[i];
    }
    vi v(n+1);
    for(int i=1;i<=n;i++){
        cin>>v[i];
    }
    Z ans=0;
    for(int i=1;i<=n;i++){
        ans+=qmi(2,sum-a[i])*(qmi(v[i]+1,a[i])-1);
    }
    cout<<ans<<'\n';
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2191954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hive数仓操作(十七)

一、Hive的存储 一、Hive 四种存储格式 在 Hive 中&#xff0c;支持四种主要的数据存储格式&#xff0c;每种格式有其特点和适用场景&#xff0c;不过一般只会使用Text 和 ORC &#xff1a; 1. Text 说明&#xff1a;Hive 的默认存储格式。存储方式&#xff1a;行存储。优点…

Leetcode—763. 划分字母区间【中等】

2024每日刷题&#xff08;175&#xff09; Leetcode—763. 划分字母区间 C实现代码 class Solution { public:vector<int> partitionLabels(string s) {int rightmost[26];int l 0;int r 0;for(int i 0; i < s.length(); i) {rightmost[s[i] - a] i;}vector<…

强化学习笔记之【DDPG算法】

强化学习笔记之【DDPG算法】 文章目录 强化学习笔记之【DDPG算法】前言&#xff1a;原论文伪代码DDPG算法DDPG 中的四个网络代码核心更新公式 前言&#xff1a; 本文为强化学习笔记第二篇&#xff0c;第一篇讲的是Q-learning和DQN 就是因为DDPG引入了Actor-Critic模型&#x…

虚拟电厂可视化:智能能源管理新时代

通过图扑可视化技术&#xff0c;全方位展示虚拟电厂的运行状态&#xff0c;优化能源生产与消耗&#xff0c;提高电网效率和稳定性&#xff0c;实现智能能源管理。

第十一篇——鸡兔同笼:方程这个数学工具为什么很强大?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 数学的伟大思想&#xff1b;不仅仅是我们解决了某一个具体问题&#xff1…

TIBCO Jaspersoft Studio 创建数据源并进行测试

1、连接数据源&#xff1a; 右键Data Adapters &#xff0c;然后新建 根自己的情况&#xff0c;进行创建&#xff0c;这里测试用的是excel表格。 2、新建Jasper Report&#xff0c;然后我们选择刚刚创建的数据源 这样report就建好了&#xff0c;然后我们进行测试。 3、先把不…

永旺梦乐城盛大开业,3300个停车位的智慧运营管理系统上线!

长沙首家&#xff01; 永旺梦乐城 9月12日正式开业&#xff01; 这座融合特色餐饮、娱乐体验的商场&#xff0c; 将为长沙消费者带来&#xff0c; 超越传统商业综合体的全新体验。 开业当日&#xff0c;占地1.3万平方米的永旺超市人声鼎沸&#xff0c;顾客络绎不绝&#x…

使用Java调用OpenAI API并解析响应:详细教程

使用Java调用OpenAI API并解析响应&#xff1a;详细教程 在现代应用程序中&#xff0c;API调用是一个非常常见的任务。本文将通过一个完整的示例&#xff0c;讲解如何使用Java调用OpenAI的ChatGPT API&#xff0c;并通过ObjectMapper处理JSON响应。本文的示例不仅适用于OpenAI…

红米Turbo 3工程固件预览 修复底层 体验原生态系统 默认开启diag端口

红米Turbo 3机型代码:peridot 国外版本:POCO F6 用于以下型号的小米机型:24069RA21C, 24069PC21G, 24069PC21I。搭载1.5K OLED屏、骁龙8s处理器、5000mAh电池+90W快充、5000万像素主摄。 通过博文了解 1💝💝💝-----此机型工程固件的资源刷写注意事项 2💝💝�…

探索MinimalModbus:Python中强大的Modbus通信库

文章目录 **探索MinimalModbus&#xff1a;Python中强大的Modbus通信库**一、背景介绍&#xff1a;为什么选择MinimalModbus&#xff1f;二、MinimalModbus是什么&#xff1f;三、如何安装MinimalModbus&#xff1f;四、MinimalModbus的基本使用4.1 读取寄存器4.2 写入寄存器4.…

【平方差 / C】

题目 思路 打表找规律 枚举小区间对于判断要妥协&#xff0c;我这里选取100内的x, y #include <bits/stdc.h> using namespace std; bool st[120]; int main() {for(int i 1; i < 100; i){for(int x 0; x < 100; x ){for(int y 0; y < 100; y){if(!st[i])i…

关于Zipf定律与TF—IDF的一个实践

在这篇文章中&#xff0c;我将通过机器学习中的线性回归来计算zipf定律中一个经验常数alpha&#xff0c;还会画TF-IDF的图像&#xff0c;此外还将简单介绍下与zipf、TF-IDF有关的知识。 在之前的一篇文章中我曾介绍过TF-IDF&#xff0c;但之后我又阅读了Ricardo Baeza-Yates和…

我开发了一个出海全栈SaaS工具,还写了一套全栈开发教程

先上目录思维导图&#x1f447; 大家好&#xff0c;我是程普。 前段时间&#xff0c;我发布了第一个出海产品 PH Copilot&#xff0c;是一个基于 Plasmo 开发的 Chrome 插件和 Next.js 开发的落地页与服务端的全栈产品。 现在我把这个产品的完整实现写成系统性教程&#xff0…

强化学习笔记之【Q-learning算法和DQN算法】

强化学习笔记&#xff08;一&#xff09;——Q-learning和DQN算法核心公式 文章目录 强化学习笔记&#xff08;一&#xff09;——Q-learning和DQN算法核心公式前言&#xff1a;Q-learning算法DQN算法 前言&#xff1a; 强化学习领域&#xff0c;繁冗复杂的大段代码里面&#…

华为平板与非华为电脑多屏协同及Bug处理

本文参考B站空降猫咪、鱼翅2002、知乎奔跑的小牛、夏风微微等博主。 电脑版本型号&#xff1a;拯救者Y7000&#xff0c;核显3050Ti,无集成显卡 平板版本型号&#xff1a;华为matepad pro解决办法&#xff1a; 下载空降猫咪的安装器PCManagerInstaller_20230801 CSDN下载链接 …

Redis中BitMap实现签到与统计连续签到功能

服务层代码 //签到Overridepublic Result sign() {//1.获取当前登录的用户Long userId UserHolder.getUser().getId();//获取日期LocalDateTime now LocalDateTime.now();//拼接keyString keySuffix now.format(DateTimeFormatter.ofPattern(":yyyyMM"));String …

网页打不开、找不到服务器IP地址

现象&#xff1a;网络连接ok&#xff0c;软件能正常使用&#xff0c;当网页打不开。 原因&#xff1a;DNS 配置错误导致网站域名无法正确解析造成。 影响DNS设置的&#xff1a;VPN软件、浏览器DNS服务选择、IPv4属性被修改。 1、VPN代理未关闭 2、浏览器DNS解析选择 3、以太…

华为eNSP:端口隔离

一&#xff0c;什么是端口隔离 端口隔离是一种网络配置技术&#xff0c;用于将不同的网络设备或用户隔离在不同的虚拟局域网&#xff08;VLAN&#xff09;中&#xff0c;以实现网络流量的隔离和安全性提升。通过在交换机或路由器上配置端口隔离&#xff0c;可以将连接到同一设…

原来大模型训练实战,是需要这些项目!!

去年侧重大模型和GPT的原理&#xff0c;今年就侧重项目实战了。找到的这个合集不仅收集了大模型训练实战&#xff0c;还有微调实战&#xff0c;分布式训练&#xff0c;真的很全。 下面汇总了我在大模型实践中训练相关的所有教程。从6B到65B&#xff0c;从全量微调到高效微调(L…

【AIGC】2021-arXiv-LoRA:大型语言模型的低秩自适应

2021-arXiv-LoRA: Low-Rank Adaptation of Large Language Models LoRA&#xff1a;大型语言模型的低秩自适应摘要1. 引言2. 问题陈述3. 现有的解决方案还不够好吗&#xff1f;4. 我们的方法4.1 低秩参数化更新矩阵4.2 将 LORA 应用于 Transformer 5. 实证实验5.1 基线5.2 ROBE…