[计蒜客] ACM-ICPC 2019 南京赛区网络预赛 | 部分题解 | 线段树 + 线性筛 + 最短路(下)

简介: J. Nanjing Sum题目描述输入输出样例输入样例输出提示L. Magical Girl Haze题目描述输入输出样例输入样例输出题意:

J. Nanjing Sum


题目描述


A square-free integer is an integer which is indivisible by any square number except 1. For example, 6 = 2·3 is square-free, but 12 = 22·3 is not, because 22 is a square number. Some integers could be decomposed into product of two square-free integers, there may be more than one decomposition ways. For example, 6 = 1·6=6·1=2·3=3·2, n=ab and n=ba are considered different if a≠b. f(n) is the number of decomposition ways that n=ab such that a and b are square-free integers. The problem is calculating

.ca795bb632c94a95a4f5b9d6acc86dbd.png


输入


The first line contains an integer T(T≤20), denoting the number of test cases. For each test case, there first line has a integer n(n≤2·107).


输出


ca795bb632c94a95a4f5b9d6acc86dbd.png

For each test case, print the answer

.

样例输入


2
5
8


样例输出


8
14


提示


cc43513049a04385a4dd157e67d441a2.png=f(1)+⋯+f(8)=1+2+2+1+2+4+2+0=14


素数的f()一定是2

如果说对一个数x进行唯一分解之后,其某一项的指数≥ 3,那么说这个f()值一定是0

n=p1e1x ,则有

b893b6c69ef54aef9147645c041e85ee.png

为什么哩,因为如果 e1 = 2,那么对于 n ,pe1 的贡献就只有 1,p21= p 1 ⋅ p 1 ,所以 f ( p21) = 1 ,而当 e 1 = 1 时,贡献为2 ,因为此时p1 为质数, f ( p1 ) = 2 ,但是得同时保证 x和pe1 1没有大于x 和pe11没有大于1 的共同因子.


最后前缀和一下就可以完成了

可以参考:博客

bool vis[maxn];
int cnt = 0;
int Pri[maxn];
ll f[maxn];
void _Get_Prime(int lim) {
    f[1] = 1LL;
    for (ll i = 2; i <= lim; i++) {
        if (vis[i] == 0) {
            Pri[++cnt] = i;
            f[i] = 2;///prime
        }
        for (ll j = 1; j <= cnt; j++) {
            ll val = i * Pri[j];
            if(val > lim) break;
            vis[val] = 1;
            if (i % Pri[j]) f[val] = f[i] * f[Pri[j]];
            else if(i % (Pri[j] * Pri[j]) == 0) {
                f[val] = 0;
            } else {
                f[val] = f[val / (Pri[j] * Pri[j])];
                break;
            }
        }
    }
}
int main() {
    _Get_Prime(20000000);
    for(int i=1; i<=20000000; i++) {
        f[i] += f[i-1];
    }
    int _ = read;
    while(_ --) {
        ll x = read;
        printf("%lld\n",f[x]);
    }
    return 0;
}
/**
**/


L. Magical Girl Haze


题目描述


There are N cities in the country, and M directional roads from u to v(1<=u, v<=n).Every road has a distance ci. Haze is a Magical Girl that lives in City 1, she can choose no more than K roads and make their distances become 0. Now she wants to go to City N, please help her calculate the minimum distance.


输入


The first line has one integer T(1<=T<=5), then following T cases.

For each test case, the first line has three integers N, M and K. Then the following M lines each line has three integers, describe a road, Ui, Vi, Ci. There might be multiple edges between u and v.

It is guaranteed that N<=100000, M<=200000, K<=10, 0<=c[i]<=1e9. There is at least one path between City 1 and City N.


输出


For each test case, print the minimum distance.


样例输入


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


样例输出


3


题意:


从可以将图中不超过k条有向边的边权设置为0,然后问从1到n的最短路径是多少

可以用分层图最短路来实现

