牛客小白月賽117

前言:solveABCF相對簡單,D題思路簡單但是實現麻煩,F題郭老師神力b( ̄▽ ̄)。

A.?好字符串

題目大意:給定字符串s,里面的字母必須大小寫同時出現。

【解題】:沒什么好說的,直接模擬就行。

code:

#include <iostream>
#include <unordered_map>using namespace std;
int n; string s; 
unordered_map<char, int> mp;bool check()
{for(int i = 0; i < n; i++){char ch1 = s[i];char ch2;if(isupper(ch1))  ch2 = tolower(ch1);else ch2 = toupper(ch1);if(!mp.count(ch2)) return 0;}return 1;
}int main()
{cin >> n >> s;for(int i = 0; i < n; i++) mp[s[i]]++;if(check()) cout << "YES" << endl;else cout << "NO" << endl;return 0;
}

B.?平均數

題目大意:給定一個由0 1 -1 組成的數組,0代表該元素等于平均數,1代表大于,-1代表小于。

問給出的數組是否合法。

【解題】:合法的情況:

  • 全是0
  • 1 -1 同時出現(不用管次數)

code:

#include <iostream>
#include <unordered_map>using namespace std;
unordered_map<int, int> mp;
int n;
int main()
{cin >> n;for(int i = 1; i <= n; i++) {int x; cin >> x;mp[x]++;}if((mp.count(-1) && mp.count(1)) || (!mp.count(-1) && !mp.count(1))) cout << "YES" << endl;else cout << "NO" << endl;return 0;
}

C.?質數

題目大意:對于l到r的數,可以分配到s1,s2兩個集合內,集合至少一個元素,且gcd(s1) = 1,gcd(s2) != 1,問|len1 - len2|的最小值。

【解題】:不難發現:如果把連續的偶數給s2可以保證gcd(s2)至少是2,把奇數給s1又保證了gcd(s1) = 1,這樣又均分了l,r之間的元素,可以使得|len1 - len2|最小。

code:

#include <iostream>using namespace std;typedef long long LL;int main()
{int q; cin >> q;while(q--){LL l, r; cin >> l >> r;LL n = r - l + 1;if(n <= 1) cout << -1 << endl;else if(n == 2){if(l == 1) cout << 0 << endl;else cout << -1 << endl;}else {cout << n % 2 << endl;}}return 0;
}

F.?種類數

題目大意:長度為n的數組a,每次操作將所有的ai <-max(0, ai - cnt)其中cnt是a的種類數。問經過多少次操作可以使數組種類數變為1。

【解題】:對于開始種類數是一的情況直接輸出0就行,對于開始不是1的情況,由于他們的差值只有再ai變為0的情況下才會改變,所有最終結果是全變為零的操作次數,為此我們不妨每個數只存一遍,我們需要知道第k次操作的種類數,減的總數以及當前數組的最小值。

#include <iostream>
#include <unordered_map>
#include <queue>
#include <vector>
using namespace std;
typedef long long LL;
priority_queue<LL, vector<LL>, greater<LL>> heap;
unordered_map<LL, LL> mp;int main()
{int n; cin >> n;for (int i = 1; i <= n; i++){LL x; cin >> x;mp[x]++;}if (mp.size() == 1){cout << 0 << endl;return 0;}LL k = mp.size();LL ans = 0, now = 0;for (auto t : mp){heap.push(t.first);}bool flag = false;  // 用于處理0的特殊情況while (heap.top() == 0){heap.pop();flag = true;}while (heap.size()){while (heap.size() && now >= heap.top()){heap.pop();if (!flag){// 這里0是第一次出現,所以k不能--flag = true;continue;}k--;}if (heap.size()){LL x = heap.top();LL t = (x - now) / k;if(t == 0) t++;now += t * k;ans += t;}}cout << ans << endl;return 0;
}

D.?眾數

題目大意:給定長度為n的數組a,必須執行下面操作一次:

選擇兩個不同位置i,j使得ai=ai + 1, aj=aj?- 1,問眾數出現的所有可能。

