[USACO25OPEN] Election Queries G 题解

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

题目传送门

洛谷P12029

题面:P12029 [USACO25OPEN] Election Queries G

题目描述

注意:本题时间限制为 3 秒,是默认时间的 1.5 倍。

农夫约翰有 N N N 头( 2 ≤ N ≤ 2 ⋅ 10 5 2 \leq N \leq 2 \cdot 10^5 2≤N≤2⋅105)编号从 1 1 1 到 N N N 的奶牛。农场正在举行选举,将选出两头新的领头牛。初始时,已知第 i i i 头奶牛会投票给第 a i a_i ai​ 头奶牛( 1 ≤ a i ≤ N 1 \leq a_i \leq N 1≤ai​≤N)。

选举过程如下:

  1. 农夫约翰任意选择一个非空真子集 S S S(即至少包含一头牛但不包含所有牛)。
  2. 在 S S S 集合中,得票数最多的候选牛将被选为第一头领头牛 x x x。
  3. 在剩余奶牛组成的集合中,得票数最多的候选牛将被选为第二头领头牛 y y y。
  4. 定义两头领头牛的差异度为 ∣ x − y ∣ |x - y| ∣x−y∣。若无法选出两头不同的领头牛,则差异度为 0 0 0。

由于奶牛们经常改变主意,农夫约翰需要进行 Q Q Q 次( 1 ≤ Q ≤ 10 5 1 \leq Q \leq 10^5 1≤Q≤105)查询。每次查询会修改一头奶牛的投票对象,你需要回答当前状态下可能获得的最大差异度。

输入格式

第一行包含 N N N 和 Q Q Q。

第二行包含初始投票数组 a 1 , a 2 , … , a N a_1, a_2, \ldots, a_N a1​,a2​,…,aN​。

接下来 Q Q Q 行,每行两个整数 i i i 和 x x x,表示将 a i a_i ai​ 修改为 x x x。

输出格式

输出 Q Q Q 行,第 i i i 行表示前 i i i 次查询后的最大可能差异度。

输入输出样例 #1

输入 #1

5 3
1 2 3 4 5
3 4
1 2
5 2

输出 #1

4
3
2

输入输出样例 #2

输入 #2

8 5
8 1 4 2 5 4 2 3
7 4
8 4
4 1
5 8
8 4

输出 #2

4
4
4
7
7

说明/提示

样例一解释:

第一次查询后, a = [ 1 , 2 , 4 , 4 , 5 ] a = [1,2,4,4,5] a=[1,2,4,4,5]。选择 S = { 1 , 3 } S = \{1,3\} S={1,3} 时:

  • S S S 中:牛 1 1 1 得 1 1 1 票,牛 4 4 4 得 1 1 1 票 → \to → 可选择牛 1 1 1 或牛 4 4 4 作为第一头领头牛。
  • 剩余牛中:牛 2 , 4 , 5 2,4,5 2,4,5 各得 1 1 1 票 → \to → 可选择牛 2 , 4 , 5 2,4,5 2,4,5 作为第二头领头牛。

最大差异度为 ∣ 1 − 5 ∣ = 4 |1-5| = 4 ∣1−5∣=4。

第二次查询后, a = [ 2 , 2 , 4 , 4 , 5 ] a = [2,2,4,4,5] a=[2,2,4,4,5]。选择 S = { 4 , 5 } S = \{4,5\} S={4,5} 时:

  • S S S 中:牛 4 4 4 得 1 1 1 票,牛 5 5 5 得 1 1 1 票。
  • 剩余牛中:牛 2 2 2 得 2 2 2 票。

最大差异度为 ∣ 5 − 2 ∣ = 3 |5-2| = 3 ∣5−2∣=3。

  • 测试点 3 ∼ 4 3\sim4 3∼4: N , Q ≤ 100 N,Q \leq 100 N,Q≤100。
  • 测试点 5 ∼ 7 5\sim7 5∼7: N , Q ≤ 3000 N,Q \leq 3000 N,Q≤3000。
  • 测试点 8 ∼ 15 8\sim15 8∼15:无额外限制。

题解

问题核心

