输入输出+暴力模拟入门:魔法之树、染色の树、矩阵、字母加密、玫瑰鸭

秋招实习刷题网站推荐:codefun2000.com,还有题解博客:blog.codefun2000.com/。以下内容都是来自塔子哥的~

输入输出

2023.04.15-春招-第三题-魔法之树

在这里插入图片描述
在这里插入图片描述

//#include<bits/stdc++.h>
#include<vector>
#include<iostream>using namespace std;typedef long long LL;
const int N = 1001;
LL n, l, r;
vector<int> weight(N);
vector<vector<int>> vec(N);//二维数组
// 图的存储:开一个全局的定长数组,其中每个元素都是一个不定长数组vector<int>
// 开1001 是因为节点下标范围为[1,1000] , 所以需要多开一个
// 你所见到的开1005,1006也是这个原因。至少多开辟一位即可
int result = 0;//传入当前节点 当前节点的父节点 累加的值 的值
void dfs(int u, int root, int pre)
{//获取遍历过路径 二进制 对应的十进制//获得当前权重 pre二进制进一位 相当于十进制*2//1--11  1--1*2+1int cur = pre * 2 + weight[u];cout << "pre = " << pre << "\tweight[u] = " << weight[u] << "\tcur = " << cur;//找到符合的路径if (cur > r) return;else if (cur >= l) result++;//遍历当前层for (auto& num : vec[u]){if (num == root) continue;//跳过父节点 一个父节点不能是权重//for(auto& vv : vec[u]) cout << "vv = " << vv << endl;cout << "\tnum = " << num << endl;dfs(num, u, cur);}
}int main1()
{cin >> n >> l >> r;string str;cin >> str;for (int i = 1; i <= n; i++){weight[i] = str[i-1] - '0';}// 由于是树,所以只需要读n - 1 条边// 由于你无法确认x,y之间谁是父亲节点,所以需要存双向边,// 在dfs的过程中防止返祖即可(返祖会引发死递归!)。// PS:在有一些题目里,他会明确规定谁是父亲,这种情况下就不用存双向边,// 且在dfs的过程中也不用担心返祖的问题.for (int i = 0; i < n - 1; i++){int u, v;cin >> u >> v;vec[u].push_back(v);vec[v].push_back(u);}for (int i = 1; i <= n; i++){//从父节点1开始出发 他没有父节点所以是-1 累加的十进制数是0cout << "i = " << i << endl;dfs(i, -1, 0);}cout << result << endl;//string str = "11010";//vector<vector<int>> nums = { {1,2,3}, {2,4,5 }, {1}, {2}, {2} };/*cout << "n = " << n << "\tl = " << l << "\tr = " << r << endl;cout << "str = " << str << endl;for (int i = 0; i < vec.size(); i++){cout << "i = " << i << "\tvec[i] = " << vec[i][0] << endl;for (int j = i; j < vec[i].size(); j++){cout << "\tvec[i][j] = " << vec[i][j] << endl;}}cout << "done" << endl;*/   system("pause");return 0;
}

2023.04.01-第五题-染色の树

在这里插入图片描述

//#include<bits/stdc++.h>
#include <vector>
#include <iostream>
using namespace std;
int n;
vector<vector<int>> edges;
vector<int> color;int dfs(int root) {vector<int> tmp(2);//如果当前层有2个子节点 保存其两个子节点//如果    当前层有0个子节点    该节点的价值为    1//如果    当前层有1个子节点    该节点的价值为    其唯一子节点的价值//如果    当前层有2个子节点    该节点是红色,价值为两个子节点价值和;是绿色,价值为两个子节点价值的异或值if (edges[root].size() == 0) return 1;else if (edges[root].size() == 1) return dfs(edges[root][0]);else {for (int i = 0; i < 2; i++) tmp[i] = dfs(edges[root][i]);//两个子节点的价值 为了计算父节点价值if (color[root - 1] == 1) {return tmp[0] + tmp[1];//父节点是红色}else return tmp[0] ^ tmp[1];//父节点是绿色}
}
int main() {cin >> n;if (n < 1) return 0;if (n == 1) return 1;color.resize(n + 1);edges.resize(n + 1);//4行//cout << edges.size() << endl;//保存     { {}, {2,3}, {}, {} }//过程是   p[i]=1 i从2开始 第2个父节点是1,i++;p[i]=1,i=3,第3个父节点是1int idx = 0;while (idx < n) {int tmp;cin >> tmp;//输入的是父节点edges[tmp].push_back(idx+2);//idx+2才是子节点 注意题目的i是从2开始idx++;}int idx2 = 0;while (idx2 < n) {int tmp;cin >> tmp;color[idx2++] = tmp;}/*for(int i = 0; i < edges[1].size(); i ++)cout << edges[1][i] << " ";*///输入父节点值int res = dfs(1);//cout << res << endl;return 0;
}