【解題】:本題的題眼其實是數據范圍,它只有1e3所有我們是可以設計一個n^2或者n^2logn的算法的,n^2其實停留在枚舉所有的ij上,所有我們只能用O(1) or O(logn)的時間找出每次ij的眾數,這樣就需要維護一個內部有序的數據結構,我們借助set維護。

code:

#include <iostream>
#include <set>
#include <map>
#include <algorithm>
using namespace std;const int M = 1e6 + 1, N = 2e3 + 10;int a[N];
struct node
{int num, cnt;bool operator< (const node& b) const{if (cnt != b.cnt) return cnt < b.cnt;return num < b.num;}
};
map<int, int> mp;
set<node> tmp;
set<int> ans;
int cnt[M];void add(int val)
{auto it = tmp.lower_bound({ val, cnt[val] });cnt[val]++;if (it->num == val){tmp.erase(it); // 需要重新插入,不能直接--tmp.insert({ val, cnt[val] });}else // 第一次出現{tmp.insert({ val, 1 });}
}void del(int val)
{auto it = tmp.lower_bound({ val, cnt[val] });cnt[val]--;tmp.erase(it);if (cnt[val] >= 1) // 還存在{tmp.insert({ val, cnt[val] });}
}int main()
{int n; cin >> n;for (int i = 1; i <= n; i++){cin >> a[i];add(a[i]);}for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){if (i == j) continue;del(a[i]);add(a[i] + 1);del(a[j]);add(a[j] - 1);ans.insert(tmp.rbegin()->num);add(a[i]);del(a[i] + 1);add(a[j]);del(a[j] - 1);}}for (auto it = ans.begin(); it != ans.end(); it++) cout << *it << " ";return 0;
}

G.?中位數

題目大意:對于長度為n的排列,求下面式子對于所有n的排列的累乘對1610612741取模后的結果。

【解題】:組合數學 + 貢獻法轉化枚舉對象

code:

#include <iostream>
#include <vector>
using namespace std;
typedef long long LL;
#define endl '\n'
const int N = 6e3 + 10;
const int MOD = 1610612741;
const int PM = MOD - 1;
typedef pair<LL, LL> PII;
LL fac_len[N];
LL gac_glen[N];
LL f[N];
int n; 
LL C[N][N];LL qpow(LL a, LL b, LL MOD)
{LL ret = 1;while(b){if(b & 1) ret = ret * a % MOD;b >>= 1;a = a * a % MOD;}return ret;
}void init()
{fac_len[0] = 1;for(int i = 1; i <= n; i++) fac_len[i] = fac_len[i - 1] * i % PM;// vector<LL, vector<LL>> C(n + 1, vector<LL>(n + 1));for(int i = 0; i <= n; i++){C[i][0] = 1;for(int j = 1; j <= i; j++){C[i][j] =(C[i - 1][j] + C[i - 1][j - 1]) % PM;}}for(int mid = 1; mid <= n; mid++){for(int len = 1; len <= n; len++){// if(len % 2 == 1) f[mid] = (f[mid] + (C[mid - 1][len / 2] * C[n - mid][len / 2] % PM * fac_len[len] % PM * fac_len[n - len] % PM * (n - len + 1) % PM)) % PM;f[mid] = (f[mid] + (C[mid - 1][len / 2] * C[n - mid][len - (len / 2) - 1] % PM * fac_len[len] % PM * fac_len[n - len] % PM * (n - len + 1) % PM)) % PM;}}	
}void solve() 
{cin >> n;init();LL ans = 1;// for(int i = 0;i <= n; i++) cout << gac_glen[i] << " ";for(int mid = 1; mid <= n; mid++){ans = (ans * qpow(mid, f[mid], MOD)) % MOD;}cout << ans << endl;
}int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int T = 1;// cin >> T;while(T--){solve();}return 0;
}

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

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

相關文章

特倫斯 S75 電鋼琴:重構演奏美學的極致表達

