牛客周賽 Round 92(再現京津冀藍橋杯???)

1.?小紅的簽到題

現在小紅希望你寫出一個長度為 nnn 的、使用了下劃線命名法命名的變量。為了顯出特征,請保證該變量至少由兩個單詞組成。

輸入描述:

輸入一個正整數 n(3≦n≦100),代表需要構造的變量長度。

輸出描述:

輸出一個長度為 n?的字符串,代表你所構造的使用了下劃線命名法命名的變量。 如果存在多個解決方案,您可以輸出任意一個,系統會自動判定是否正確。注意,自測運行功能可能因此返回錯誤結果,請自行檢查答案正確性。

示例1

輸入

11

輸出

kato_megumi

解題思路:根據長度n構造答案

#include<bits/stdc++.h>
using namespace std;
int main(){int n; cin>>n;cout<<"f_"<<string(n-2,'f')<<endl;
}

?2.?小紅的模擬題

給定一個?n?行 m?列的網格,我們使用 (i,j) 表示網格中從上往下數第 i 行和從左往右數第 j?列的格子。小紅現在位于 (1,1),準備前往 (n,m)。
然而,不是所有的格子都是可以通行的,有且恰有一個格子是陷阱格,一旦小紅踏入陷阱格,就會直接去逝。保證這個陷阱格不會出現在 (1,1)和 (n,m)。
小紅每一步只能向右或者向下前進。請你幫小紅規劃一條行動路線,使得她可以順利到達?(n,m)。
行動路線為一個僅由字符 ‘D’、‘S’ 構成的字符串 s,第 i個字符代表小紅第 i 次行動的方向。記第 iii 次行動前小紅位于 (x,y),則:
,若si?=‘D’,則小紅向右移動一格即抵達 (x,y+1);
,若si?=‘S’,則小紅向下移動一格即抵達(x+1,y)。

解題思路:由于陷阱只有一個, 從(1,1) 到 (n,m), 特殊情況一種是往右n-1步, 往下走m-1步, 另一種是往下走m-1步, 往右走n-1步, 陷阱最多只會出現在上述兩條路徑中的一條之中, 所以依次探測即可?

#include <bits/stdc++.h>
using namespace std;
int main() {int n, m;cin >> n >> m;vector<string> grid(n);for(int i=0;i<n;i++) cin>>grid[i];bool f1=true;for(int i=1;i<n;i++){if(grid[i][0]=='#') f1=false;}for(int j=1;j<m;j++){if(grid[n-1][j]=='#') f1=false;}if(f1){for(int i=1;i<n;i++) cout<<'S';for(int j=1;j<m;j++) cout<<'D';return 0;}bool f2=true;for(int j=1;j<m;j++){if(grid[0][j]=='#') f2=false;}for(int i=1;i<n;i++){if(grid[i][m-1]=='#') f2=false;}if(f2){for(int i=1;i<m;i++) cout<<'D';for(int i=1;i<n;i++) cout<<'S';return 0;}return 0;
}

?3.小紅的方神題

題目描述

對于數組 a,我們定義它的退化狀態為:取每個相鄰兩數之差的絕對值構成的新數組。換句話說,退化后的 a?數組是一個長度為len(a)?1 的數組,其第 i?個元素為 ∣ai??ai+1?∣。
?希望小紅構造一個長度為 n 的排列,使得其連續進行n?1 次退化后,最終生成的一個整數恰好等于 n?2。你能幫幫小紅嗎?如果不存在這樣的排列,直接輸出 ?1 即可。
長度為 n?的排列是由 1,2,…,n 這 n個整數、按任意順序組成的數組(每個整數均恰好出現一次)。例如,{2,3,1,5,4} 是一個長度為 5 的排列,而 {1,2,2} 和 {1,3,4} 都不是排列,因為前者存在重復元素,后者包含了超出范圍的數。

解題思路: 1/2都不行, n>=3時候, 構造[1,n,n?1,…,2]? 相鄰差后為:[|1-n|, 1,1,....], 再退化一次為, n-2, 滿足題意。

