基础算法题——虫洞(简单版、vector)

2023-11-13

虫洞(简单)

题目链接题目1
题目2
题目3
题目4题目6
题目5


解题步骤:

①、求出第 i 个星球作为中心子星系时,f[i] 的大小。
②、对每个 i 与 n - f[i] 异或后的结果相加,再对998244353取模即可得到答案。

问题关键点
求第 i 个星球 f[i] 的大小

个人解题思路:暴力
①、利用两个 vector 数组存储每个星球被哪些星球环绕的信息、将第 i 个星球看作第一类星球时,所有不同类型星球数。

vector <int> g[1010];	//记录路径
vector <int> v[1010];	//记录类型数 

②、将每个星球都看作是第一类星球,进行暴力枚举。并不断记录第 i 个星球的 f[i]。


AC代码

#include<iostream>
#include<vector>
#include<memory.h>
#define ll long long
using namespace std;
int n, x, w[1010], tmp[1010], f[1010];
const ll mod = 998244353;

vector <int> g[1010];	//记录路径
vector <int> v[1010];	//记录类型数 

//计算第x星球所有的类型数星球 
void dfs(int x, int lx){
	for(int i=0; i<g[x].size(); i++){
		v[lx].push_back(w[g[x][i]]);
		dfs(g[x][i], lx+1);
	}
	
	return;
}

int main(){
//	freopen("data.txt", "r", stdin);
	cin>>n>>x;
	
	for(int i=2; i<=n; i++){
		int a;
		cin>>a;
		g[a].push_back(i);
	}
	
	for(int i=1; i<=n; i++)
		cin>>w[i];
	
	//将每一个星球看作单独的个体,枚举 
	for(int i=1; i<=n; i++){
		dfs(i, 2);
		
		//开始组合 从第二个类型开始 
		for(int j=2; j<=n; j++){
			if(v[j].size()==0) break;
			
/*			printf("i:%d j:%d ", i, j);
			for(int k=0; k<v[j].size(); k++){
				printf("%d ", v[j][k]); 
			} 
			printf("\n");*/
			
			int flag=0;	//标志位 
			for(int k=0; k<v[j].size()&&flag==0; k++){
				for(int k2=k+1; k2<v[j].size()&&flag==0; k2++){
					int tmp = v[j][k]^v[j][k2];
					if(tmp==x){
						flag=1;
						f[i]++;
					}
				}
			}
		}
		for(int k=2; k<=n; k++){
			if(v[k].size()==0) break;
			v[k].clear();
		}
	}

//	for(int i=1; i<=n; i++)
//	cout<<f[i]<<" ";	
//	cout<<endl;
	
	ll ans=0;
	for(int i=1; i<=n; i++){
		ll tmp = i^(n-f[i]);
		ans = (ans+tmp%mod)%mod;
	}
		
	cout<<ans;
	
	return 0;
} 

总结

这道题因为 n 的数据范围较小,能够用暴力的方式解决。我们有时间不妨可以思考一下,当 n=1000000时,我们如何解决这道难题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基础算法题——虫洞(简单版、vector) 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern

随机推荐

  • 网络上的学习笔记 Hadoop

    1 如今有10个文件夹 每个文件夹都有1000000个url 如今让你找出top1000000url 1 运用2个job 第一个job直接用filesystem读取10个文件夹作为map输入 url做key reduce计算个url的sum
  • 【弹性分布式EMA】在智能电网中DoS攻击和虚假数据注入攻击(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 FDIA攻击 1 2 DoS攻击 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述
  • Java 正则提取短信签名

    使用java 正则表达式提取短信签名 import java util regex Matcher import java util regex Pattern public class ExtractSmsSignature 匹配中括号内
  • 安装ESXi

    1 简介 ESXi是vmware推出的一款优秀的服务器级别的虚拟机 它与我们常用的虚拟机不同的是 日常使用的虚拟机是需要依赖于一个操作系统的 比如在window上使用vmware 或者linux上使用virtualbox 而ESXi不依赖于
  • 【多模态】1、几种多模态 vision-language 任务和数据集介绍

    文章目录 一 Phrase Grounding 1 1 概念介绍 1 2 常用数据集介绍 1 3 评估指标 二 Referring Expression Comprehension REC 2 1 概念介绍 2 2 常用数据集介绍 三 Vi
  • cmd相关命令

    查看本地端口占用问题并进行处理 1 查看所有的端口及相关信息 命令 netstat ano 2 找到对应的端口对应的PID 输入指令找到对应的进程 tasklist findstr 7676 7676表示pid 3 杀掉该进程 再次启动就O
  • 爬虫实例十二 沪深证券股票全站数据爬取

    先上代码 import requests from lxml import etree import openpyxl import time import random 新建workbook对象 wb openpyxl Workbook
  • SQLLite创建数据表

    SQLIteTest cpp 此文件包含 main 函数 程序执行将在此处开始并结束 pragma warning disable 4996 include
  • docker + ngrok + nginx内网穿透访问本地,方便本地调试

    ngrok客户端生成 docker run rm it e DOMAIN jiadays com v root ngrok myfiles hteen ngrok bin sh build sh 对应生成的目录 bin ngrokd 服务端
  • hadoop 的 namenode 宕机如何解决

    先分析宕机后的损失 宕机后直接导致client无法访问 内存中的元数据丢失 但是硬盘中的元数据应该还存在 如果只是节点挂了 重启即可 如果是机器挂了 重启机器后看节点是否能重启 不能重启就要找到原因修复了 但是最终的解决方案应该是在设计集群
  • wedo2.0编程模块介绍_wedo2.0课程包

    实例简介 开放性实验的视觉概述 16课时实验课程 包含生命科学 宇宙科学 物质科学 技术与工程 b11 We20简介 欢迎使用乐高教育WeD20 课程包 本章主要介绍产品操作的基本步骤 15V 们Wa02简介 乐高教育W2课程包 乐高教育W
  • 【Python】学生管理系统——详细解释+代码+详细注释(课设必过)

    带你编写学生管理系统 Python 很多学生在学校学习完Python 就要做一个课设考验你对知识的掌握程度 这次就教大家如何来用Python来实现一个学生管理系统 对学生管理系统的分析 学生管理系统是对学生信息的学生信息的增删查改 另外如需
  • DOS下执行robotframework脚本

    在当前python环境中的路径添加pybot bat文件 文件中添加 Echo off python m robot run 启动时添加路径即可 pybot 项目路径
  • python自动化办公--QQ发送邮件包含中文名附件

    python自动化办公 本节目标 python调用QQ邮箱API发送邮件 本节内容 自动化定时发送邮件 本节技术点 smtplib datetime 本节阅读需要 15 min 本节实操需要 20 min 文章目录 python自动化办公
  • 田忌赛马

    田忌赛马 问题描述 中国古代的历史故事 田忌赛马 是为大家所熟知的 话说齐王和田忌又要赛马了 他们各派出N匹马 每场比赛 输的一方将要给赢的一方200两黄金 如果是平局的话 双方都不必拿出钱 现在每匹马的速度值是固定而且已知的 而齐王出马也
  • 玩转Netty – 从Netty3升级到Netty4

    这篇文章主要和大家分享一下 在我们基础软件升级过程中遇到的经典Netty问题 当然 官方资料 也许是一个更好的补充 另外 大家如果对Netty及其Grizzly架构以及源码有疑问的 欢迎交流 后续会为大家奉献我们基于Grizzly和Nett
  • java基础之String类

    String类里面的内容必须会 必须熟悉 public final class String 字符串是一个特殊的对象 这个类不能有子类 String s new String 与String s1 是等价的 String s1 abc s1
  • 基于CH340的一键下载电路

    一 CH340简介 CH340 是一个 USB 总线的转接芯片 实现 USB 转串口或者 USB 转打印口 CH340是国产芯片 应用场合居多 市场占有率很高 常用的USB转串口芯片还有CP2102 PL2303 FT232等 相比之下CH
  • Vue的页面跳转与刷新

    Vue刷新页面 在开发的过程中 有时候我们需要刷新整个页面 this router go 0 Vue页面跳转 例如 在用户登录成功之后跳转到系统首页 this router push home
  • 基础算法题——虫洞(简单版、vector)

    虫洞 简单 题目链接 解题步骤 求出第 i 个星球作为中心子星系时 f i 的大小 对每个 i 与 n f i 异或后的结果相加 再对998244353取模即可得到答案 问题关键点 求第 i 个星球 f i 的大小 个人解题思路 暴力 利用