在數字音樂時代&#xff0c;電鋼琴正從功能性樂器升級為融合藝術、科技與生活的美學載體。特倫斯 S75 電鋼琴以極簡主義哲學重構產品設計&#xff0c;將專業級演奏體驗與現代家居美學深度融合&#xff0c;為音樂愛好者打造跨越技術邊界的沉浸式藝術空間。 一、極簡主義的視覺敘…

GpuGeek 618大促引爆AI開發新體驗

隨著生成式AI技術迅猛發展&#xff0c;高效可靠的算力資源已成為企業和開發者突破創新瓶頸的戰略支點。根據賽迪顧問最新發布的《2025中國AI Infra平臺市場發展研究報告》顯示&#xff0c;2025年中國生成式人工智能企業應用市場規模將達到629.0億元&#xff0c;作為AI企業級應用…

第二十章 文本處理

第二十章 文本處理 所有類UNIX系統都嚴重依賴于文本文件來存儲數據&#xff0c;所以存在大量文本操作工具也在情理之中。 相關命令: cat&#xff1a;拼接文件。sort&#xff1a;排序文本行。uniq&#xff1a;報告或忽略重復的行。cut&#xff1a;從每行中刪除部分內容。past…

Reactor 和 Preactor

Reactor 和 Preactor 是兩個在工業控制、生產調度和事件驅動系統中非常重要的設計模式或框架&#xff0c;不少人會用這兩個名詞來描述不同的編程思想或技術架構。 一、Reactor 模式&#xff08;反應器模式&#xff09; 1. 概述 Reactor 模式其實是一種I/O事件通知的設計思想…

siglip2(2) Naflex模型的動態分辨率原理