#include <bits/stdc++.h>
using namespace std;
int main(){int n; cin>>n;if(n<=2) { cout<<-1<<endl; return 0; }cout<<1;for(int i=n;i>=2;i--){cout<<" "<<i;}cout<<endl;return 0;
}

4.?小紅的數學題?

題目描述

小紅拿到了一個正整數 k,她希望你找到兩個正整數 p,q,滿足 p+q=k,且方程 x^2?px+q=0 存在兩個正整數解。特別地,如果不存在這樣的 p,q,請輸出 ?1。

解題思路:設方程的兩個根為x1和x2,

x1+x2=p,

x1*x2=q,

x1+x2+x1*x2=k,

x1+x2+x1*x2+1=k+1?

(x1+1)*(x2+1)=k+1

所以, 我們可以將k+1, 分解成兩個>=2的數的乘積(a,b)

x1+1=a, x2+1=b,?

p=a+b-2, q=(a-1)*(b-1)

#include <bits/stdc++.h>
using namespace std;
int main(){long long k;cin >> k;long long t = k + 1;long long A = -1, B = -1;for (long long d = 2; d * d <= t; d++) {if (t % d == 0) {A = d;B = t / d;break;}}if (A == -1){cout << -1 << endl;}else{long long p = (A + B - 2);long long q = (A - 1) * (B - 1);cout << p << " " << q << endl;}return 0;
}

?5.?小紅的ds題