取模模板

//#include<bits/stdc++.h>
#include <iostream>
using namespace std;
const int mod = 1e9 + 7;// -----取模操作模板----- 建议使用long long 实例化,最稳
template <typename T>
class Mod {
public:T add(T x, T y, T mod) {x %= mod;y %= mod;T res = (x + y) % mod;return res;}T sub(T x, T y, T mod) {x %= mod;y %= mod;T res = (x - y + mod) % mod;return res;}T mul(T x, T y, T mod) {x %= mod;y %= mod;T res = x * y % mod;return res;}T div(T x, T y, T mod) {x %= mod;y %= mod;T inv = fastPow(y, mod - 2, mod);T res = mul(x, inv, mod);return res;}
private:T fastPow(T a, T b, T mod) {T ans = 1, base = a;while (b) {if (b & 1) ans = mul(ans, base, mod);base = mul(base, base, mod);b >>= 1;}return ans;}
};
// -----取模操作模板 end-----
int main3() {int n;Mod<long long> t;cin >> n;for (int i = 1; i <= n; i++) {int op;long long x, y;cin >> op >> x >> y;if (op == 1) {cout << t.add(x, y, mod) << endl;}else if (op == 2) {cout << t.sub(x, y, mod) << endl;}else if (op == 3) {cout << t.mul(x, y, mod) << endl;}else {cout << t.div(x, y, mod) << endl;}}
}

暴力模拟入门

