2017多校九 hdu6162 02题 Ch's gift dfs序+树状数组+离散化 / 树链剖分+线段树

生成式引擎优化(GEO)标准化操作流程:构建高效AI生成系统的全链路指南 GEO是针对生成式AI的内容优化策略,通过提升内容在AI生成答案中的引用优先级实现品牌传播。相比传统SEO,GEO使内容直接嵌入AI答案,无需用户点击链接。核心流程包括:1)逆向拆解AI问答场景,结构化知识资产;2)生产权威内容(白皮书、专利数据)和算法适配内容(PCOE模板);3)技术实现(数据投喂、模型微调);4)331渠道分发策略;5)效果监控与动态防御。需注意采用结构化数据标记、主动提交训练数据,并避免简单复制SEO策略。2025版强调内容权威性和语义优化,通过AI原生内容工程实现高效曝光。 阅读详情

题目链接

题意

给定一棵 n 个节点的树,每个点上有权值。m 次询问,问 u,v 链上满足权值 a≤val≤b 的点的权值和。

法一:dfs序+树状数组+离散化

思路

将一条链拆成四条从某个结点到根节点的链,即转化为问 根节点到某个结点的链上满足权值 a≤val≤b 的点的权值和。

离线处理,将从链中拆出来的四个点 u,v,lca(u,v),fa(lca(u,v)) 以及询问的上下界等信息存到对应节点上。

考虑 dfs ,到 u 时将 val[u] 插入到树状数组中离散化后其对应的位置,再按照刚刚存在该节点上的若干组信息去一一计算 ≥ai 且 ≤bi 的数的总和,即为 root 到 u 的满足条件的权值和。u 退出时再将其从树状数组中删除,消除后续影响。

Code

#include <bits/stdc++.h>
#define maxn 100010
using namespace std;
typedef long long LL;
struct node {
    LL a, b;
    int pos; bool type;
    node(LL _a=0, LL _b=0, int _p=0, bool _t=0) : a(_a), b(_b), pos(_p), type(_t) {}
};
struct Edge {
    int to, ne;
    Edge(int _to=0, int _ne=0) : to(_to), ne(_ne) {}
}edge[maxn *2];
int dep[maxn], fa[maxn], son[maxn], ne[maxn], sz[maxn], top[maxn], q, tot, n, m;
LL val[maxn], g[maxn], ret[maxn], c[maxn];
vector<node> que[maxn];
vector<LL> ans[maxn];
void addEdge(int u, int v) {
    edge[tot] = Edge(v, ne[u]);
    ne[u] = tot++;
}
void dfs1(int u, int f, int depth) {
    dep[u] = depth, fa[u] = f, son[u] = -1, sz[u] = 1;
    for (int i = ne[u]; ~i; i = edge[i].ne) {
        int v = edge[i].to;
        if (v == f) continue;
        dfs1(v, u, depth+1);
        sz[u] += sz[v];
        if (son[u] == -1 || sz[son[u]] < sz[v]) son[u] = v;
    }
}
void dfs2(int u, int sp) {
    top[u] = sp;
    if (son[u] == -1) return;
    dfs2(son[u], sp);
    for (int i = ne[u]; ~i; i = edge[i].ne) {
        int v = edge[i].to;
        if (v == fa[u] || v == son[u]) continue;
        dfs2(v, v);
    }
}
int LCA(int u, int v) {
    int fau = top[u], fav = top[v];
    while (fau != fav) {
        if (dep[fau] < dep[fav]) swap(fau, fav), swap(u, v);
        u = fa[fau], fau = top[u];
    }
    return dep[u] < dep[v] ? u : v;
}
int lowbit(int x) { return x & (-x); }
void add(int x, LL w) { while (x <= q) c[x] += w, x += lowbit(x); }
LL query(int x) { LL ret = 0; while (x) ret += c[x], x -= lowbit(x); return ret; }
LL calc(LL a, LL b) {
    LL ret = 0;
    int p = upper_bound(g+1, g+1+q, b) - (g+1);
    if (p) ret += query(p);
    p = upper_bound(g+1, g+1+q, a-1) - (g+1);
    if (p) ret -= query(p);
    return ret;
}
void dfs(int u) {
    vector<int> v;
    add(upper_bound(g+1, g+1+q, val[u])-(g+1), val[u]);
    if (!que[u].empty()) {
        for (auto x : que[u]) {
            ans[u].push_back(calc(x.a, x.b));
        }
    }
    for (int i = ne[u]; ~i; i = edge[i].ne) {
        int v = edge[i].to;
        if (v == fa[u]) continue;
        dfs(v);
    }
    add(upper_bound(g+1, g+1+q, val[u])-(g+1), -val[u]);
}
void work() {
    for (int i = 1; i <= n; ++i) ans[i].clear(), que[i].clear();
    tot = 0; memset(ne, -1, sizeof(ne));
    memset(c, 0, sizeof c);
    for (int i = 1; i <= n; ++i) {
        scanf("%lld", &val[i]);
        g[i] = val[i];
    }
    sort(g+1, g+1+n);
    q = unique(g+1, g+1+n) - (g+1);
    for (int i = 1; i < n; ++i) {
        int u, v;
        scanf("%d%d", &u, &v);
        addEdge(u, v); addEdge(v, u);
    }
    dfs1(1, -1, 0);
    dfs2(1, 1);
    for (int i = 0; i < m; ++i) {
        int s, t; LL a, b;
        scanf("%d%d%lld%lld", &s, &t, &a, &b);
        int lca = LCA(s, t);
        que[s].push_back(node(a, b, i, 1)), que[t].push_back(node(a, b, i, 1)), que[lca].push_back(node(a, b, i, 0));
        if (lca != 1) que[fa[lca]].push_back(node(a, b, i, 0));
    }

    dfs(1);

    memset(ret, 0, sizeof ret);
    for (int i = 1; i <= n; ++i) {
        if (que[i].empty()) continue;
        int sz = que[i].size();
        for (int j = 0; j < sz; ++j) {
            int p = que[i][j].pos;
            if (que[i][j].type) ret[p] += ans[i][j];
            else ret[p] -= ans[i][j];
        }
    }
    printf("%lld", ret[0]);
    for (int i = 1; i < m; ++i) printf(" %lld", ret[i]); printf("\n");
}
int main() {
    while (scanf("%d%d", &n, &m) != EOF) work();
    return 0;
}

