HDU-2017 多校训练赛8-1002-Battlestation Operational

ACM竞赛中莫比乌斯函数的应用
本文介绍了一道ACM竞赛题目,并详细解析了如何利用莫比乌斯函数进行解答。通过一位博主的优秀题解分享,深入探讨了莫比乌斯函数在实际问题中的具体应用。

ACM模版

描述

描述
描述

题解

比赛时,看出来这个题是需要用到莫比乌斯函数来解,但是无奈自己太笨,不懂得变通,没有做出来,赛后找了一下大牛们的题解,看到一个不错的。

描述

该题解来自于 Lsxxxxxxxxxxxxx 的博客,他的推导过程和莫比乌斯函数的代入应用过程十分详细,让我对莫比乌斯函数的使用进一步了解了一些,很不错的题解,666~~~

代码

#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

typedef long long ll;

const int MAXN = 1e6 + 10;
const int MOD = 1e9 + 7;

int n;
bool check[MAXN];
int prime[MAXN];
ll d[MAXN];
ll miu[MAXN];
ll sum[MAXN];
ll cnt[MAXN];

void Mobius()
{
    memset(check, false, sizeof(check));

    d[1] = miu[1] = 1LL;
    int tot = 0;
    for (int i = 2; i < MAXN; i++)
    {
        if (!check[i])
        {
            prime[tot++] = i;
            d[i] = 2;
            cnt[i] = 1;
            miu[i] = -1;
        }
        for (int j = 0; j < tot; j++)
        {
            if ((ll)i * prime[j] > MAXN)
            {
                break;
            }

            check[i * prime[j]] = true;
            if (i % prime[j] == 0)
            {
                d[i * prime[j]] = d[i] / (cnt[i] + 1) * (cnt[i] + 2);
                cnt[i * prime[j]] = cnt[i] + 1;
                miu[i * prime[j]] = 0;
                break;
            }
            else
            {
                d[i * prime[j]] = d[i] << 1;
                cnt[i * prime[j]] = 1;
                miu[i * prime[j]] = -miu[i];
            }
        }
    }

    sum[1] = 1;
    for (int i = 2; i < MAXN; i++)
    {
        sum[i] = (sum[i - 1] + d[i - 1] + 1) % MOD;
    }
    for (int i = 1; i < MAXN; i++)
    {
        sum[i] = (sum[i] + sum[i - 1]) % MOD;
        miu[i] = (miu[i] + miu[i - 1]) % MOD;
    }
}

