2024江西ICPC部分題解

題目列表

  • A - Maliang Learning Painting
  • C - Liar
  • G - Multiples of 5
  • H - Convolution
  • J - Magic Mahjong
  • K - Magic Tree

A - Maliang Learning Painting

題目來源:A - Maliang Learning Painting

在這里插入圖片描述

思路分析
這是個簽到題,直接輸出a+b+c即可

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{int a,b,c;cin>>a>>b>>c;cout<<a+b+c;return 0;
}

C - Liar

題目來源:C - Liar
在這里插入圖片描述
思路分析
這道題非常巧妙,用到貪心的思想,因為ai可正可負可為0,我們可以從兩方面考慮:

  • 如果所有數的和加起來等于s,那么所有人說的都是真話,輸出n。
    • 如果不等于s,我們只需要把其中一個數變成使它和剩下的數相加等于s的數即可,輸出n-1。
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5;
int n,s,a[N],sum;void solve()
{cin>>n>>s;for(int i=1;i<=n;i++)cin>>a[i],sum+=a[i];if(sum==s)cout<<n;elsecout<<n-1;
}
signed main()
{int _=1;
//    cin>>_;while(_--)solve();return 0;
}

G - Multiples of 5

題目來源:G - Multiples of 5
在這里插入圖片描述
在這里插入圖片描述

思路分析
這道題我們的目的是為了算出這個-11數制對應的十進制數能否被5整除。
但是題目范圍很大,這個數的長度就有 1 0 1 4 10^14 1014,顯然,如果硬生生轉化再存入一個數中是要超出范圍的。
那么就要想一個優化的方法,我們不難想出,11的任何次冪個位數一定是1,我們只要把轉換過程中每個位數上的數,乘以11的位數減一次方的個位數相加,也就是(比如說x個y,直接累加上x*y),最終再判斷這個數能否被5 整除即可,但是要注意如果-11數制下是’A’,要轉換成10來計算。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5;
int n,x,sum;
char c;
void solve()
{cin>>n;sum=0;//sum一定要初始化!!!for(int i=1;i<=n;i++){cin>>x>>c;if(c=='A')sum+=x*10;elsesum+=x*(c-'0');}if(sum%5==0)cout<<"Yes"<<endl;elsecout<<"No"<<endl;
}
signed main()
{int _=1;cin>>_;while(_--)solve();return 0;
}

H - Convolution

題目來源:H - Convolution
在這里插入圖片描述
在這里插入圖片描述
思路分析
我認為這道題有點難度,仔細讀題我們可以發現,矩陣K的值,如果用貪心的思想,在對應的原矩陣中要求的子矩陣的前綴和,如果和為負k對應值取負,同理何為正就取正和為零就取零。
因此我們不必多慮K矩陣中的值,因為K矩陣對應的原矩陣中的值相乘的值等于O矩陣的值只需要算出對應原矩陣中前綴和的絕對值相加就是O矩陣所有元素之和最大的值。
因為輸入輸出較多所以建議用iOS優化
這里一定要會運用前綴和的思想,不懂的可以先看我的這篇博客:前綴和與差分【入門】原理+例題

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define int long long
using namespace std;
const int N=1e3+1;
int n,m,k,l,a[N][N],s[N][N];
void solve()
{cin>>n>>m>>k>>l;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];s[i][j]=s[i-1][j]+s[i][j-1]+a[i][j]-s[i-1][j-1];}}int x=n-k+1,y=m-l+1,sum=0;for(int i=x;i<=n;i++){for(int j=y;j<=m;j++){sum+=abs(s[i][j]-s[i-x][j]-s[i][j-y]+s[i-x][j-y]);}}cout<<sum;}
signed main()
{IOS;int _=1;
//    cin>>_;while(_--)solve();return 0;
}

J - Magic Mahjong

題目來源:J - Magic Mahjong
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
思路分析
這是一道簡單的模擬題,我們只需要讀懂題意。
這里的意思是在所有的麻將牌中,最初有14張牌組成,看這14張牌,

  • 如果包括所有的字牌和幺九牌,并且額外重復其中任意一張牌,就輸出 Thirteen Orphans.
  • -如果有7對牌就輸出 7 Pairs.
  • 如果上述條件都不滿足,就輸出 Otherwise。
    我們可以定義一個map將每一組牌都存進去,然后判斷數量為1的牌有多少個(記為x)和數量為2的牌有多少個(記為y)。
  • 如果X=12,Y=1那么有可能符合第一種情況,仍需繼續判斷是否包括所有的字牌和幺九牌,這里可以定義一個字符串數組存入所有的字牌和幺九牌,然后遍歷這個數組,看它其中的每個元素對應的map值是不是都不等于零。
  • 如果y=7,那么它就滿足第2種情況。
  • 否則直接輸出otherwise。
