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

秋招实习刷题网站推荐: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+1

    int 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 累加的十进制数是0
        cout << "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个父节点是1
    int 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 = b
	a += temp;
	c -= temp;
	//如果c还有剩下 取c的一半,例如4 8 8
	a += c / 2;
	}
	else a += c;
	return a / 2;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AndroidStudio升级Gradle之坑

最近在做旧工程的升级&#xff0c;原来的Gradle版本是4.6的&#xff0c;需要升级到7.6&#xff0c;JDK从8升级到17&#xff0c;一路趟了很多坑&#xff0c;逐个记录下吧 1、Maven仓库需要升级到https 你会遇到这个报错 Using insecure protocols with repositories, without …

openLayers实战(八):坐标系及其转换

坐标系介绍 EPSG: 3857 --web地图&#xff0c;基于球体的、web墨卡托投影&#xff08;伪墨卡托投影Pseudo-Mercator&#xff09;的投影坐标系&#xff0c;范围为纬度85度以下&#xff0c;由于google地图最先使用而成为事实标准。至今&#xff0c;大多互联网地图都使用EPSG3857&…

Android 远程真机调研

背景 现有的安卓测试机器较少&#xff0c;很难满足 SDK 的兼容性测试及线上问题&#xff08;特殊机型&#xff09;验证&#xff0c;基于真机成本较高且数量较多的前提下&#xff0c;可以考虑使用云测平台上的机器进行验证&#xff0c;因此需要针对各云测平台进行调研、比较。 …

【环境配置】Windows10终端和VSCode下能够直接打开Anaconda-Prompt

很多小伙伴在 Windows 下做深度学习开发的时候&#xff0c;遇到终端没有在 Linux 那么方便&#xff0c;那么我们现在就可以来设置一下&#xff1b;这样我们也可以在文件夹内部右键打开终端&#xff0c;也可以在 VS Code 里面新建一个虚拟环境的控制台&#xff1b;这里主要是针对…

VS2015项目中,MFC内存中调用DLL函数(VC6生成的示例DLL)

本例主要讲一下&#xff0c;用VC6如何生成DLL&#xff0c;用工具WinHex取得DLL全部内容&#xff0c;VC2015项目加载内存中的DLL函数&#xff0c;并调用函数的示例。 本例中的示例代码下载&#xff0c;点击可以下载 一、VC6.0生成示例DLL项目 1.新建项目&#xff0c;…

爬虫逆向实战(十四)--某培训平台登录

一、数据接口分析 主页地址&#xff1a;某培训平台 1、抓包 通过抓包可以发现登录是表单提交到j_spring_security_check 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现有一个j_password加密参数 请求头是否加密&#xff1f; 无响应是…

SAP MM学习笔记23-购买发注的账户分配类型(勘定Category)

SAP中控制财务凭证过账科目的是 账号分配类型&#xff08;勘定Category&#xff09;栏目。 ・账号分配类型&#xff08;勘定Category&#xff09;有&#xff1a; 1&#xff0c;K 原价Center&#xff08;成本中心。用于消耗物料采购 的过账&#xff09; 2&#xff0c;E 得意先…

TPAMI, 2023 | 用压缩隐逆向神经网络进行高精度稀疏雷达成像

