当前位置: 首页 > news >正文

牛客周赛 Round 92-题解

牛客周赛 Round 92-题解

A-小红的签到题

code

#include<iostream>
#include<string>
using namespace std;
string s;
int main()
{int n;cin >> n;cout << "a_";for (int i = 0; i < n - 2; i ++)cout << 'b';return 0;
}

B-小红的模拟题

算法思路

dfs模板题

code

const int N = 1e3 + 10;
char g[N][N];
bool st[N][N];
char op[] = "DS";
bool flag;
string ans;
int n, m;
void dfs(int x, int y, string path)
{if (flag)return;if (x == n - 1 && y == m - 1){ans = path;flag = 1;return;}if (x >= n || y >= m)return;for (int i = 0; i < 2; i++){int a, b;char ch;if (i == 0){a = x;b = y + 1;ch = 'D';}else{a = x + 1;b = y;ch = 'S';}if (st[a][b])continue;if (g[a][b] == '#')continue;st[a][b] = 1;dfs(a, b, path + ch);st[a][b] = 0;}
}
void solve()
{cin >> n >> m;for (int i = 0; i < n; i++)cin >> g[i];dfs(0, 0, "");cout << ans;
}

C-小红的方神题

题目描述

小红希望构造一个长度为 n n n 的排列,使得对该排列连续进行 n − 1 n-1 n1 次“退化”操作后,最终只剩下一个数,且该数恰好等于 n − 2 n-2 n2

  • 退化操作:对于数组 a \,a a,其退化状态定义为取每对相邻元素之差的绝对值构成的新数组。
    例如,若 a = [ a 1 , a 2 , … , a k ] a=[a_1,a_2,\dots,a_k] a=[a1,a2,,ak],则退化后得到数组

    b = [ ∣ a 1 − a 2 ∣ , ∣ a 2 − a 3 ∣ , … , ∣ a k − 1 − a k ∣ ] , 长度为  k − 1. b=[\,|a_1-a_2|,\;|a_2-a_3|,\;\dots,\;|a_{k-1}-a_k|\,], \quad \text{长度为 }k-1. b=[a1a2,a2a3,,ak1ak],长度为 k1.

  • 排列定义:长度为 n n n 的排列是由 { 1 , 2 , … , n } \{1,2,\dots,n\} {1,2,,n} 按任意顺序组成的数组,每个数恰好出现一次。

如果存在满足条件的排列,输出任意一个;否则输出 − 1 -1 1


输入格式

n
  • 一行,一个整数 n n n 1 ≤ n ≤ 1 0 3 1 \le n \le 10^3 1n103),表示排列的长度。

输出格式

  • 如果不存在这样的排列,输出一行:

    -1
    
  • 否则输出一行 n n n 个用空格分隔的整数,表示所构造的排列。


算法思路

好家伙,又拿next_permutation 去暴力了,喜提超时

那么回过头思考一下,看看样例为什么是1 3 2呢

那么我假设一下 1 , n , n − 1 , n − 2 , n − 3... 1,n , n - 1, n - 2, n- 3... 1,n,n1,n2,n3... 那么做减法

第一次: n − 1 , 1 , 1 , . . . n - 1, 1, 1, ... n1,1,1,...

第二次: n − 2 , 0 , 0 , 0 , . . . n-2, 0, 0, 0, ... n2,0,0,0,...

好家伙这不就直接出来了吗,

code

#include <bits/stdc++.h>
using namespace std;int main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int n;cin >> n;if (n < 3) {cout << -1 << "\n";return 0;}cout << 1;for (int x = n; x >= 2; --x) {cout << " " << x;}cout << "\n";return 0;
}

D-小红的数学题

题目描述

小红拿到了一个正整数 k k k,她希望你找到两个正整数 p , q p, q p,q 满足

p + q = k p + q = k p+q=k

且二次方程

x 2 − p x + q = 0 x^2 - p\,x + q = 0 x2px+q=0

存在两个正整数根。如果不存在这样的 p , q p, q p,q,请输出 − 1 -1 1


输入描述

一个正整数

k ( 1 ≤ k ≤ 1 0 12 ) k\;(1 \le k \le 10^{12}) k(1k1012)


输出描述

  • 如果不存在满足条件的正整数 p , q p, q p,q,输出一行:

    -1
    
  • 否则,输出一行两个正整数 p p p q q q,以空格分隔,代表你找到的任意一组解:

    p q
    

算法思路

首先要想到韦达定理

e8e7c03ccc41628ad7a7bb2c38bf191e

那么只需要枚举 k+1的两个大于1的整数因数就可以了

code

void solve()
{i64 k, p, q;cin >> k;k = k + 1;for (i64 i = 1; i * i <= k + 1; i++){if (k % i == 0){i64 a, b;a = i;b = k / i;if (a >= 2 && b >= 2){i64 p = a - 1 + b - 1, q = (a - 1) * (b - 1);cout << p << " " << q;return;}}}cout << -1;
}k / i;if (a >= 2 && b >= 2){i64 p = a - 1 + b - 1, q = (a - 1) * (b - 1);cout << p << " " << q;return;}}}cout << -1;
}

相关文章:

  • 软件测试都有什么???
  • LLM 论文精读(四)LLM Post-Training: A Deep Dive into Reasoning Large Language Models
  • 多模态大语言模型arxiv论文略读(六十九)
  • 数据结构练习:顺序表题目
  • 《智能网联汽车 自动驾驶系统设计运行条件》 GB/T 45312-2025——解读
  • 04.three官方示例+编辑器+AI快速学习webgl_animation_skinning_additive_blending
  • 黑马k8s(三)
  • 【js基础笔记] - 包含es6 类的使用
  • 实战项目4(05)
  • MATLAB中矩阵和数组的区别
  • 05.three官方示例+编辑器+AI快速学习three.js webgl - animation - skinning - ik
  • Python Bug 修复案例分析:多线程数据竞争引发的bug 两种修复方法
  • HTTP/1.1 host虚拟主机详解
  • jsAPI
  • MySQL 索引(二)
  • 点和体素哪个好
  • JavaEE--文件操作和IO
  • 【计算机网络】NAT技术、内网穿透与代理服务器全解析:原理、应用及实践
  • 用C语言实现的——一个支持完整增删查改功能的二叉排序树BST管理系统,通过控制台实现用户与数据结构的交互操作。
  • 实战项目3(04)
  • 中国-拉共体成员国重点领域合作共同行动计划(2025-2027)
  • SIFF动画单元公布首批片单:《燃比娃》《凡尔赛玫瑰》等
  • 哈马斯表示已释放一名美以双重国籍被扣押人员
  • 退休10年后,70岁成都高新区管委会原巡视员王晋成被查
  • A股高开高走:沪指涨0.82%,创指涨2.63%,超4100股收涨
  • 中美经贸中方牵头人、国务院副总理何立峰出席新闻发布会表示:中美达成重要共识,会谈取得实质性进展