记 cnt i \text{cnt}_\text{i} cnti​为奶牛 i i i获得的票数,则若可以使奶牛 x x x, y y y当选,显然应当将所有投票给 x x x的奶牛放入集合 S \text S S中,将投票给 y y y的奶牛归到“剩余牛”中。
那么,为了保证奶牛 x x x的票数 cnt x \text{cnt}_\text{x} cntx​为集合 S \text S S的众数,显然在 S \text S S里投给奶牛 z z z的票数 cnt z S \text{cnt}_{\text{z}_\text S} cntzS​​不可以超过 cnt x \text{cnt}_\text{x} cntx​。同理该奶牛 z z z在剩余奶牛中获得的票数不能超过 cnt y \text{cnt}_\text{y} cnty​。
因此,对于任意奶牛 z z z,其票数 cnt z = cnt z S + cnt z S在全体奶牛中的补集 ≤ cnt x + cnt y \text{cnt}_\text{z}=\text{cnt}_{\text{z}_\text S}+\text{cnt}_{\text{z}_\text {S在全体奶牛中的补集}}\leq\text{cnt}_\text{x}+\text{cnt}_\text{y} cntz​=cntzS​​+cntzS在全体奶牛中的补集​​≤cntx​+cnty​
由此推广到全体奶牛,即 ∀ z ∈ { 1 , 2 , ⋯   , n } , \forall z\in\lbrace 1,2,\cdots,n\rbrace, ∀z∈{1,2,⋯,n},我们都有上式,所以可得
⇒ cnt x + cnt y ≥ max ⁡ k = 1 n cnt k \huge \Rightarrow \text{cnt}_\text{x}+\text{cnt}_\text{y}\ge\max_{k=1}^n\text{cnt}_\text{k} ⇒cntx​+cnty​≥k=1maxn​cntk​

思路

枚举候选对:

直接枚举所有 ( x , y ) (x, y) (x,y) 对不可行( O ( N 2 ) O(N^2) O(N2))。利用性质:

不同 cnt \text{cnt} cnt 值的种类数 d = O ( N ) d = O(\sqrt{N}) d=O(N ​)(因为 ∑ cnt [ i ] = N \sum \text{cnt}[i] = N ∑cnt[i]=N,最坏情况 cnt \text{cnt} cnt 值互异时 d ≈ 2 N d \approx \sqrt{2N} d≈2N ​)。

只需考虑不同的 cnt \text{cnt} cnt 值,而非每个奶牛索引。

维护数据结构:

st [ v ] \text{st}[v] st[v]:set 存储得票数为 v v v 的奶牛索引。

mxi [ v ] \text{mxi}[v] mxi[v] 和 mni [ v ] \text{mni}[v] mni[v]:得票数为 v v v 的奶牛索引的最大值和最小值。

S S S:全局 set 存储存在的非零票数值(用于快速访问不同 cnt \text{cnt} cnt)。

更新投票:

修改投票时,更新 cnt \text{cnt} cnt 数组和上述数据结构(删除旧票数对应索引,添加新票数对应索引)。

计算最大差异度:

特判:

若最小票数 v min ⁡ v_{\min} vmin​ 满足 2 v min ⁡ ≥ mx 2v_{\min} \geq \text{mx} 2vmin​≥mx( mx = max ⁡ k cnt [ k ] \text{mx} = \max_k \text{cnt}[k] mx=maxk​cnt[k]),则用 mxi [ v min ⁡ ] − mni [ v min ⁡ ] \text{mxi}[v_{\min}] - \text{mni}[v_{\min}] mxi[vmin​]−mni[vmin​] 更新答案(同票数奶牛索引差)。

双指针遍历 S S S:

指针 itl 从小到大遍历 S S S(小票数)。

指针 itr 从大到小移动(大票数),维护累积变量 mxp(满足 cnt [ x ] + cnt [ y ] ≥ mx \text{cnt}[x] + \text{cnt}[y] \geq \text{mx} cnt[x]+cnt[y]≥mx 的奶牛索引最大值)和 mnp(索引最小值)。

对于每个 itl,更新答案 max ⁡ ( mxp − mni [ itl ] , mxi [ itl ] − mnp ) \max(\text{mxp} - \text{mni}[\text{itl}], \text{mxi}[\text{itl}] - \text{mnp}) max(mxp−mni[itl],mxi[itl]−mnp),覆盖 x x x 小 y y y 大或 x x x 大 y y y 小的情况。

代码

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, q;
int a[N];           // a[i]:    奶牛i投给的奶牛的编号
int cnt[N];         // cnt[i]:  奶牛i获得的票数
int mni[N];         // mni[x]:  票数为x的奶牛编号最小值
int mxi[N];         // mxi[x]:  票数为x的奶牛编号最大值
set<int> id[N];     // id[x]:   统计所有票数为x的奶牛编号
set<int> S;         // S:       维护所有存在的票数值