法二:树链剖分+线段树

思路

离线操作。

询问 [a,b] 范围内的数的和,等价于问 [0,b] 与 [0,a−1] . 再转化一下,如果将树上的点一个个从小到大插入线段树,并且在恰当的时机(已经插入的最大值 ≤ 当前询问的值 && 当前询问的值 < 下一个要插入的值)询问,那么得到的即为权值范围在 [0,当前询问的值] 的区间和。

于是很显然的,就是将 树上所有点的权值 及 询问中涉及到的权值 一起排个序,进行两种操作:1. 插入点; 2. 询问区间和。就是裸的树链剖分了。

Code

#include <bits/stdc++.h>
#define maxn 100010
#define lson (rt << 1)
#define rson lson | 1
using namespace std;
typedef long long LL;
struct node {
    LL val; int s, t;
    int pos; bool type; bool op;
    node(bool _op=0, LL _val=0, int _s=0, int _t=0, int _pos=0, bool _type=0) :
        op(_op), val(_val), s(_s), t(_t), pos(_pos), type(_type) {}
};
struct Tree {
    int l, r; LL w;
}tr[maxn * 4];
struct Edge {
    int to, ne;
    Edge(int _to=0, int _ne=0) : to(_to), ne(_ne) {}
}edge[maxn *2];
int dep[maxn], fa[maxn], son[maxn], ne[maxn], sz[maxn], top[maxn], le[maxn], cnt, tot, n, m;
LL val[maxn], ans[maxn];
vector<node> op;
void addEdge(int u, int v) {
    edge[tot] = Edge(v, ne[u]);
    ne[u] = tot++;
}
void dfs1(int u, int f, int depth) {
    dep[u] = depth, fa[u] = f, son[u] = -1, sz[u] = 1;
    for (int i = ne[u]; ~i; i = edge[i].ne) {
        int v = edge[i].to;
        if (v == f) continue;
        dfs1(v, u, depth+1);
        sz[u] += sz[v];
        if (son[u] == -1 || sz[son[u]] < sz[v]) son[u] = v;
    }
}
void dfs2(int u, int sp) {
    top[u] = sp, le[u] = ++cnt;
    if (son[u] == -1) return;
    dfs2(son[u], sp);
    for (int i = ne[u]; ~i; i = edge[i].ne) {
        int v = edge[i].to;
        if (v == fa[u] || v == son[u]) continue;
        dfs2(v, v);
    }
}
bool cmp(node u, node v) { return u.val < v.val || (u.val == v.val && u.op < v.op); }
void build(int rt, int l, int r) {
    tr[rt].l = l, tr[rt].r = r, tr[rt].w = 0;
    if (l == r) return;
    int mid = l+r >> 1;
    build(lson, l, mid); build(rson, mid+1, r);
}
void modify(int rt, LL x, int p) {
    if (tr[rt].l == tr[rt].r) { tr[rt].w = x; return; }
    int mid = tr[rt].l+tr[rt].r >> 1;
    if (p <= mid) modify(lson, x, p);
    else modify(rson, x, p);
    tr[rt].w = tr[lson].w + tr[rson].w;
}
LL query(int rt, int l, int r) {
    if (tr[rt].l == l && tr[rt].r == r) return tr[rt].w;
    int mid = tr[rt].l + tr[rt].r >> 1;
    if (r <= mid) return query(lson, l, r);
    else if (l > mid) return query(rson, l, r);
    else return query(lson, l, mid) + query(rson, mid+1, r);
}
LL ask(int u, int v) {
    int fau = top[u], fav = top[v]; LL ret = 0;
    while (fau != fav) {
        if (dep[fau] < dep[fav]) swap(fau, fav), swap(u, v);
        ret += query(1, le[fau], le[u]);
        u = fa[fau], fau = top[u];
    }
    if (dep[u] < dep[v]) swap(u, v);
    ret += query(1, le[v], le[u]);
    return ret;
}
void work() {
    tot = cnt = 0; memset(ne, -1, sizeof(ne));
    op.clear();
    for (int i = 1; i <= n; ++i) {
        scanf("%lld", &val[i]);
        op.push_back(node(0, val[i], i));
    }
    for (int i = 1; i < n; ++i) {
        int u, v;
        scanf("%d%d", &u, &v);
        addEdge(u, v); addEdge(v, u);
    }
    dfs1(1, -1, 0);
    dfs2(1, 1);
    build(1, 1, n);
    for (int i = 0; i < m; ++i) {
        int s, t; LL a, b;
        scanf("%d%d%lld%lld", &s, &t, &a, &b);
        op.push_back(node(1, a-1, s, t, i, 0)); op.push_back(node(1, b, s, t, i, 1));
    }
    sort(op.begin(), op.end(), cmp);
    memset(ans, 0, sizeof(ans));
    for (auto nd : op) {
        if (nd.op) {
            LL ret = ask(nd.s, nd.t);
            if (nd.type) ans[nd.pos] += ret;
            else ans[nd.pos] -= ret;
        }
        else modify(1, nd.val, le[nd.s]);
    }
    printf("%lld", ans[0]);
    for (int i = 1; i < m; ++i) printf(" %lld", ans[i]); printf("\n");
}
int main() {
    while (scanf("%d%d", &n, &m) != EOF) work();
    return 0;
}

