首页 > 其他分享 >2024年2月29号题解

2024年2月29号题解

时间:2024-02-29 21:45:24浏览次数:19  
标签:size int 题解 矩阵 29 2024 include root define

P1014 [NOIP1999 普及组] Cantor 表

解题思路

  1. 和之前的蛇蝎矩阵很像,因此可以先构建一个蛇蝎矩阵
  2. 因为是z形所以在每个奇数次矩阵的对角线进行交换就可以了,这样就得到了我们需要的矩阵

代码实现

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <stdbool.h>
#define u unsigned
#define ll long long
#define sc scanf
#define pr printf 
#define fr(i, j, n) for (int i = j; i < n; i++)
#define N 10000

int b[N][N];//矩阵
int n;//整数n
int a = 1;//每一列的开始的数值
int as = 2;//行的步长值,刚开始是2
int bs = 1;//列的步长值,刚开始是1
int k = 3;//奇数次的矩阵

int main(int argc, char* argv[])
{
	sc("%d", &n);//读入整数n

	for (int i = 0; i <= n / 2; i++) {//最多不会超过n / 2行
		int t = a;//记录起始值
		for (int j = 0; a <= n; j++, bs++) {//给每一列的数赋值,步长值每次加一
			b[i][j] = a;//给矩阵赋值
			a += bs;//a加步长值就是下一个需要赋值的数
		}
		a = t + as;//下一行的起始值是t + as
		bs = i + 2;//列的步长是i + 2
		as++;//行的步长每次加一
	}

	while ((k - 1) <= n / 2) {//让所有奇数次的矩阵的对角线元素交换
		for (int i = 0; i < k / 2; i ++) {//对角线元素交换
			int j = k - 1 - i;//i + j == k - 1,就是对角线元素
			//交换两个元素
			int t = b[i][j];
			b[i][j] = b[j][i];
			b[j][i] = t;
		}

		k += 2;
	}
	//遍历矩阵找到整数n在哪一行和列
	for (int i = 0; b[i][0]; i++) {
		for (int j = 0; b[i][j]; j++) {
			if (b[i][j] == n) {
				pr("%d/%d", i + 1, j + 1);
			}
		}
	}

	return 0;
}

230.二叉搜索树中第k小的元素

解题思路

  1. 把二叉搜索树进行中序遍历,得到一个有序的数组
  2. 对于第k小的元素就是求下标k - 1位置的元素是什么
  3. 返回有序数组中下标k - 1位置的元素

代码实现

//对二叉搜索树进行中序遍历得到一个有序的数组
void f(struct TreeNode* root, int a[], int* size) {
    if (root != NULL) {
        f(root -> left, a, size);
        a[(*size) ++] = root -> val;
        f(root -> right, a, size);
    }
}

int kthSmallest(struct TreeNode* root, int k) {
    int a[10000] = {0};
    int size = 0;

    f(root, a, &size);//得到一个有序的数组

    return a[k - 1];//因为k从1开始数,所以返回k - 1下标位置的数
}

 

标签:size,int,题解,矩阵,29,2024,include,root,define
From: https://www.cnblogs.com/lwj1239/p/18045291

相关文章

  • 2.29闲话 & solution 『任无数/花开花落之后/你仍君临芸芸众生』
    明天就省选了,我咋啥也不会最破防的一集一道LCT调了一下午没调出来最后发现是min和max取反了改完之后发现自己的访问有问题,如果有0边权我就会直接返回LLONG_MAX啊哈哈,我调了一下午,发了7个帖子然后校内OJ过了,POJ因为只有C++98所以CE了哈哈哈写个简要题解吧[......
  • 闲话2.29
    今天其实大部分东西都在这里写过了,这里放一点娱乐性质的东西。6t玩owo还没出H......
  • 供应链投毒预警 | 开源供应链投毒202401最新月报来啦!
    概述​悬镜供应链安全情报中心通过持续监测全网主流开源软件仓库,结合程序动静态分析方法对潜在风险的开源组件包进行分析和监测,捕获大量开源组件恶意包投毒攻击事件。2024年1月份,悬镜供应链安全情报中心在Npm官方仓库(https://www.npmjs.com/)和Pypi官方仓库(https://pypi.o......
  • 题解 CF1709 XOR
    *2400*dsuontree一道很好的题目思路很巧妙传送门题目大意给出一棵树,\(n\)个节点,每个节点有权值\(v\),定义一次操作为修改任意一个节点的值为任意正整数,要求最后的树不存在任意简单路径使得路径异或和为\(0\)Solution一个很常用的套路,先钦定根节点为\(1\)定义\(w......
  • 龙年惠来首聚|20240214|周三
    今年没失约在培民的组织下,我们决定年初五出来惠来聚一下。初五9点多起床吃了早餐后,开着小电驴就去找培民,车放某广场然后我们扫了共享电动,志豪早早就到了,因此我们要去车站集合。首先是我们仨集合后去了奶茶店喝奶茶聊天然后时间来到了中午决定去吃早茶类的午饭后浩沛就从家......
  • P10202 [湖北省选模拟 2024] 沉玉谷 Solution
    好像比题解劣一个\(n\),但是也跑的很快。首先说明,问题等价于计算有多少种本质不同的方案使得整个序列被删完,证明省略。考虑用区间的方式表述这些操作,具体的,忽略删除后的移位操作,将每次删除的左右段点视为一个区间,则一定会有:区间的并是\([1,n]\)。区间之间要么不交,要么包含。......
  • 2024.02.29
    今天主要将昨天没开发完的前端vue模板补全,然后学习了vue结合springboot完成前后端数据交互(封装axioshttp请求工具JS)Json数据vue模板<template><div><el-container><!--侧边栏--><el-aside:width="asideWith"style="min-height:100vh;backgro......
  • CF1265E Beautiful Mirrors 题解
    CF1265EBeautifulMirrors题解题目大意题目传送门你有\(n\)个点,当你在第\(i\)个点时,有\(p_i\)的概率到达点\(i+1\),有\(1-p_i\)的概率回到点1。当到达点\(n+1\)时,游戏结束。且期望进行的游戏次数。\(1\len\le2\times10^5\)。题目分析设\(f_i\)表示到达点\(......
  • 20240229解题报告
    [abc300_e]DiceProduct3很明显,概率是由其因子转移而来的,设\(dp[i]\)表示结果为i的概率,则有转移方程:\[dp_i=\sum_{j=2}^6dp_{\frac{i}{j}}\times\frac{1}{5}\times[i\bmodj=0]\]为什么是从二开始?因为乘1结果不变,不影响概率,所以只有5中情况,因为n很大,所以可以用记忆化搜索......
  • 2024/2/3
    gitbash下载与安装Gitbash下载地址:https://git-scm.com/进入官网downloads下载进入以下界面有Mac,Windows,Linux版本 选择windows 等待下载......