小紅希望你構造一棵層數為 n?的二叉樹,其第 i?層恰好有 ai? 個節點。你能幫幫她嗎?
一棵樹被稱為二叉樹,當且僅當其滿足:
,?每個節點要么沒有父節點連接(此時該節點被稱為根節點)、要么被 1?個父節點連接(此時該節點被稱為父節點的子節點;

?每個節點連接的子節點數量要么為 0(此時該節點被稱為葉子節點)、要么小于等于 2(此時該節點被稱為分支節點)。

#include <bits/stdc++.h>
using namespace std;
int main() {int n;  cin >> n;vector<int> nums(n);  int total = 0;for (int i = 0; i < n; i++) {cin >> nums[i];total += nums[i];}vector<int> son_cnt(total, 0);     vector<vector<int>> tmp(total);   int start = 0;int pt = nums[0];  for (int i = 1; i < n; i++) {int new_start = pt;while (nums[i]--) {while (son_cnt[start] == 2) {start++;}son_cnt[start]++;tmp[start].push_back(pt);pt++;}start = new_start;}cout << 1 << endl;  for (int i = 0; i < total; i++) {if (tmp[i].empty()) {cout << "-1 -1"<<endl;} else if (tmp[i].size() == 1) {cout << "-1 " << tmp[i][0] + 1 <<endl;} else {cout << tmp[i][0] + 1 << ' ' << tmp[i][1] + 1 << endl;}}return 0;
}

6.小紅的小苯題?

題目描述

小苯希望小紅構造一個 n?行 m?列的矩陣,滿足:
,?每一行所有元素的異或和、每一列所有元素的異或和,這 n+m 個數恰好構成一個長度為 n+m的排列
?矩陣中每個元素的值在 0 到 10^9 之間。
你能幫幫小紅嗎?
長度為 n?的排列是由 1,2,…,n 這 n 個整數、按任意順序組成的數組(每個整數均恰好出現一次)。例如,{2,3,1,5,4} 是一個長度為 5?的排列,而 {1,2,2}?和 都不是排列,因為前者存在重復元素,后者包含了超出范圍的數。

解題思路(詳細思考過程):

n行m列

設每一行所有元素的異或和分別為R1, R2, R3, .... ,Rn

設每一列所有元素的異或和分別為C1, C2, C3,....Cm

這些 n+m 個行異或和和列異或和合在一起,正好是 1,2,…,n+m 的一個排列

那我們應該怎么構造呢?

我們可以直接讓行異或和Ri=i(第 1 行異或和是 1,第 2 行是 2,……,第?n?行是?n)

列異或和 Cj?=n+j(即第 1 列異或和是 n+1,第 2 列是 n+2,……,第 m 列是 n+m)

這個{Ri}U{Cj} ={1,2,3,4,....,n+m}

所有的行異或和R1 xor R2 xor R3 xor...xor?Rn應該等于所有列異或和C1 xor C2 xor C3 xor ...xor Cm (因為矩陣的總異或和可以從行或列兩個方向計算)

因此, (R1 xor R2 xor R3 xor...xor?Rn) xor (C1 xor C2 xor C3 xor ...xor Cm) =0

=> 1 xor 2 xor 3 xor ...xor (n+m)=0

所以,?

只有 1 到 n+m 的異或和為 0 時,才能構造出這樣的矩陣

具體構造:

為了簡化問題,?

除了最后一列和最后一行,其他位置都填 0

填最后一列(行異或和)

對于前 n?1 行,讓它們的最后一列等于行異或和 a[i][m]=Ri =i

(第i行的異或和就是0 xor 0 xor ...i=i)

填最后一行(列異或和)

對于前 m?1 行,讓它們的最后一列等于列異或和 a[n][j]=Ci =n+j

(第j列的異或和就是0 xor 0 xor ...(n+j)=n+j)

最后填A[n][m]這個位置,?A[n][m]需要同時滿足:

1. 第n行的異或和是Rn=n, 2. 第m列的異或和是 Cm=n+m

第?n?行的異或和是 C1 xor C2 xor C3 xor ,,, xor Cm-1 xor t =n

?(n+1) xor (n+2) xor ... xor (n+m-1) xor t=n

所以, t1=n xor (n+1) xor (n+2) xor ... xor (n+m-1)?

同理,?

第m列的異或和是 R1 xor R2 xor R3 xor ... xor Rn-1 xor t

1 xor 2 xor ... xor (n-1) xor t= n+m

所以, t2=(n+m) xor 1 xor 2 xor ... xor (n-1)?

注:t1==t2

最后, 簡單說一下代碼中各部分的含義

solve函數:計算前k個數的異或和是否等于0

a數組:初始化待構造的數組

然后分別填最后一列的前n-1行, 最后一行的前m-1列

最后填充右下角的元素,?

按t2進行計算

最后輸出構造的a數組即可

  1. 性質:1⊕2⊕?⊕(n+m)=0。

  2. 構造方法

    • 前?n?1n?1?行的最后一列填?i+1i+1(保證行異或和)

    • 前?m?1m?1?列的最后一行填?n+j+1n+j+1(保證列異或和)

    • 右下角填?T=(n+m)⊕(1⊕2⊕?⊕(n?1))T=(n+m)⊕(1⊕2⊕?⊕(n?1))。

  3. 輸出:直接打印矩陣

#include <bits/stdc++.h>
using namespace std;
int solve(int k) {int ans=0;for(int i=0;i<=k;i++){ans^=i;}return ans;
}
int main(){int n, m;cin >> n >> m;if (solve(n + m) != 0) {cout << -1 << endl;return 0;}vector<vector<long long>> a(n, vector<long long>(m, 0));for (int i = 0; i < n - 1; i++) {a[i][m-1] = i + 1;            }for (int j = 0; j < m - 1; j++) {a[n-1][j] = n + (j + 1);      }long long x = 0;for (int i = 1; i <= n - 1; i++) x ^= i;long long t = (n + m) ^ x;        a[n-1][m-1] = t;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {cout << a[i][j] << (j+1<m? ' ' : '\n');}}return 0;
}

感謝大家的點贊和關注,你們的支持是我創作的動力!(有疑問可以發布到評論區)

吐槽:感覺比京津冀某藍某橋某杯略難吧(想了解可以看我往期題解)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81009.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81009.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81009.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2025-05-11 Unity 網絡基礎11——UnityWebRequest

文章目錄 1 UnityWebRequest 介紹2 搭建 HTTP 服務器3 常用操作3.1下載資源3.1.1 下載文本3.1.2 下載圖片3.1.3 下載 AB 包 3.2 上傳資源3.2.1 上傳數據類3.2.2 POST 上傳3.3.3 PUT 上傳 4 自定義操作4.1 下載資源4.1.1 Unity 內置 Handler4.1.2 自定義 Handler 4.2 上傳資源4.…