两种方法跑下来时间差不多0 0

以及w感觉很开心没怎么调就1A过了

Qt 【window udp 高频采集丢包问题】 使用Asio + 无锁队列或者环形缓存区方案可以解决 qt udp 在window平台高速采集 (128k)丢包问题。 阅读详情

相关推荐

Verilog与综合:数字逻辑的代码化革命及其未来挑战

本文深入探讨Verilog硬件描述语言与逻辑综合技术在数字芯片设计中的革命性作用。Verilog实现了数字逻辑的代码化描述,而综合技术则将其自动转换为门级网表,大幅提升设计效率。文章重点分析了在先进工艺节点下面临的时序、功耗和物理效应等挑战,并展望了AI驱动综合优化的未来发展方向。

postgres8guard的博客 801

EOJ3335&&hdu6162 Ch’s gift 树剖/dfs序/离线查询/主席树,各显神通

多校第九场的02 北邮出题,hdu上数据极弱 赛后发现数据是个巨型菊花图,所以裸的LCA的大暴力是可以水过的 树剖配合线段树维护最大最小值和区间和也是可以水过的 当然,本文的三种解法不包括水的解法 巨型菊花图???讲道理嘛 章鱼哥加强了本题数据挂在了EOJ3335上 对于正常的数据,这里笔者找到三种解法 dfs序+离线查询 由...