動態分辨率的圖片縮放行為 操作辦法: 操作1。修改preprocessor_config.json,設置"max_num_patches": 256,可從256(1616)改為196(1414)。 操作2。在預處理圖片時,可按照如下方式傳入參數max_num_patches。 inputs = self.processor(images=videos, **{"ima…

??技術深度解析:《鴻蒙5.0+:無感續航的智能魔法》?

??引言&#xff1a;從“充電焦慮”到“無感續航”?? ??用戶痛點??&#xff1a; 刷短視頻時電量暴跌、夜間待機掉電快、多設備切換耗電失控——傳統系統無法平衡性能與功耗。??鴻蒙5.0突破??&#xff1a; 通過??方舟引擎3.0??&#xff08;編譯級能效優化&#…

振動力學的三類基本問題

振動問題的分類依賴于分類的出發點&#xff0c;本文從系統論的角度來分析振動問題的分類。如圖1&#xff0c;一個振動系統&#xff0c;包括三個方面&#xff1a;輸入、系統特性&#xff08;或稱為系統模型&#xff09;、輸出。其中&#xff0c;輸入指外界載荷&#xff0c;包括力…

過濾攻擊-聚合數據

公開的聚合數據是通過對原始細粒度數據進行匯總、統計或轉換后發布的&#xff0c;旨在提供群體層面的洞察而非個體信息。它們具有以下關鍵特征&#xff1a; 1. 去標識性&#xff08;De-identification&#xff09; 表現&#xff1a; 直接標識符&#xff08;姓名、身份證號、手機…

小紅書 發評論 分析 x-s x-t

聲明: 本文章中所有內容僅供學習交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包內容、敏感網址、數據接口等均已做脫敏處理&#xff0c;嚴禁用于商業用途和非法用途&#xff0c;否則由此產生的一切后果均與作者無關&#xff01; 逆向過程 部分Python代碼 ck jso…

pycharm找不到高版本conda問題

pycharm找不到高版本conda問題 高版本的condaPycharm不能自動識別&#xff0c;需要手動添加。 首先打開你要添加的conda環境win的話在conda終端輸入 where conda查找conda的可執行文件位置 進入Pycharm設置&#xff0c;點擊添加解釋器&#xff0c;點擊加載環境&#xff0c;…

C56-親自實現字符串拷貝函數

一 strcpy簡介 功能&#xff1a;將源字符串&#xff08;包括 \0&#xff09;復制到目標地址。 原型&#xff1a; char *strcpy(char *dest, const char *src);參數&#xff1a; dest&#xff1a;目標地址&#xff08;需足夠大&#xff09;。src&#xff1a;源字符串&#xf…

設計模式——適配器設計模式(結構型)

摘要 本文詳細介紹了適配器設計模式&#xff0c;包括其定義、核心思想、角色、結構、實現方式、適用場景及實戰示例。適配器模式是一種結構型設計模式&#xff0c;通過將一個類的接口轉換成客戶端期望的另一個接口&#xff0c;解決接口不兼容問題&#xff0c;提高系統靈活性和…

java 開發中 nps的內網穿透 再git 遠程訪問 以及第三放支付接口本地調試中的作用

在Java開發中&#xff0c;NPS內網穿透、Git遠程訪問和第三方支付接口的本地調試結合使用&#xff0c;可以有效提升開發效率和調試能力。以下是它們的具體作用及協作場景&#xff1a; 第一&#xff1a;為什么需要nps內網穿透 1. NPS內網穿透的作用 NPS&#xff08;內網穿透工具…

換ip是換網絡的意思嗎?怎么換ip地址

在數字化時代&#xff0c;IP地址作為我們在網絡世界的"身份證"&#xff0c;其重要性不言而喻。許多人常將"換IP"與"換網絡"混為一談&#xff0c;實際上兩者雖有聯系卻存在本質區別。本文將澄清這一概念誤區&#xff0c;并詳細介紹多種更換IP地址…

云游戲混合架構

云游戲混合架構通過整合本地計算資源與云端能力&#xff0c;形成了靈活且高性能的技術體系&#xff0c;其核心架構及技術特征可概括如下&#xff1a; 一、混合架構的典型模式 分層混合模式? 前端應用部署于公有云&#xff08;如渲染流化服務&#xff09;&#xff0c;后端邏輯…

Docker常用命令操作指南(一)

Docker常用命令操作指南-1 一、Docker鏡像相關命令1.1 搜索鏡像&#xff08;docker search&#xff09;1.2 拉取鏡像&#xff08;docker pull&#xff09;1.3 查看本地鏡像&#xff08;docker images&#xff09;1.4 刪除鏡像&#xff08;docker rmi&#xff09; 二、Docker容器…

軟件性能之CPU

性能是個宏大而駁雜話題&#xff0c;從代碼&#xff0c;到網絡&#xff0c;到實施&#xff0c;方方面面都會涉及到性能問題&#xff0c;網上對性能講解的文章多如牛毛&#xff0c;從原理到方法再到工具都有詳細的介紹&#xff0c;本文雖不能免俗&#xff0c;但期望能從另外一個…

[SC]SystemC在CPU/GPU驗證中的應用(三)

SystemC在CPU/GPU驗證中的應用(三) 摘要:下面分享50個逐步升級SystemC編程能力的示例及建議的學習路線圖。您可以一次一批地完成它們——從前五個基礎的例子開始,然后轉向channels, TLM, bus models, simple CPU/GPU kernels等等。在每個階段掌握之后,再進行下一組…

如何設計高效的數據湖架構:存儲策略、Schema 演進與數據生命周期管理

本文圍繞現代數據湖架構的核心設計理念與實踐展開,重點討論如何高效組織數據存儲、支持 Schema 演進與版本管理、實現冷熱數據分層存儲和生命周期治理,確保數據湖在性能、成本、演進和治理能力上的全面可控。 ?? 一、數據湖架構演進概覽 傳統數據倉庫面對高頻更新、Schema…

建筑兔零基礎人工智能自學記錄101|Transformer(1)-14

Transformer 谷歌提出&#xff0c;一組編碼-解碼器 可以同時處理&#xff0c;通過位置編碼來處理單詞 實質是token詞語接龍&#xff08;只是有不同的概率&#xff09; token對應向量 Transformer簡述 文生圖就需要用到transformer黑箱 token 內部層次 中間主要是embedding…