首页 > 其他分享 >9.25 总结

9.25 总结

时间:2024-09-25 14:12:15浏览次数:1  
标签:总结 kMod jie 9.25 fpow res ll kMaxN

T1 变换

一道DP题,用 \(f_{i, j, 0/1}\) 来表示到了第 \(i\) 个数,总共修改了 \(j\) 次,前面的数是/不是山谷点,做 DP 即可

T2 交替

根据超大眼观察法,我们可以发现,当剩余数组大小为偶数的时候,呈现一个组合数的形式,于是使用公式 \(C_{m}^{n} = \dfrac{m!}{n!(m-n)!}\) 配合逆元求出组合数来得出。

代码难度有点高,花了25min才调出来。

#include <fstream>

using namespace std;
using ll = long long;

const ll kMaxN = 1e5 + 1, kMod = 1e9 + 7;

ifstream cin("alternate.in");
ofstream cout("alternate.out");

ll n, a[kMaxN], jie[kMaxN];

ll fpow(ll a, ll b) { // 快速幂
  ll res = 1;
  while (b) {
    (b & 1) && (res = res * a % kMod);
    b >>= 1;
    a = a * a % kMod;
  }
  return res;
}

ll C(ll m, ll n) { // 逆元求组合数
  return jie[m] * fpow(jie[m - n], kMod - 2) % kMod * fpow(jie[n], kMod - 2) % kMod;
}

int main() {
  jie[0] = 1;
  cin >> n;
  for (ll i = 1; i <= n; i++) {
    cin >> a[i], jie[i] = jie[i - 1] * i % kMod;
  }
  ll ans = 0;
  if (n & 1) { // 奇数的情况
    for (int i = 1; i <= n; i += 2) {
      ans = (ans + C(n / 2, i / 2) * fpow(-1, i / 2) * a[i] % kMod) % kMod;
    }
  } else { // 偶数的情况
    ll ans2 = 0;
    for (int i = 1; i < n; i += 2) {
      ans = (ans + C(n / 2 - 1, i / 2) * fpow(-1, i / 2) * a[i] % kMod) % kMod;
    }
    for (int i = 2; i <= n; i += 2) {
      ans2 = (ans2 + C(n / 2 - 1, i / 2 - 1) * fpow(-1, i / 2 - 1) * a[i] % kMod) % kMod;
    }
    ans += ans2;
  }
  cout << (ans % kMod + kMod) % kMod << '\n';
  return 0;
}

标签:总结,kMod,jie,9.25,fpow,res,ll,kMaxN
From: https://www.cnblogs.com/W-potato/p/18431248

相关文章

  • 「JVS更新日志」智能BI、低代码、逻辑引擎9.25功能更新说明
    项目介绍JVS是企业级数字化服务构建的基础脚手架,主要解决企业信息化项目交付难、实施效率低、开发成本高的问题,采用微服务+配置化的方式,提供了低代码+数据分析+物联网的核心能力产品,并构建了协同办公、企业常用的管理工具等,所有的应用与能力采用模块化构建,按需开箱使用。更新日志......
  • Android线程使用总结
    Android线程使用总结1.ThreadingPerformance在程序开发的实践当中,为了让程序表现得更加流畅,我们肯定会需要使用到多线程来提升程序的并发执行性能。但是编写多线程并发的代码一直以来都是一个相对棘手的问题,所以想要获得更佳的程序性能,我们非常有必要掌握多线程并发编程......
  • 2025.9.25 计划
    项目ROS声音信号和视频信号的叠加学习有依赖的背包问题开心的金明机器分配总结......
  • Raft总结
    Raft算法State所有server都有的持久化状态先存储,然后响应RPCcurrentTerm当前任期,初始为0,单调递增votedFor当前任期投票给谁了,没有就是nulllog[]日志条目,每个条目都包含命令、Leader收到条目时的任期,第一个条目的index为1所有server都有的Volatilestate......
  • 考试总结
    考试总结应该没有人写这玩意拖得比我更久了(但拖久了也有好处,可以在几乎忘了的时候复习之前做过的题以及因为时间久远,只记得做没做出来,想到了哪一步。具体打的暴力分数记不清了所以分数大多只有0和100以及一件很好笑的事:上次blog更新5个月前(其实有一些存货,但是没有发出来8......
  • 408OS_PV操作大题总结
    咸鱼今年压了读者写者问题,前几年没考过。死锁的四个条件是:禁止抢占(nopreemption):系统资源不能被强制从一个线程中退出。持有和等待(holdandwait):一个线程在等待时持有并发资源。持有并发资源并还等待其它资源,也就是吃着碗里的望着锅里的。互斥(mutualexclusion):资源只能同时......
  • 超详细的系列总结!大模型岗面试题(含答案)来了!(大语音模型基础篇二)
    前言大模型应该是目前当之无愧的最有影响力的AI技术,它正在革新各个行业,包括自然语言处理、机器翻译、内容创作和客户服务等,正成为未来商业环境的重要组成部分。截至目前大模型已超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关岗位和面试也开始越来越卷......
  • JVM虚拟机总结
        读了周志明老师的《深入理解Java虚拟机:JVM高级特性与最佳实践》第三版,总结一下里面的知识点。一方面是知识储备更多一些,另外是也为接下来的面试准备一下。    全书分为13个章节,共5部分内容。我着重是看了jvm的内管管理、垃圾收集与内存分配策略、虚拟机故障......
  • Mysql知识库【总结】
    MySQL是一种关系型数据库管理系统(RDBMS),其底层原理可以简单概括为以下几个方面:-存储引擎:MySQL支持多种存储引擎,如MyISAM、InnoDB、Memory等。每种存储引擎的实现方式不同,它们各自的特点和使用场景也不同。例如,MyISAM存储引擎适合于读多写少的场景,而InnoDB存储引擎则适合于......
  • 9.23考试总结
    T1简单签到题,考虑一个点从开头移到结尾会减去小于它的数加上大于它的数。所以\(O(nlogn)\)求逆序对,然后\(O(1)\)计算一个数移到最后的答案。#include<bits/stdc++.h>usingnamespacestd;constintN=1e6+10;#definelllonglongintn,a[N],sum[N],sh[N];llans,jg;......