weixin_30955341的博客 190

原恒星尘埃生长的三维MHD模拟与湍流效应研究

星际尘埃演化是恒星形成过程中的关键环节,其动力学行为直接影响行星系统的构建。通过磁流体力学(MHD)模拟可以揭示尘埃颗粒从微米级到行星胚胎尺度的生长机制,其中湍流效应通过改变碰撞频率和密度结构发挥双重作用。最新研究采用COALA-RAMSES耦合框架,实现了包含自洽尘埃生长的三维非理想MHD模拟,量化了不同物理环境下尘埃尺寸分布的演化规律。这些发现不仅为解释ALMA观测数据提供理论依据,也对行星形成初期条件约束具有重要意义,特别是在湍流参数化与尘埃生长速率关系方面取得突破。

weixin_30988079的博客 383

HDU 6162 && 2017 多校训练:Ch's gift(树链剖分)

题意: 有一棵n个节点的树,m次查询,每次查询x, y, a, b表示节点x到y的路径上所有在[a, b]范围内的权值和 树链剖分+线段树 询问离线,按a和b分别排序求出所有小于a和所有小于b+1的权值和,然后相减就可以了 因为排了序,所以更新当然只用单点逐一更新 #include #include #include #include using namespace std; #

加载中... 1724

来自工业界的知识库 RAG 服务(二),RagFlow 源码全流程深度解析

前面介绍过有道 QAnything 源码解析,通过深入了解工业界的知识库 RAG 服务,得到了不少调优 RAG 服务的新想法。因此本次趁热打铁,额外花费一点时间,深入研究了另一个火热的开源 RAG 服务RagFlow的完整实现流程,希望同样有所收获。首先依旧可以先从框架图入手,与常规的 RAG 架构进行一些比较可以看到右侧知识库被明显放大,同时最右侧详细介绍了文件解析的各种手段,比如OCR等,这些在常规的 RAG 中可能会作为一个不起眼的。

易迟的专栏 2万+

Spring AI + RAG 构建电商智能客服:从 PDF 文档解析到精准问答的全链路实战

