全新题目
【编程题目 |100分】网络保卫战【华为OD机试 2024 Q2考试题 C卷】
时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++262144K,其他语言524288K
64bit IO Format:%lld
语言限定:
C(clang11), C++(clang++11), Pascal(fpc 3.0.2), Java(javac 1.8), Python2(2.7.3),
PHP(7.4.7), C#(mcs5.4), ObjC(gcc 5.4), Python3(3.9), JavaScript Node(12.18.2), JavaScript V8(6.0.0),
Sqlite(3.7.9), R(4.0.3), Go(1.14.4), Ruby(2.7.1), Swift(5.3), matlab(Octave 5.2), Pypy2(pypy2.7.13),
Pypy3(pypy3.6.1), Rust(1.44), Scala(2.11.12), Kotlin(1.4.10), Groovy(3.0.6), TypeScript(4.1.2), Mysql(8.0)
本题可使用本地IDE编码,不能使用本地已有代码,无跳出限制,
编码后请点击”保存并调试“按钮进行代码提交。
■ 题目描述
【网络保卫战】
公有云的某个 region 内,N 个网络节点组网情况可以使用一个 N * N 的矩阵 matrix 表示。
在这个组网图中,matrix[i][j] = p 时,表示用户在编号为 i 的节点访问编号为 j 的节点时,必须在 i 节点上具有 ≥ p 的权限等级( p = 0 时表示无法通过第 i 节点访问 j 节点),如果用户成功访问了 j 节点,那么它在 j 节点上的权限等级调整为 p。
exposed 为一个整数数组,表示暴露在公网上的网络节点的编号列表。
某天扫描发现这批暴露在公网的节点存在被外部恶意攻击风险,且该攻击会影响到可访问的其他节点,并可以持续传递进行攻击。
被恶意攻击的节点从公网访问时,攻击者获得了 ROOT 权限(权限等级为10,即最大值)。
小李是一名网络安全工程师,为了在有限的时间内尽可能的减少故障带来的损失,需要立即将某个节点从公网”下线”。
假设攻击结束时,被攻击过的节点数量为 R ,请帮小李计算出将哪个节点下线能使 R 尽可能小,如果答案有多个节点,返回索引最小的那个节点。
请注意:从公网 “下线” 的节点,不会受到来自公网的攻击,但仍然可能被 “可访问” 的其他节点传递攻击。
代码实现
Golang
package main import ( "fmt" "sort" "strconv" )
剩余50%内容,购买单篇文章或订阅会员后查看
此处内容需要权限查看
会员免费查看C++
#include <bits/stdc++.h> using namespace std;
剩余50%内容,购买单篇文章或订阅会员后查看
此处内容需要权限查看
会员免费查看C
#include <stdio.h> using namespace std;
剩余50%内容,购买单篇文章或订阅会员后查看
此处内容需要权限查看
会员免费查看JAVA
package com.huawei.uapcc.tm.decoder; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in);
剩余50%内容,购买单篇文章或订阅会员后查看
此处内容需要权限查看
会员免费查看Python
from typing import List class Solution:
剩余50%内容,购买单篇文章或订阅会员后查看
此处内容需要权限查看
会员免费查看JavaScript
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, });
剩余50%内容,购买单篇文章或订阅会员后查看
此处内容需要权限查看
会员免费查看