// i 的得票变成 x 了
void addc(int i, int x)
{
    if (!x) return; // 若此奶牛无票则不用处理
    id[x].insert(i); // 票数为x的奶牛多了奶牛i这头
    // 更新票数为x的奶牛坐标最值
    mxi[x] = max(mxi[x], i);
    mni[x] = min(mni[x], i);
    // 若x为此票数第一个,则还需更新S
    if (id[x].size() == 1) S.insert(x);
}
// i 的得票不再是 x 了
void delc(int i, int x)
{
    if (!x) return; // 若此奶牛无票则不需要处理
    // 票数为x的奶牛里不再有奶牛i了
    id[x].erase(i);
    // 如果这种票数的奶牛没了
    if (id[x].empty()) {
        S.erase(x); // 维护 S
        mxi[x] = 0; // 重置最大值至0
        mni[x] = n + 1; // 重置最小值至无限大
    }
    // 如果这种奶牛的票数还有,则根据set更新最大最小
    else {
        mxi[x] = *(--id[x].end());
        mni[x] = *id[x].begin();
    }
}
signed main()
{
    freopen("election.in", "r", stdin);
    freopen("election.out", "w", stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> q;
    for (int i = 1; i <= n; ++i) {
        cin >> a[i];
        ++cnt[a[i]];
        mxi[i] = 0;
        mni[i] = n + 1;
    }
    for (int i = 1; i <= n; ++i) addc(i, cnt[i]);
    while (q--) {
        int i;
        cin >> i;
        /*
        修改过程分为2×2步:
        I: 处理a[i]->a[i]-1的过程(奶牛i原来投给的奶牛)
        I.1 把a[i]的信息删除
        I.2 添加a[i]-1的信息
        II: 处理a[i]'->a[i]'+1的过程(奶牛i更改后投给的奶牛)
        II.1 把a[i]'的信息删除
        II.2 添加a[i]'+1的信息
        */
        delc(a[i], cnt[a[i]]--);
        addc(a[i], cnt[a[i]]);
        cin >> a[i];
        delc(a[i], cnt[a[i]]++);
        addc(a[i], cnt[a[i]]);


        // 最难懂的,也是题解描述最含糊的滑动数组原理
        int maxvote = *(--S.end());   // 最大票数值
        int mxidx = 0, mnidx = n + 1;   // 可以与当前奶牛匹配的最大与最小奶牛编号
        int ans = 0;                // 最大差异
        /* 入选要求:cnt[x]+cnt[y]>=最大票数值 */

        // 特判最小票数值满足入选要求
        if (*S.begin() + *S.begin() >= maxvote)
            ans = mxi[*S.begin()] - mni[*S.begin()]; // 注意这里后式不可能是负的,不需要max

        // 双指针
        set<int>::iterator itl = S.begin(); // 从小到大遍历票数值
        set<int>::iterator itr = --S.end(); // 从大到小遍历票数值
        for (; itl != S.end(); ++itl) {
            /*
            FAQ: itr会不断减小,每种票数值只遍历一次,会不会影响后续?
            ANS: 不会。因为随着itl变大,必然保证它能与前面的itl'符合入选条件的itr匹配,
                 因此可以直接不断更新mx/mn idx
            */
            while (itr != S.begin() && (*itr) + (*itl) >= maxvote) { // 符合入选条件
                // 更新可以和票数值为itl的奶牛匹配的奶牛的编号最值
                mxidx = max(mxidx, mxi[*itr]);
                mnidx = min(mnidx, mni[*itr]);
                --itr;
            }
            ans = max(ans, max(mxidx - mni[*itl], mxi[*itl] - mnidx));
        }

        // 输出最大差值
        cout << ans << '\n';
    }
    return 0;
}
Figma汉化教程 阅读详情

相关推荐

蓝桥杯嵌入式(基础教程)STM32G431RBT6——创建工程以及点灯

首先选择正确的芯片类型:STM32G431RBT6工程的创建主要有配置时钟以及烧录的方式。在配置好之后需要对时钟进行配置,由于蓝桥杯的外部晶振是24MHz因此需要对时钟树进行相应的配置。第一步先点击时钟配置之后就可以对时钟进行相应的配置了最后一步,需要对工程起一个名字,并且要选择KEIL做为其相应的软件之后再需要再生成代码那里进行相应的控制。当然这样根据生成的工程不能直接使用会有一个报错,所以需要添加一个启动文件。这个启动文件可以在官方的LCD文件夹下复制到自己的工程中。

m0_74051113的博客 1093

【题解】洛谷 P11674 [USACO25JAN] Reachable Pairs G [思维 + 并查集]

Success is a journey, not a destination.

Isaac Regulus的博客 279

飞牛NAS一键部署小雅Emby全家桶:解锁海量影音资源与智能刮削

本文详细介绍了如何在飞牛NAS上通过Docker一键部署小雅Emby全家桶,完美解决传统WebDAV挂载无法刮削元数据的问题。该方案整合了小雅Alist海量影音资源与Emby媒体服务器,通过预下载超百GB元数据包,自动实现海报、简介等信息的完美匹配,打造出精美的个人影音库。部署过程需准备阿里云盘令牌与充足存储空间,并详解了从环境配置、镜像拉取到最终验证的完整步骤及优化技巧。

weixin_28312391的博客 919

2025 年日祭

2025 年日祭

一枚初中生的博客 1665

手把手教你用三极管搭建麦克风音频放大电路(附完整电路图)

本文详细介绍了如何使用三极管搭建麦克风音频放大电路,包括电路设计基础、元件选择、完整电路图及分步焊接指南。通过实际操作和调试技巧,帮助电子爱好者和学生深入理解模拟电路原理,实现音质清晰的音频放大效果。

Black的专栏 985

基于CNN对抗嵌入的图像隐写——CNN-Based Adversarial Embedding for Image Steganography

CNN-Based Adversarial Embedding for Image Steganography https://ieeexplore.ieee.org/abstract/document/8603808 这篇论文发表在TIFS( IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY),TIFS是网络与信息安全领域的国际两大顶级期刊之一,中国计算机学会(CCF)推荐的A类期刊,SCI一区TOP期刊,目前影响因子有7多了。 1 概

weixin_48654804的博客 2279

P11673 [USACO25JAN] Median Heap G 题解

这样才能保证从叶子节点开始修改,否则你先把父亲更新了结果儿子还没更等于没更,包WA的。把问询从小到大排序后,我们再看上码,可以发现每次增大询问值后,并不是所有的。显然 f[j] 是越修越大的,因此最多修改2次(0->1,1->2)。那么,现在我们只需寻找一种高效的方式,每次精准查找需要修改的。所有元素都遍历到,确保大小关系的正确性,防止有数值未更新。现在给你这颗树的初始权值,和修改每个点的代价。,对于每个询问,回答使树的近似中位数为。,显然不能遍历,否则直接给你炸成。这个时候,我们想到,可以开一个。

peter_code的博客 915

【实战】小红书笔记爬虫终极指南:模拟滑动加载,抓取图文(2026最新版)

小红书作为国内最大的生活方式分享社区,每天产生海量的图文笔记。对于数据分析、市场调研、竞品分析等需求,爬取小红书公开笔记成为一项常见任务。然而,小红书的反爬机制日益升级——接口加密、动态Token、滑动验证、设备指纹……本文将深入剖析小红书Web端和App端的爬取技术,手把手教你用Python实现模拟滑动加载、自动抓取图文笔记的完整爬虫系统。全文包含大量代码、原理分析和排坑经验,适合有一定爬虫基础的读者进阶学习。目录前言一、小红书反爬机制概览二、环境准备2.1 Python环境2.2 浏览器驱动。

2201_76125261的博客 765

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 192

uniapp(微信小程序):实现PDF在线预览+在线预览pdf文件完整示例源码,支持文件来源:服务器pdf外链URL预览、调用后端API接口获取PDF文件流二进制下载及解析打开、上传本地PDF文件预览

uni-app实现PDF预览功能,uniapp微信小程序预览PDF,uniapp开发微信小程序在线预览pdf等文件,uniApp微信小程序实现PDF在线预览,Uniapp app在线预览pdf文件流,微信小程序实现pdf预览(苹果安卓兼容),uniapp-微信小程序 实现pdf外链在线预览,uniapp小程序如何做在线预览pdf功能,uniapp小程序端 实现pdf文件预览,微信小程序(uniapp)PDF预览完整实现方案示例demo源码,uni-app预览PDF,小程序pdf预览插件插件,Uniapp微信

✅ 精选推荐文章 4703

Siemens SIMATIC软件二次开发:使用C#进行SIMATIC软件二次开发

通过使用OPC-UA通信协议和S7通信库,可以有效地在C#应用程序中与Siemens SIMATIC软件进行数据交换。OPC-UA提供了一个标准化的平台,而S7通信库则提供了直接访问PLC数据的能力。掌握这两种通信方式,将极大地增强在工业自动化领域的二次开发能力。在Siemens SIMATIC软件中,自定义功能块开发是实现二次开发的关键步骤之一。通过C#,可以创建高度定制化的功能块,以满足特定的控制需求。下面,我们将通过一个示例来展示如何使用C#开发一个自定义功能块。OPC-UA通信。

kkchenjj的博客 1414

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 298

ollama使用CPU安装qwen-coder模型_并在eclipse中使用ai coder插件_配置本地qwen-coder模型_ollama常用操作记录---AI大模型应用探索0002

文章摘要:作者分享了在Windows 10上安装和使用Ollama模型的过程。尝试了不同规模的qwen-coder模型(7b、1.5b和0.5b),发现7b模型响应极慢(需35分钟),而1.5b模型表现较好(3秒响应)。最终选择1.5b版本用于代码开发辅助,支持多语言自动补全。同时提到在最新版Eclipse中的AIcoder配置问题。文章重点比较了不同模型规模在CPU环境下的实际使用体验和响应速度差异。

添柴程序猿的专栏 683

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 561

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 20

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 745

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

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

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 367

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 170

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 81

算法61,判定是否为字符重排

两字符串能互为重排 ⇔。

sheshibenniaodan的博客 207

算法日常・每日刷题--<动态规划>32

给定严格递增的正整数数组,求最长斐波那契子序列长度。使用二维DP,dp[i][j]表示以arr[i]、arr[j]为最后两项的序列长度,初始化均为2。通过哈希表快速查找前一项target = arr[j] - arr[i],若存在且下标小于i,则状态转移:dp[i][j] = dp[k][i] + 1。遍历更新全局最大长度,最终若结果小于3则返回0。时间复杂度O(n²),空间复杂度O(n²)。

2503_92261635的博客 177

算法札记:几何分布在算法题UVA1262的运用

集卡问题求解核心:将集齐n种优惠券的过程分为n个阶段,每个阶段期望购买次数为 $ \frac{n}{k} $(k为剩余种类数),总期望为 $ n \cdot H_n $(调和数)。通过自洽方程推导单阶段期望,无需几何分布或无穷级数,逻辑清晰且适用于大一水平。例如,n=5时期望约11.42,非5。题目要求以带分数形式输出精确结果,算法上需累加分数并化简。

Keven_11的博客 321

不同的二叉搜索树

互不相同的二叉搜索树的种数,以 j (1<=j<=i)为头节点,左子树是 j-1 个数,右子树就是 i - (j - 1) -1 = i - j个数。所以dp[3] = dp[0] * dp[2] + dp[1] * dp[1] + dp[2] * dp[0]头1 = 左子树0节点 * 右子树2节点,二叉搜索树就是排序树,左子树<根节点<右子树,左右子树也满足左子树<根节点<右子树。头2 = 左子树1节点 * 右子树1节点。所以dp[i] += dp[j-1] * dp[i-j]个节点组成且节点值从。

qq_44721738的博客 150

SSL证书选RSA还是ECDSA:公钥算法、CA签名与兼容性怎么核对

申请SSL证书时,RSA和ECDSA该怎么选?先分清站点公钥算法、CA签名算法和TLS实际兼容性,再用隔离OpenSSL实验读取两类材料,核对申请、续期和部署交接,避免只看Signature Algorithm就选错。

谁呀!的博客 399

考拉兹猜想 - 7

本文通过引入虚数单位重构Collatz猜想的迭代逻辑,指出偶数减半与奇数“乘3加1”的过程在虚数坐标下等价于归结操作。关键在于:乘3加1使奇数跃升至偶数,随后持续减半,而虚数单位代表“无限减1”,实现无限向有限的转化。无论初始值如何,减半始终主导,最终归结为4-2-1循环。该视角消解了正向思维中的速度竞争疑虑,证明归结是必然结果。

杨铸人的博客 40

贪心题目:可以到达的最远建筑

为了到达尽可能远的建筑物,在将砖块替换成梯子时,应将高度差最大位置的砖块替换成梯子,此时剩余的砖块数量最多,如果将高度差较小位置的砖块替换成梯子,则剩余的砖块数量较少,能到达的最远建筑物下标不可能更大。开始向后面的建筑物移动,移动过程中维护优先队列存储正高度差,优先队列的队首元素是最大元素,每次遇到正高度差时优先考虑使用砖块,如果砖块数量不够则使用梯子替换最大高度差位置的砖块,直到砖块和梯子都使用完毕时,到达的建筑物即为最远建筑物。如果以最佳方式使用给定的梯子和砖块,返回可以到达的最远建筑物的下标。

stormsunshine的博客 170
上一篇: CF570D Tree Requests
下一篇: [USACO25FEB] Bessie‘s Function G 题解
peter_code
博客等级 码龄5年 41粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值