核心框架:向量数据库:- PostgreSQL + pgvector (生产推荐)- Redis Stack (轻量级方案)- ChromaDB (快速原型)文档解析:- Apache PDFBox: PDF 文本提取- Spring AI Document Readers: 结构化解析大模型:- 阿里云百炼 (DashScope)- 本地部署:Qwen/ChatGLM/*** 电商领域实体*/@Data@Builder@ToString/*** 商品类型。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 381

Java接口与多态核心解析:从课后题到工程实践

面向对象编程中的接口与多态是Java语言的核心概念,也是构建灵活、可扩展软件系统的基石。接口定义了一组行为契约,实现了解耦与标准化;多态则允许同一操作作用于不同对象,产生不同行为,提升了代码的复用性和可维护性。在工程实践中,接口与多态的价值尤为突出,它们支撑了依赖倒置、策略模式等经典设计模式,是实现模块解耦、提升测试效率的关键技术。例如,通过面向接口编程,可以轻松实现数据源的切换,满足不同应用场景的需求;利用多态特性,能够创建Mock对象进行单元测试,确保代码质量。本文聚焦Java接口与多态的高频易错点,通

weixin_30482383的博客 359

基于Matlab的MIMO通信系统仿真_Simulink实现

瑞利衰落信道中使用空时分组码的BPSK调制的BER 1、2发1收 参数设置: 双极性信号元+1和-1,每符号含1bit; 采样时间=符号时间=1s; 采用基于数据帧的仿真计算模式,每帧中有2个采样值; 仿真时间=出现100个误码后停止仿真; 随机整数种子=22; Jakes衰落模型中每个信道上的多普勒频移=0.01Hz; 输人信号功率=2W; Alamouti码:两根发送天线,一根接收天线(分集阶= 2); 平均信道信噪比= 18dB; 仿真得出的误码率统计BER =0. 00017. 2、2发

太阳帅帅的博客 9688

HDU6162 Ch’s gift【LCA】

题意:给定一棵树,求两个点之间路径上的点权和,点权在一定范围内才有效,否则为0 思路:开始T了一发双向BFS,后来想到有个算法叫LCA,可惜没学过,现场学,还用错一个模板,用的是二分搜索找LCA的模板。我是每次加上新到的点的权(范围内),二分这个,更新的点,不一定是路径上的。应该用一步一步往上走的模板,赛后才想到,为时已晚。 每个点有一个深度,找两个点的LCA时,大家先走到一个深度,再

狂奔的蜗牛 892

STM32CubeIDE之SHT3X温湿度传感器移植HAL库

有了前面的OLED的学习,这个学习起来也很快。 分以下几步走 1.你要有个温度传感器,SHT3X这个型号的,因为我要讲这个 2.你要有个STM32开发板(我用的是STM32L431RCT) 3.顺便找台电脑下载一个STM32CubeIDE 4.简单的找一个SHT3X的驱动,我是去某宝嫖的,一般卖这个的都有,这个驱动分两个文件,是.c和.h的,我直接把这两个放在下边 读了我上一篇的人,看这个应该很熟悉吧,一样的套路,学习方法是一样的,你就照搬就行 下面是sht3x.c的原文档,里面有个CRC..

qq_47736089的博客 2314

PyTorch生成式人工智能(25)——基于Transformer实现机器翻译

不同于循环神经网络 (RNN) 按顺序处理数据,Transformer 以并行的方式处理输入数据(例如句子)。这种并行处理提高了效率,但并未使其能够识别输入的顺序。为了解决这个问题,Transformer 向输入的词嵌入中添加了位置编码。这些位置编码是分配给输入序列中每个位置的独特向量,其维度与输入词嵌入对齐。本节将以英语到法语的翻译为例,通过介绍如何训练 Transformer 模型将英语句子转换为法语,深入理解 Transformer 的架构及自注意力机制的运作方式。

盼小辉丶的博客 2727

EOJ#3335 Ch’s gift (Hard)【崔先生的礼物(困难)】

单点时限: 3.0 sec内存限制: 256 MB Mr. Cui is working off-campus and he misses his girlfriend very much. After a whole night tossing and turning, he decides to get to his girlfriend’s city and of course, with ...

wckdzz的博客 612

OpenClaw实战系列10(完结篇):企业级应用实战案例——从0到1搭建智能客服系统

本文以一家跨境电商公司为例,从需求分析、系统设计、分步搭建到上线运营,完整呈现智能客服系统的落地全过程。所有配置命令和截图均来自实测环境,你可以直接复制使用。

PeterPan的博客 1305

hdu 6162 Ch’s gift【树链剖分】

第一次敲树链剖分,以前都没看懂树链剖分用来干什么的,为多校留个纪念。 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6162 题意: 给一棵树,每次问某两点之间的最短路径上,能够满足价格在[a,b]这个范围内的价值之和是多少。 其实题意很明显是个熟练剖分。但是以前都没有敲过树链剖分,所以并get不到树剖之后再用树维护。

QuanQqqqq的博客 465

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

hdu 6162 Ch’s gift 树链剖分 + 离线查询

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6162题意:给定一个树形图,有点权,每次一个查询,问从点vv到uu路径上点权在[a,b][a,b]之内的和思路:直接查询好像好像不太行。把每个询问拆成两个:求路径上点权在[0,a−1][0,a-1]内的和sum1sum_1与点权在[0,b][0,b]的和sum2sum_2,那么sum2−sum1sum_2-s

弱智就要多努力 448

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

HDU 6162 Ch's gift(树链剖分+线段树)

题意: 已知树上的每个节点的值和节点之间的关系建成了一棵树,现在查询节点u到节点v的最短路径上的节点值在l到r之间的节点值的和。 思路: 用树链剖分将树映射到线段树上,线段树上维护3个值,max,min和sum即可。 接下来就是一个简单的线段树上的查询。 1 #include<iostream> 2 #include<algorithm>...

weixin_30314793的博客 141

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

2017多校训练赛第九场 HDU 6162(离线处理+树链剖分+线段树解法)

离线处理的题目千千万万,但很多时候还是能够让你耳目一新……         没有修改操作,很显然可以离线水。但是与普通的lca不同,这题要求是求点权在一个区间内的两点路径权值和。加了个值域,就足以让人头疼。但是,万能的我(not)们(me)总能想到方法解决。对于一个询问(x,y,l,r),如果我们把它拆成(x,y,l-1)和(x,y,r)会发生什么呢?没错,如果我能够分别求出这两个,那么把他们两个相减不久可以得到结果了吗。但是,即使如此,还是有一个最大值的限制,不过不要忘了,我们可是在离线处理啊。每个点都有

alpc_qleonardo 741

(离线树链剖分)HDU - 6162 Ch’s gift

题意: 一颗树,q次查询从u到v路径上所有权值在l到r之间的和。 分析: 一开始想写树上主席树,然后感觉内存不够就放弃。 然后想了一个小时,然后发现,询问似曾相识,回忆起一题。 然后发现直接离线搞就行了。 确切的说这题和HDU4417是完全一样的。 将询问排序,然后把小的点加进去,然后查询。 至于l和r,将两个分开分别处理就行了嘛。 算是比较裸的题了,居然想了这么久。 ...

dijieluan7764的博客 259

HDU-6162---Ch’s gift (树链剖分+离线)(2017多校9)

Ch’s gift Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 638    Accepted Submission(s): 225 Problem Description Mr. Cui is working o

wust_cyh 354

2017多校六 1002题 hdu 6097 Mindis 相似三角形 计算几何

题目链接 题意: 圆心 O 坐标(0, 0), 给定两点 P, Q(不在圆外),满足 PO = QO, 要在圆上找一点 D,使得 PD + QD 取到最小值。 官方题解: 做P点关于圆的反演点P',OPD与ODP'相似,相似比是|OP| : r。 Q点同理。 极小化PD+QD可以转化为极小化P'D+Q'D。 当P'Q'与圆有交点时,答案为两点距离

kkkkahlua的博客 1668

2017多校联合第三场 1005题 hdu 6060 RXD and dividing (超详细!!!)构造

题目链接 题意: 给定一棵 n 个节点的树,1 为根。现要将节点 2 ~ n 划分为 k 块,使得每一块与 根节点 形成的最小斯坦纳树的 边权值 总和最大。 看了题解之后的思考: 题解是:记有向边 (u, v) 长度为 w[v],以点 v 为根的子树的节点总数为 sz[v],那么答案就是 w[v] * min(sz[v], k) 对每个点求个和。 题解的说法是:可以通过构

kkkkahlua的博客 1071

HDU 3336 Count the string 所有前缀在串中的出现总次数

题目链接题意给定一个串 SS,求其所有前缀在其中的出现次数的总和。思路考虑 failfail 数组,fail[i]=jfail[i] = j 的含义是 S[0..j−1]==S[i−j..i−1]S[0..j-1] == S[i-j..i-1].记 dp[i]dp[i] 为以 ii 结尾的串中与前缀相同的串的个数。由 fail[i]=jfail[i] = j 有 S[0..j−1]==S[i−j..

kkkkahlua的博客 996

2017多校联合第二场 1009题 hdu 6053 TrickGCD (超详细!!!)莫比乌斯 容斥

题目链接 题意: Problem Description You are given an array A , and Zhu wants to know there are how many different array B satisfy the following conditions? * 1≤Bi≤Ai * For each pair( l ,

kkkkahlua的博客 898

2017多校八 1002题 hdu 6134 Battlestation Operational 艾弗森约定 莫比乌斯函数 分块

题目链接 题意: Your should calculate the total damage to the battlefield. Formally, you should compute f(n)=∑i=1n∑j=1i⌈ij⌉[(i,j)=1], where [(i,j)=1] evaluates to be 1 if gcd(i,j)=1,

kkkkahlua的博客 832

2017多校联合第一场 1006题 hdu 6038 Function 循环节

题目链接 题意: Please calculate the quantity of different functions f satisfying that f(i)=bf(ai) for each i from 0 to n−1. (嗯...就是这样) 思路: 首先可以将 a 数组划分成若干个循环节,每个节是相互独立的,取其中一个节来看,令其长度为 l

kkkkahlua的博客 805

2017多校四 1003题 hdu 6069 Counting Divisors 分解质因数

题目链接 参考:http://blog.youkuaiyun.com/protecteyesight/article/details/76685920  ——protecteyesight 题意: Problem Description In mathematics, the function d(n) denotes the number of divisors o

kkkkahlua的博客 689
上一篇: 2017多校九 01题 HDU6161 Big binary tree 树形dp+hash
下一篇: 后缀数组倍增算法模板详解
kkkkahlua
博客等级 码龄12年 4粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值