int main()
{
    Mobius();

    ll ans;
    while (~scanf("%d", &n))
    {
        ans = 0;
        for (int i = 1, last; i <= n; i = last + 1)
        {
            last = n / (n / i);
            ans = (ans + (miu[last] - miu[i - 1]) % MOD * sum[n / i] % MOD) % MOD;
        }

        ans = (ans + MOD) % MOD;

        printf("%lld\n", ans);
    }

    return 0;
}
【源码免费下载链接】:https://renmaiwang.cn/s/2tc6f 《基于SSM框架的外卖跑腿系统:深度解析与学习指南》外卖跑腿系统作为现代生活中不可或缺的一部分,其背后的开发技术与实现机制是许IT从业者关注的重点。本篇文章将围绕"基于SSM框架的外卖跑腿系统源码+数据库+文档"进行深入探讨,帮助开发者了解SSM框架在构建此类系统中的应用。SSM框架是由Spring、SpringMVC和Mybatis三大组件组成的Java Web开发框架。Spring作为一个全面的容器,负责管理应用对象的生命周期和依赖关系;SpringMVC则作为前端控制器,处理HTTP请求并调度服务;Mybatis作为持久层框架,提供了灵活的SQL映射,简化了数据库操作。1. **Spring框架**:Spring的核心特性是依赖注入(Dependency Injection, DI),它允许开发者通过配置文件或注解来声明对象之间的依赖关系,降低了代码的耦合度。此外,Spring还提供了事务管理、AOP(面向切面编程)等功能,使得业务逻辑的编写更加简洁。2. **SpringMVC**:作为Spring的一个模块,SpringMVC用于处理Web请求。它采用了模型-视图-控制器(Model-View-Controller, MVC)的设计模式,分离了展示逻辑、业务逻辑和数据访问,使系统结构更加清晰。请求通过DispatcherServlet分发,经过一系列拦截器,最终到达Controller,处理完成后返回ModelAndView对象,再由视图解析器渲染结果。3. **Mybatis**:Mybatis是一个轻量级的ORM(Object-Relational Mapping)框架,它允许开发者直接编写SQL,将结果集映射到Java对象。Mybatis的动态SQL功能使得复杂查询变得简单,
内容概要:本文介绍了基于平方距离迭代重新加权最小二乘法的鲁棒目标定位方法,旨在提高传感器网络中存在异常测距误差情况下的定位精度。该方法通过引入平方距离度量与迭代重加【传感器】【鲁棒目标定位】基于平方距离迭代重新加权最小二乘法的鲁棒目标定位(Matlab代码实现)权机制,有效降低粗差对定位结果的影响,提升算法的鲁棒性。文中给出了详细的数学模型构建过程、算法实现步骤,并提供了Matlab代码实现,便于读者复现和验证算法性能。同时,文档列举了大量相关科研方向与技术服务内容,涵盖智能优化算法、机器学习、路径规划、通信与信号处理等个领域,展示了该团队在科研仿真方面的广泛技术支持能力。; 适合人群:具备一定信号处理、优化算法及Matlab编程基础的研究生、科研人员及从事传感器网络、定位技术等相关领域的工程技术人员。; 使用场景及目标:①用于解决无线传感器网络中受噪声或异常值干扰的目标定位问题;②提升传统最小二乘定位算法在非视距(NLOS)或复杂环境下的鲁棒性;③为相关科研项目提供可复现的算法原型与代码参考; 阅读建议:建议读者结合Matlab代码逐段理解算法实现流程,重点关注迭代重加权策略的设计逻辑,并可通过仿真不同噪声场景来验证算法有效性,进一步拓展至其他鲁棒估计问题的研究。
【源码免费下载链接】:https://renmaiwang.cn/s/ub2d4 《现代工程图学习题集(第3版)答案》是一个专为学习工程图学的学生和教师准备的重要参考资料。工程图学是工程领域中基础且关键的一门学科,它涉及到图形表达、尺寸标注、投影原理等个方面,对于理解和设计工程项目至关重要。这份答案集详细解答了教材中的各类练习题目,帮助学习者检验自己的理解,深化对工程图学概念的掌握。在工程图学的学习过程中,了解并熟练应用投影法是基础。主要包括正投影、斜投影、轴测投影等,其中正投影是工程图学中最基本的表达方式,包括三个主要视图:主视图、俯视图和侧视图,它们分别展示了物体从前、上、侧面看的样子。通过这些视图,可以全面了解物体的形状和尺寸。尺寸标注是工程图学中的另一核心内容,正确地标注尺寸能确保工程设计的精确性。这包括定形尺寸、定位尺寸和总体尺寸,以及公差和配合的概念。在《现代工程图学习题集(第3版)答案》中,会涵盖如何进行有效的尺寸标注和解读。此外,学习者还会接触到工程图的符号系统,如剖面符号、断裂符号、焊接符号等,这些都是用来更直观地表示物体内部结构或工艺处理的方法。解题集中的答案将帮助学生理解并正确使用这些符号。在第三版的学习题集中,可能会包含一些新的变化和更新,比如三维建模的引入,CAD(计算机辅助设计)软件的应用,这些都使得工程图学与现代工程技术更加紧密相连。解答集将针对这些现代化的绘图技术和工具提供解决方案。工程图学习题集通常包含各种类型的题目,如绘制视图、识别投影、解释尺寸标注、解决问题等。解答集不仅提供了答案,还可能包含了解题思路和步骤,这对于提高学生的分析和解决问题的能力极其有益。《现代工程图学习题集(第3版)答案》是学习工程图学不可或缺的辅助资料,它能帮助学习者巩固理论知识,提升实践技能,从而更好地应对实际工程中的图学问题。通过对压缩包内的文件进行详细研究,
【源码免费下载链接】:https://renmaiwang.cn/s/tyh5o ### ABAP动态内表使用的例子#### 一、引言在ABAP编程语言中,动态内表(Dynamic Internal Tables)是一种非常灵活的数据结构,它允许程序员在运行时定义和操作内表。与静态内表相比,动态内表提供了更的灵活性,尤其是在处理不确定的数据结构时更为实用。本文将详细介绍ABAP动态内表的使用方法及其具体应用实例。#### 二、创建动态内表##### 1. 定义动态内表结构在ABAP中,创建动态内表的第一步是定义其结构。通常情况下,我们会为内表的所有列定义字符型数据类型。这是因为字符型数据类型的通用性较强,可以存储各种形式的信息。**代码示例:**```abapTYPES: BEGIN OF lvc_s_fcat, fieldname TYPE string, col_pos TYPE i, inttype TYPE string, intlen TYPE i, END OF lvc_s_fcat.TYPES: lvc_t_fcat TYPE STANDARD TABLE OF lvc_s_fcat.```这里我们定义了一个结构`lvc_s_fcat`,包含了`fieldname`(字段名)、`col_pos`(列位置)、`inttype`(数据类型)和`intlen`(数据长度)四个字段。接着定义了一个内表`lvc_t_fcat`,用于存储这些结构。接下来,我们需要定义一个动态内表的结构,该结构必须与上述内表`lvc_t_fcat`具有相同的表结构。```abapDATA it_structure TYPE lvc_t_fcat.```##### 2. 生成动态内表生成动态内表可以通过调用`cl_alv_table_create=>create_dynamic_table
用于独立系统应用的光伏MPPT铅酸电池充电控制器建模(Simulink实现)内容概要:本文档主要围绕“用于独立系统应用的光伏MPPT铅酸电池充电控制器建模(Simulink实现)”展开,介绍了在独立光伏系统中,利用Simulink工具建立最大功率点跟踪(MPPT)控制与铅酸电池充电管理相结合的系统模型。该模型旨在提升光伏能源利用率,并实现对铅酸电池的安全、高效充电管理,涵盖光伏阵列建模、DC-DC升压变换器设计、MPPT算法(如扰动观察法P&O)实现以及阶段电池充电策略(如恒流、恒压、浮充)的仿真集成。文档还提及相关MATLAB/Simulink资源获取途径及团队提供的科研辅导服务。; 适合人群:具备一定电力电子、自动控制或可再生能源基础知识的本科生、研究生及科研人员,熟悉MATLAB/Simulink环境者更佳。; 使用场景及目标:①学习独立光伏系统的整体架构与工作原理;②掌握MPPT技术在Simulink中的建模与仿真方法;③理解铅酸电池充电特性及充电控制器的设计流程;④完成课程设计、毕业设计或科研项目中的系统仿真任务。; 阅读建议:建议结合文中提及的网盘资源下载完整模型文件,边操作Simulink仿真边理解各模块功能,重点关注MPPT算法与充电逻辑的实现细节,并可根据实际需求调整光照、温度等参数进行不同工况下的性能测试。
【源码免费下载链接】:https://renmaiwang.cn/s/2ytto 在Java编程中,标记一个方法过时是一种常见的代码维护策略,它用于指示开发者某个方法将不再推荐使用,可能在未来版本中会被移除。Spring Boot,作为一个基于Spring框架的高度集成了许常见功能的微服务开发工具,同样支持使用Java的`@Deprecated`注解来标记过时的方法。本篇文章将详细介绍如何在Spring Boot中使用`@Deprecated`注解,并讨论其在实际项目中的应用和意义。`@Deprecated`是Java语言提供的一个标准注解,用于标记那些不建议再使用的方法、字段或类。当其他代码尝试使用这些被标记为过时的元素时,编译器会发出警告,提醒开发者应该避免使用这些即将被淘汰的代码。例如,在Spring Boot中,如果我们有一个名为`selectTestDataListById`的方法,由于某些原因(比如优化查询、更名、替换为新功能等)想要废弃它,我们可以这样做:```javaimport org.springframework.lang.Deprecated;@Deprecatedpublic List<TestData> selectTestDataListById(String id) { Map<String, String> params = Maps.newHashMap(); params.put("id", id); return sqlSession.selectList("selectTestDataMapById", params);}```在这段代码中,我们添加了`@Deprecated`注解到`selectTestDataListById`方法上,这样任何尝试调用这个方法的代码在编译时都会收到警告。当我们调用这个过时方法时,例如:```ja
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值