矩阵

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int n;
const int mod = 1e9 + 7;
typedef long long LL;template <typename T>
class MOD
{
public:T mul(T a, T b, T mod){a %= mod;b %= mod;T res = (a * b) % mod;return res;}T fastPow(T a, T b, T mod){T res = 1, base = a;while(b){if((b & 1) == 1)mul(base, res, mod);//res *= a;mul(base, base, mod);//a *= a;b >>= 1;}return res;}
};long long fast_pow(int a, int b)
{long long res = 1, temp = a;while(b){if((b & 1) == 1)res *= temp;temp *= temp;b >>= 1;}return res;
}int main()
{cin >> n;LL num = 0, result = 0;//num = n * (n-1) / 2;for(LL i=1; i<=n-1; i++)num += i;//cout << num << endl;//MOD<LL> mymod;//result = mymod.fastPow(2, num, mod);result = fast_pow(2, num);cout << result << endl;return 0;
}

字母加密

在这里插入图片描述
第一次写的时候没有考虑范围超出的时候

#include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;string instr;
int main()
{cin >> instr;int len = instr.length();vector<int> a(len + 1);a[0] = 1, a[1] = 2, a[2] = 4;for (int i = 3; i < len + 1; i++){a[i] = (a[i - 1] + a[i - 2] + a[i - 3]) % 26;//while (a[i] > 26) a[i] -= 26;//cout << a[i] << "  ";}string result;for (int i = 0; i < len; i++){char temp = (instr[i] - 'a' + a[i]) % 26 + 'a';//cout << instr[i] - 'a' + a[i] << "  " << instr[i] + a[i] << "  ";//cout << (instr[i] - 'a' + a[i]) % 26<< "  " << temp << endl;result += temp;}cout << result << endl;return 0;
}

玫瑰鸭

#include<bits/stdc++.h>
using namespace std;typedef long long LL;
LL a, b, c;int main()
{cin >> a >> b >> c;//LL a = 8;//LL b = 4;//LL c = 2;if (a > b) swap(a, b);//保证a是小的那个LL temp = b - a;//差值if (c - temp >= 0)//c比差值大 c补给a{//用c把差值补给a,让a = ba += temp;c -= temp;//如果c还有剩下 取c的一半,例如4 8 8a += c / 2;}else a += c;return a / 2;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/97179.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何创建和查看软链接和硬链接?这二者的区别是什么?

索引节点&#xff08;inode&#xff09;硬链接创建硬链接查看硬链接 软链接创建软链接查看软链接 inode编号妙用总结软链接和硬链接的区别感谢 &#x1f496; hello大家好&#x1f60a; 在linux中&#xff0c;文件链接可以使多个文件名引用同一个文件。有两种方式可以创建指向同…

基于traccar快捷搭建gps轨迹应用

0. 环境 - win10 虚拟机ubuntu18 - i5 ubuntu22笔记本 - USB-GPS模块一台&#xff0c;比如华大北斗TAU1312-232板 - 双笔记本组网设备&#xff1a;路由器&#xff0c;使得win10笔记本ip&#xff1a;192.168.123.x&#xff0c;而i5笔记本IP是192.168.123.215。 - 安卓 手机 1.…

JAVA基础知识(五)——面向对象(中)

面向对象&#xff08;中&#xff09; 一、面向对象特征之一&#xff1a;封装与隐藏1.1 简介1.2 封装性的体现1.3 四种访问权限修饰符 二、类的成员之三&#xff1a;构造器2.1 构造器的特征2.2 构造器的作用2.3 语法格式2.4 构造器分类2.5 构造器重载2.6 属性赋值过程 三、扩展知…

Scratch 游戏 之 随机大地图生成教程

在很多生存 / 沙盒类游戏中&#xff0c;地图往往是随机生成的&#xff0c;例如&#xff1a;饥荒、我的世界等。那我们该如何在scratch中实现这一点呢&#xff1f; 在scratch中有两种办法可以实现——画笔和克隆体。我们这次先聊克隆体。 我们可以先将克隆体设置为方形的&#x…

什么是单例模式

什么是单例模式 文章目录 什么是单例模式1. 单例(单个的实例)2. 单例模式应用实例3. 饿汉式 VS 懒汉式 1. 单例(单个的实例) 所谓类的单例设计模式&#xff0c;就是采取一定的方法保证在整个的软件系统中&#xff0c;对某个类只能存在一个对象实例&#xff0c;并且该类只提供一…

CF 1354 C1 C2 Polygon Embedding(求奇偶正多边形的外接最小正方形的边长)

CF 1354 C1 / C2 Polygon Embedding(求奇偶正多边形的外接最小正方形的边长) Problem - C1 - Codeforces Problem - C2 - Codeforces EASY &#xff1a; 大意&#xff1a;给出一个偶数 n &#xff0c; 求 正 (2 * n) 边形的最小外接正方形的边长。 可以想出两种最直观的情况…

如何构造不包含字母和数字的webshell

目录 利用不含字母与数字进行绕过 1.异或进行绕过 2.取反进行绕过 3.利用php语法绕过 利用不含字母与数字进行绕过 基本代码运行思路理解 <?php echo "A"^""; ?> 运行结果为! 我们可以看到&#xff0c;输出的结果是字符"!"。之所…

【论文解读】Hybrid-SORT: Weak Cues Matter for Online Multi-Object Tracking

因为Hybrid-SORT的baseline是基于OCSORT进行改进的&#xff0c;在这之前建议先了解byteTrack和【】的相关知识 1.介绍 1.1 基本框架 多目标跟踪(MOT)将问题分为两个子任务。第一个任务是检测每个帧中的对象。第二个任务是将它们在不同的框架中联系起来。关联任务主要通过显式…

Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)

文章目录 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)前情提要客户端部分 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三) 前情提要 单例泛型类 using System.Collections; using System.Collections.Generic; …

sql:知识点记录一

1.Mysql逻辑架构&#xff1a;连接层、服务层、引擎层、存储层 2.show engines&#xff1a;查看存储引擎 3.Mysql两种存储引擎的区别&#xff1a; 建立索引&#xff1a;比如说用户很喜欢用name去查询表&#xff0c;就可以给数据库的name字段建立索引&#xff0c;提高查询效率&a…

【潮州饶平】联想 IBM x3850 x6 io主板故障 服务器维修

哈喽 最近比较忙也好久没有更新服务器维修案例了&#xff0c;这次分享一例潮州市饶平县某企业工厂一台IBM System x3850 x6服务器亮黄灯告警且无法正常开机的服务器故障问题。潮州饶平ibm服务器维修IO主板故障问题 故障如下图所示&#xff1a; 故障服务器型号&#xff1a;IBM 或…

zotero在不同系统的安装(win/linux)

1 window系统安装 zotero 官网&#xff1a; https://www.zotero.org/ 官方文档 &#xff1a;https://www.zotero.org/support/ (官方)推荐常用的插件: https://www.zotero.org/support/plugins 入门视频推荐&#xff1a; Zotero 文献管理与知识整理最佳实践 点击 exe文件自…

SpringBoot 插件化开发

SpringBoot 插件化开发 介绍使用插件的好处1 模块解耦2 提升扩展性和开放性3 方便第三方接入 插件化常用实现思路Java常用插件实现方案ServiceLoader方式1 java spi2 java spi 简单案例 自定义配置约定方式添加配置文件自定义配置文件加载类自定义测试接口启动类项目结构 自定义…

puzzle(0414)六边形拼图

目录 六边形拼图 简单 中等 困难 六边形拼图 taptap小游戏 简单 &#xff08;3&#xff09; &#xff08;4&#xff09; 中等 &#xff08;3&#xff09; &#xff08;4&#xff09; 困难 &#xff08;2&#xff09; &#xff08;3&#xff09; &#xff08;4&#xff…

基于GUI的卷积神经网络和长短期神经网络的语音识别系统,卷积神经网的原理,长短期神经网络的原理

目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 长短期神经网络的原理 基于GUI的卷积神经网络和长短期神经网络的语音识别系统 代码下载链接:基于MATLABGUI编程的卷积神经网络和长短期…

初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式

STM32CubeMx配置定时器的编码器模式 上次文章写了编码器是如何工作的&#xff0c;今天就来用STM32F103C8T6的TIM3的通道1跟通道2编写一个编码器识别程序。 编程思路&#xff1a; A相:TIM3_CH1 B相:TIM3_CH2 SWITCH:PB5&#xff08;外部中断的方式&#xff09; 实现效果&a…

视频集中存储EasyCVR视频汇聚平台定制项目增加AI智能算法

安防视频集中存储EasyCVR视频汇聚平台&#xff0c;可支持海量视频的轻量化接入与汇聚管理。平台能提供视频存储磁盘阵列、视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联、H.265自动转码等功能。为了便…

Linux笔记

Linux基础命令 Linux的目录结构 /&#xff0c;根目录是最顶级的目录了Linux只有一个顶级目录&#xff1a;/路径描述的层次关系同样适用/来表示/home/itheima/a.txt&#xff0c;表示根目录下的home文件夹内有itheima文件夹&#xff0c;内有a.txt ls命令 功能&#xff1a;列出…

大文本的全文检索方案附件索引

一、简介 Elasticsearch附件索引是需要插件支持的功能&#xff0c;它允许将文件内容附加到Elasticsearch文档中&#xff0c;并对这些附件内容进行全文检索。本文将带你了解索引附件的原理和使用方法&#xff0c;并通过一个实际示例来说明如何在Elasticsearch中索引和检索文件附…

Spring中JavaBean的生命周期及模式

( 本篇文章大部分讲述了是底层知识&#xff0c;理念及原理 ) ( 如果只想了解&#xff0c;看我标记的重点即可&#xff0c;如果想明白其中原理&#xff0c;请耐心看完&#xff0c;对你大有受益 ) 目录 一、简介 ( 1 ) 是什么 ( 2 ) 背景概述 ( 3 ) 作用 二、生命周期 2.1 …