const int maxn=5e6+7;
const int inf=0x3f3f3f3f;
int T,n,m,k;
int tot,head[maxn];
ll d[maxn];
bool f[maxn];
struct edge{    int to,next,w;  }e[maxn];
struct node{
    int dis,u;
    node(int dis,int u):dis(dis),u(u){};
    bool operator<(const node &t)const{  return dis>t.dis;    }
};
void add(int u,int v,int w){
    e[++tot].w=w;   e[tot].to=v;
    e[tot].next=head[u];    head[u]=tot;
}
void dij(){
    priority_queue<node>q;
    memset(f,0,sizeof(f));  memset(d,inf,sizeof(d));
    d[0]=0;
    q.push(node(0,0));
    while(!q.empty()){
        node x=q.top(); q.pop();
        int u=x.u,dis=x.dis;
        if(f[u])    continue;   f[u]=1;
        for(int i=head[u];i;i=e[i].next){
            int y=e[i].to;
//          cout<<y<<endl;
            if(d[y]>d[u]+e[i].w){
                d[y]=d[u]+e[i].w;
                q.push(node(d[y],y));
            }
        }
    }
}
int main(){
    T=read();
    while(T--){
        n=read();   m=read();   k=read();
        memset(head,0,sizeof(head));    tot=0;
        while(m--){
            int u,v,w;
            u=read()-1; v=read()-1; w=read();
            for(int i=0;i<=k;i++){
                add(u*(k+1)+i,v*(k+1)+i,w);
                if(i<k)  add(u*(k+1)+i,v*(k+1)+i+1,0);
            }
        }
        dij();
        int sum=inf;
        for(int i=0;i<=k;i++)    sum=min(1ll*sum,d[(n-1)*(k+1)+i]);
        cout<<sum<<endl;
    }
}
/*
1
5 6 1
1 2 2
1 3 4
2 4 3
3 4 1
3 5 6
4 5 2
*/






目录
相关文章
|
人工智能 BI 网络架构
[计蒜客] ACM-ICPC 2018 南京赛区网络预赛 | 部分题解 | 线段树 + 线性筛 + 最短路(上)
E. AC Challenge 题目描述 输入 输出 样例输入 样例输出 提示 题意: A. An Olympian Math Problem G. Lpl and Energy-saving Lamps 题目描述 输入 输出 样例输入 样例输出 提示 ac_code:
176 0
[计蒜客] ACM-ICPC 2018 南京赛区网络预赛 | 部分题解 | 线段树 + 线性筛 + 最短路(上)
|
1月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
68 17
|
1月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
1月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
59 10
|
1月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
65 10
|
1月前
|
存储 监控 安全
云计算与网络安全:云服务、网络安全、信息安全等技术领域的融合与挑战
本文将探讨云计算与网络安全之间的关系,以及它们在云服务、网络安全和信息安全等技术领域中的融合与挑战。我们将分析云计算的优势和风险,以及如何通过网络安全措施来保护数据和应用程序。我们还将讨论如何确保云服务的可用性和可靠性,以及如何处理网络攻击和数据泄露等问题。最后,我们将提供一些关于如何在云计算环境中实现网络安全的建议和最佳实践。
|
1月前
|
监控 安全 网络安全
网络安全与信息安全:漏洞、加密与意识的交织
在数字时代的浪潮中,网络安全与信息安全成为维护数据完整性、保密性和可用性的关键。本文深入探讨了网络安全中的漏洞概念、加密技术的应用以及提升安全意识的重要性。通过实际案例分析,揭示了网络攻击的常见模式和防御策略,强调了教育和技术并重的安全理念。旨在为读者提供一套全面的网络安全知识框架,从而在日益复杂的网络环境中保护个人和组织的资产安全。
|
1月前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们日常生活中不可或缺的一部分。本文将深入探讨网络安全漏洞、加密技术和安全意识等方面的问题,并提供一些实用的建议和解决方案。我们将通过分析网络攻击的常见形式,揭示网络安全的脆弱性,并介绍如何利用加密技术来保护数据。此外,我们还将强调提高个人和企业的安全意识的重要性,以应对日益复杂的网络威胁。无论你是普通用户还是IT专业人士,这篇文章都将为你提供有价值的见解和指导。
|
1月前
|
安全 算法 网络协议
网络安全与信息安全知识分享
本文深入探讨了网络安全漏洞、加密技术以及安全意识三个方面,旨在帮助读者更好地理解和应对网络安全威胁。通过分析常见的网络安全漏洞类型及其防范措施,详细介绍对称加密和非对称加密的原理和应用,并强调提高个人和企业安全意识的重要性,为构建更安全的网络环境提供指导。
53 2
|
1月前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:漏洞、加密与意识的艺术
在数字世界的迷宫中,网络安全和信息安全是守护者之剑。本文将揭示网络漏洞的面纱,探索加密技术的奥秘,并强调安全意识的重要性。通过深入浅出的方式,我们将一起走进这个充满挑战和机遇的领域,了解如何保护我们的数字身份不受威胁,以及如何在这个不断变化的环境中保持警惕和适应。
43 1