GitHub 趨勢日報 (2025年05月09日)

本日報由 TrendForge 系統生成 https://trendforge.devlive.org/ &#x1f310; 本日報中的項目描述已自動翻譯為中文 &#x1f4c8; 今日整體趨勢 Top 10 排名項目名稱項目描述今日獲星總星數語言1voideditor/void? 1879? 15214TypeScript2ruanyf/weekly科技愛好者周刊&…

.NET MAUI 基礎知識

文章目錄 什么是 .NET MAUI&#xff1f;MAUI的核心特點與Xamarin.Forms的區別 開發環境搭建安裝Visual Studio 2022安裝必要組件配置Android開發環境配置iOS開發環境驗證安裝 創建第一個MAUI應用創建新項目MAUI項目結構解析理解關鍵文件運行應用程序簡單修改示例使用熱重載 MAU…

卷積神經網絡全連接層詳解:特征匯總、FCN替代與性能影響分析

【內容摘要】 本文聚焦卷積神經網絡&#xff08;CNN&#xff09;的全連接層&#xff0c;詳細介紹其將二維特征圖轉化為一維向量的過程&#xff0c;闡述全卷積網絡&#xff08;FCN&#xff09;如何通過轉置卷積替代全連接層以實現像素級分類&#xff0c;并分析全連接層對圖像分類…

在C++中進行套接字編程時,主要使用以下頭文件

目錄 一.基本套接字頭文件<sys/socket.h><netinet/in.h><arpa/inet.h><unistd.h><netdb.h> 二. 完整示例頭文件包含三. 注意事項 在C中進行套接字編程時&#xff0c;主要使用以下頭文件&#xff1a; 一.基本套接字頭文件 <sys/socket.h>…

【Linux網絡】HTTP

應用層協議 HTTP 前置知識 我們上網的所有行為都是在做IO&#xff0c;&#xff08;我的數據給別人&#xff0c;別人的數據給我&#xff09;圖片。視頻&#xff0c;音頻&#xff0c;文本等等&#xff0c;都是資源答復前需要先確認我要的資源在哪臺服務器上&#xff08;網絡IP&…

JAVA異常體系

在 Java 里&#xff0c;異常體系是其錯誤處理機制的核心內容&#xff0c;它能夠幫助開發者有效應對程序運行時出現的各種意外狀況。 異常體系的基本架構 它主要包含兩個重要分支&#xff1a; Error&#xff08;錯誤&#xff09;&#xff1a;這類異常是程序自身無法處理的嚴重…

vue 去掉右邊table的下拉條與下面的白色邊框并補充滿

::v-deep table {width: 100% !important; } ::v-deep .el-table::after, .el-table::before {display: none !important; }/* 隱藏滾動條但保留滾動功能 */ ::v-deep .el-table__body-wrapper::-webkit-scrollbar {width: 0 !important;height: 0 !important; }::v-deep .el-t…

uniapp+vue3+uview來開發我們的項目

前言&#xff1a; 就像我們vue的web的框架element、iview等一樣&#xff0c;我們的uni-app開發也有適合的他的框架&#xff0c;除了他本身的擴展組件以外&#xff0c;第三方好用的就是就是uview了。 實現效果&#xff1a; 官網信息&#xff1a; vue2版本&#xff1a;uview-ui …

數據倉庫:企業數據管理的核心引擎

一、數據倉庫的由來 數據倉庫&#xff08;Data Warehouse, DW&#xff09;概念的誕生源于企業對數據價值的深度挖掘需求。在1980年代&#xff0c;隨著OLTP&#xff08;聯機事務處理&#xff09;系統在企業中的普及&#xff0c;傳統關系型數據庫在處理海量數據分析時顯露出明顯瓶…

YOLOv12模型部署(保姆級)