#include<bits/stdc++.h>
#define int long long
using namespace std;
string s,s1;
map<string,int>mp;
string s2[]={"1p","9p","1s","9s","1m","9m","1z","2z","3z","4z","5z","6z","7z"};
void solve()
{mp.clear();//記得清空mpcin>>s;int ans=0;for(int i=0;i<s.size();i++){ans++;s1+=s[i];if(ans==2){mp[s1]++;ans=0;s1.clear();}}int x=0,y=0;for(auto v:mp){if(v.second==1)x++;if(v.second==2)y++;}int f=0;if(x==12&&y==1){for(int i=0;i<13;i++){if(mp[s2[i]]==0){f=1;break;}}if(!f){cout<<" Thirteen Orphans"<<endl;return ;}}if(y==7){cout<<" 7 Pairs"<<endl;return ;}cout<<" Otherwise"<<endl;
}
signed main()
{int _=1;cin>>_;while(_--)solve();return 0;
}

K - Magic Tree

題目來源:K - Magic Tree
在這里插入圖片描述
在這里插入圖片描述

思路分析

這道題就是找規律,通過找前面幾個數的規律我們發現數量s的值是有規律的:

  • m=1,s=1= 2 0 2^0 20
  • m=2,s=2= 2 1 2^1 21
  • m=3,s=4= 2 2 2^2 22
  • m=4,s=8= 2 3 2^3 23
  • m=n,s=2^(n-1)

因此我們只需要輸出s的值即2的(n-1)次方,主要是這個數會很大該怎么優化取模,可以讓s初始化為1,因為M的范圍是1e5,所以我們可以遍歷從1到m-1每次讓s*2并對998244353 取模再賦值給s,最后輸出s的值即可。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=998244353;void solve()
{int m,sum=1;cin>>m;for(int i=1;i<m;i++){sum=(sum*2)%N;}cout<<sum;
}
signed main()
{int _=1;
//    cin>>_;while(_--)solve();return 0;
}

今天的題解就到這里。希望對你有所幫助動動您發財的小手點贊收藏吧 你的鼓勵就是我的動力!!!

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

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

相關文章

Pytorch圖像數據轉為Tensor張量

PyTorch的所有模型&#xff08;nn.Module&#xff09;都只接受Tensor格式的輸入&#xff0c;所以我們在使用圖像數據集時&#xff0c;必須將圖像轉換為Tensor格式。PyTorch提供了torchvision.transforms模塊來處理圖像數據集。torchvision.transforms模塊提供了一些常用的圖像預…

為什么vllm能夠加快大模型推理速度?

vLLM加速大模型推理的核心技術原理可分解為以下關鍵創新點&#xff1a; 一、?內存管理革命&#xff1a;PagedAttention? KV Cache分頁機制? 將傳統連續存儲的KV Cache拆分為非連續內存頁&#xff0c;類似操作系統內存分頁管理&#xff0c;消除內存碎片并實現動態分配。13B…

第十一章 多態

多態是面向對象開發過程中一個非常重要的概念。 11.1 多態概述 11.1.1 什么是多態 多態&#xff08;polymorphism&#xff09;&#xff0c;從字面理解是“多種形態&#xff0c;多種形式”&#xff0c;是一種將不同的特殊行為泛化為當個特殊記號的機制。 多態從實現的角度可劃…

RNN——循環神經網絡

一.基本結構 1.目標&#xff1a;處理序列數據&#xff08;時間序列&#xff0c;文本&#xff0c;語音等&#xff09;&#xff0c;捕捉時間維度上的依賴關系 核心機制&#xff1a;通過隱藏狀態&#xff08;hidden State&#xff09;傳遞歷史信息&#xff0c;每個時間步的輸入包…

性能提升手段--池化技術

看到hadoop代碼里有ByteBufferPool,使用池子來避免頻繁創建、銷毀ByteBuffer,減輕GC壓力,提高性能。 順便總結一下池化技術 一、什么是池化技術??? ??池化(Pooling)?? 是一種資源管理策略,通過??預先創建并復用資源??(如數據庫連接、線程、內存對象等)來提…

數據安全和合規性市場分析

一、什么是數據安全和合規性 在數據安全和合規性方面&#xff0c;存在著一系列重要的法律、法規和行業標準&#xff0c;這些規定了組織如何收集、存儲、處理和保護個人數據及其他敏感信息。企業之所以要遵守這些規定&#xff0c;是出于多方面的考量&#xff0c;既有法律責任&a…

【每日八股】復習計算機網絡 Day4:TCP 協議的其他相關問題

文章目錄 昨日內容復習已經建立了 TCP 連接&#xff0c;客戶端突然出現故障怎么辦&#xff1f;什么時候用長連接&#xff1f;短連接&#xff1f;TCP 的半連接隊列與全連接隊列&#xff1f;什么是 SYN 攻擊&#xff1f;如何避免&#xff1f;TIME_WAIT 的作用&#xff1f;過多如何…

React:<></>的存在是為了什么

1. <></> 是什么&#xff1f; <></> 是 React 的Fragment&#xff08;片段&#xff09;語法糖&#xff0c;等價于 <React.Fragment></React.Fragment>。 2. 它的作用 主要作用&#xff1a; 允許你在組件里返回多個元素&#xff0c;而不需…