CoIR: Compressive Implicit Radar | IEEE TPAMI, 2023 | 用压缩隐逆向神经网络进行高精度稀疏雷达成像 注1:本文系“无线感知论文速递”系列之一,致力于简洁清晰完整地介绍、解读无线感知领域最新的顶会/顶刊论文(包括但不限于Nature/Science及其子刊;MobiCom, Sigcom, MobiSy…

C++之string类的使用

C之string类的使用 1.为什么要学string类2.标准库中的string类3.string类的接口的使用3.1默认成员函数3.2容量操作3.3访问操作3.4遍历操作3.5修改操作3.6字符串操作3.7非成员函数 1.为什么要学string类 我们所学的字符串是以’\0’结尾的一些字符的集合&#xff0c;为了操作方…

工业视觉相机镜头选型方法

一、相机选型 1、首先&#xff0c;根据检测需求确定选用黑白/彩色、面阵/线阵相机&#xff0c;接口类型一般选择GigE 2、确定检测精度要求&#xff08;最小特征尺寸mm&#xff09;、视野范围&#xff0c;一个测量精度对应几个像素数&#xff08;一般取3-5&#xff09; 3、计…

uni-app根据经纬度逆解析详细地址

uni-app中的getLocation()方法可以获取到用户当前的地理位置&#xff08;经纬度&#xff09;、速度。 但是返回参数中的address在app中才会显示&#xff0c;小程序中不会显示&#xff0c;所以我们需要进行逆解析其地址&#xff0c;解析出它的地址信息。 1.首先要在腾讯位置服务…

【Redis从头学-4】Redis中的String数据类型实战应用场景之验证码、浏览量、点赞量、Json格式存储

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;啥技术都喜欢捣鼓捣鼓&#xff0c;喜欢分享技术、经验、生活。 &#x1f60e;人生感悟&#xff1a;尝尽人生百味&#xff0c;方知世间冷暖。 &#x1f4d6;所属专栏&#xff1a;Re…

Intelij IDEA 配置Tomcat解决Application Server不显示的问题

今天搭建war工程时部署项目发现&#xff0c;IDEA的控制台没有Application Servers&#xff0c;在网上查了一下&#xff0c;总结几个比较好的解决方法&#xff0c;为了方便自己和其他人以后碰到相同的问题&#xff0c;不再浪费时间再次寻找解决办法。 Intelij IDEA 配置Tomcat时…

如何做好科技文献资料的翻译!

我们知道&#xff0c;科技文献是工程技术人员的重要参考文献&#xff0c;翻译科技文献资料有助于促进国内外科技知识和技术的传播。那么&#xff0c;如何做好科技文献资料的翻译&#xff0c;专业科技文献翻译哪家好&#xff1f; 据了解&#xff0c;科技文献翻译是一种以应用为主…

Nginx虚拟主机(server块)部署Vue项目

需求 配置虚拟主机&#xff0c;实现一个Nginx运行多个服务。 实现 使用Server块。不同的端口号&#xff0c;表示不同的服务&#xff1b;同时在配置中指定&#xff0c;Vue安装包所在的位置。 配置 Vue项目&#xff0c;放在 html/test 目录下。 config中的配置如下&#xf…

接口测试,负载测试,并发测试,压力测试区别

接口测试 1.定义&#xff1a;接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。 2.目的&#xf…

Matlab中图例的位置(图例放在图的上方、下方、左方、右方、图外面)等

一、图例默认位置 默认的位置在NorthEast r 10; a 0; b 0; t0:0.1:2.1*pi; xar*cos(t); ybr*sin(t); A1plot(x,y,r,linewidth,4);%圆 hold on axis equal A2plot([0 0],[1 10],b,linewidth,4);%直线 legend([A1,A2],圆形,line)二、通过Location对legend的位置进行改变 变…

无涯教程-Perl - sysread函数

描述 该函数等效于C /操作系统函数read(),因为它绕过了诸如print,read和seek之类的函数所采用的缓冲系统,它仅应与相应的syswrite和sysseek函数一起使用。 它从FILEHANDLE中读取LENGTH个字节,并将输出放入SCALAR中。如果指定了OFFSET,则将数据从OFFSET字节写入SCALAR,从而有效…

小航助学GESP_C++一级模拟测试卷第2套(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSD…

【C++笔记】C++之类与对象(中)

【C笔记】C之类与对象&#xff08;中&#xff09; 1、类的构造函数1.1、构造函数的基本用法1.2、构造函数的7个特性 2、类的析构函数2.1、析构函数的基本用法2.2、析构函数的6个特性 3、类的拷贝构造函数3.1、拷贝构造的基本用法3.2、拷贝构造的“无限套娃”陷阱3.3、深拷贝与浅…