一、下載YOLOv12源碼 1.通過網盤分享的文件&#xff1a;YOLOv12 鏈接: https://pan.baidu.com/s/12-DEbWx1Gu7dC-ehIIaKtQ 提取碼: sgqy &#xff08;網盤下載&#xff09; 2.進入github克隆YOLOv12源碼包 二、安裝Anaconda/pycharm 點擊獲取官網鏈接(anaconda) 點擊獲取…

一篇解決Redis:持久化機制

目錄 認識持久化 持久化方案 RDB&#xff08;Redis DataBase&#xff09; 手動觸發 自動觸發 小結 AOF(Append-Only File) AOF緩沖區刷新機制 AOF重寫機制 AOF重寫流程 ?編輯 混合持久化 認識持久化 我們都知道Mysql有四大特征&#xff0c;原子性&#xff0c;持久…

從 Vue3 回望 Vue2:事件總線的前世今生

從 Vue3 回望 Vue2&#xff1a;事件總線的前世今生 以 Vue3 開發者視角回顧 Vue2 中事件總線機制 的文章。文章將圍繞事件總線的緣起、用法、局限與演進展開&#xff0c;幫助 Vue3 開發者理解 Vue2 通信方式的歷史意義及現代替代方案。 一、前言&#xff1a;Vue3 時代&#xff…

CSS結構性偽類、UI偽類與動態偽類全解析:從文檔結構到交互狀態的精準選擇

一、結構性偽類選擇器&#xff1a;文檔樹中的位置導航器 結構性偽類選擇器是CSS中基于元素在HTML文檔樹中的層級關系、位置索引或結構特征進行匹配的一類選擇器。它們無需依賴具體的類名或ID&#xff0c;僅通過文檔結構即可精準定位元素&#xff0c;是實現響應式布局和復雜文檔…

【SSL證書系列】SSL證書工作原理解讀

SSL&#xff08;Secure Sockets Layer&#xff09;及其繼任者TLS&#xff08;Transport Layer Security&#xff09;是用于保護網絡通信安全的加密協議。SSL證書是實現HTTPS協議的核心&#xff0c;其工作原理涉及加密技術、身份驗證和信任機制。以下是其工作原理的詳細分步解析…

第二十四天打卡

import os os.getcwd() os.listdir() path_a r"C:\Users\renshuaicheng\Documents" path_b "MyProjectData" file "results.csv" file_path os.path.join(path_a,path_b,file) file_path import osstart_directory os.getcwd() # 假設這個目…

【CUDA】Sgemm單精度矩陣乘法(下)

目錄 前言1. 優化技巧5&#xff1a;使用register模擬二級緩存&#xff08;內積轉外積&#xff09;2. 優化技巧6&#xff1a;使用register模擬二級緩存 float43. 優化技巧7&#xff1a;global memory轉置再存放shared memory4. 優化技巧8&#xff1a;使用double buffer加速矩陣…

【1000以內具有12個以上因子的整數并輸出它的因子】2021-12-27

緣由c語言輸入1000以內具有12個以上因子的整數 并輸出它的因子-編程語言-CSDN問答 int 求因子個數(int 數, int* 因子 { 0 }) {//緣由https://bbs.csdn.net/topics/399168406int 和 0, 求 1, 商 0, 含 0;//因子不含1和數本身while (求 < (商 數 / 求))if (!(數 % 求)…

C#中的dynamic與var:看似相似卻迥然不同

在C#編程的世界里&#xff0c;var和dynamic這兩個關鍵字常常讓初學者感到困惑。它們看起來都在定義變量時省略了顯式類型聲明&#xff0c;但實際上它們的工作方式和應用場景有著天壤之別。今天&#xff0c;讓我們一起揭開這兩個關鍵字的神秘面紗。 var&#xff1a;編譯時的類型…

流速儀數據處理及流量斷面線繪制

1 需求描述 在實際航道測量項目中&#xff0c;有測量斷面線流量流速的需求&#xff0c;得使用流速儀在現場進行測量&#xff0c;相關操作在之前已經寫了記錄。本次手冊記錄后期數據處理與流量線繪制&#xff0c;以該區域為例。 流速儀設備操作說明 2 規范要求 3 流量斷面表格…