cron定時任務

cron定時任務 一、Cron表達式的定義 基礎結構 Cron表達式是由空格分隔的6或7個字段組成的字符串&#xff0c;格式為&#xff1a; 秒 分 時 日 月 星期 [年]其中&#xff0c;年通常可以被省略 字段說明&#xff1a; 秒&#xff08;0-59&#xff09; 秒字段表示每分鐘的哪一…

分布式之易混淆概念

昨天寫UE寫的破防了&#xff0c;忘了寫文章&#xff0c;今天補一下分布式的一些概念。&#x1f61a; 在軟件架構領域&#xff0c;微服務、領域驅動設計&#xff08;DDD&#xff09;和分布式系統是三個高頻且容易被混淆的概念。許多開發者誤以為它們是“同一件事的不同說法”&a…

量子躍遷:Vue組件安全工程的基因重組與生態免疫(完全體終局篇)

開篇數字免疫系統的范式革命 在2025年某國際金融峰會期間&#xff0c;黑客組織利用量子計算技術對全球37個交易系統發起協同攻擊。傳統安全組件在2.7秒內集體失效&#xff0c;造成每秒超18億美元的交易漏洞。這場數字"切爾諾貝利"事件促使我們重新定義前端安全——組…

Operating System 實驗七 Linux文件系統實驗

實驗目標: 使用dd命令創建磁盤鏡像文件ext2.img并格式化為ext2文件系統,然后通過mount命令掛載到Linux主機文件系統。查看ext2文件系統的超級塊的信息,以及數據塊的數量、數據塊的大小、inode個數、空閑數據塊的數量等信息 在文件系統中創建文件xxxxx.txt(其中xxxxx為你的學…

模型識別能力錘煉及清單

大腦將注意力分配給需要消耗腦力的活動&#xff0c;通過學習技能&#xff0c;大腦也能更輕松的工作。這個時候&#xff0c;大腦負責管理注意力控制和努力控制的區域活動會大幅減少。沉浸式學習是學習一門新的語言的最佳方式&#xff0c;也是深入洞察錯綜復雜商業環境的絕佳途徑…

Android 混合開發實戰:統一 View 與 Compose 的淺色/深色主題方案

整個應用&#xff08;包括 View 和 Compose 部分&#xff09;的淺色/深色模式保持一致。以下是完整的解決方案&#xff1a; 全局配置方案 1. 基礎主題設置 在 res/values/themes.xml 和 res/values-night/themes.xml 中定義統一的主題&#xff1a; <!-- values/themes.x…

QT開發技術【QT實現桌面右下角消息】

一、效果 ![ 二、彈窗主體部分 noticewidget /* ** File name: NoticeWidget.h ** Author: ** Date: 2025-04-25 ** Brief: 通知欄控件 ** Copyright (C) 1392019713qq.com All rights reserved. */#include "../Include/NoticeWidget.h"…

在LiveGBS GB28181互聯網安防監控平臺中關于redis版本切換的方法說明

目錄 1、Redis服務2、如何切換REDIS? 2.1、停止啟動REDIS2.2、配置信令服務2.3、配置流媒體服務2.4、啟動3、搭建GB28181視頻直播平臺 1、Redis服務 在LivGBS中Redis作為數據交換、數據訂閱、數據發布的高速緩存服務。默認LiveCMS解壓目錄下會攜帶一個REDIS服務。如果已經有自…

vue3中的effectScope有什么作用,如何使用?如何自動清理

vue3中的effectScope有什么作用&#xff0c;如何使用?如何自動清理 vue3中的effectScope有什么作用&#xff0c;如何使用 官網介紹&#xff1a;作用特點簡單示例&#xff1a;自動清理示例 官網介紹&#xff1a; 創建一個 effect 作用域&#xff0c;可以捕獲其中所創建的響應…

搭建基于火災風險預測與防范的消防安全科普小程序

基于微信小程序的消防安全科普互動平臺的設計與實現&#xff0c;是關于微信小程序的&#xff0c;知識課程學習&#xff0c;包括學習后答題。 技術棧主要采用微信小程序云開發&#xff0c;有下面的模塊&#xff1a; 1.課程學習模塊 2.資訊模塊 3.答題模塊 4.我的模塊 還需…

python 與Redis操作整理

以下是使用 Python 操作 Redis 的完整整理&#xff0c;涵蓋基礎操作、高級功能及最佳實踐&#xff1a; 1. 安裝與連接 (1) 安裝庫 pip install redis(2) 基礎連接 import redis# 創建連接池&#xff08;推薦復用連接&#xff09; pool redis.ConnectionPool(hostlocalhost, …

什么時候使用Python 虛擬環境(venv)而不用conda

是的&#xff01;python3.9 -m venv rtdetr_env 是 Python 原生的虛擬環境&#xff08;venv&#xff09;&#xff0c;而 conda 是另一個流行的虛擬環境管理工具&#xff08;來自 Anaconda/Miniconda&#xff09;。下面我會詳細對比兩者的區別&#xff0c;并講解 venv 的基本用法…