河南萌新聯賽2025第(二)場:河南農業大學

我看到花兒在綻放 我聽到鳥兒在歌唱 我看到人們匆匆忙忙
我看到云朵在天上 我聽到小河在流淌 我看到人們漫步在路上

河南萌新聯賽2025第(二)場:河南農業大學

河南萌新聯賽2025第(二)場:河南農業大學_ACM/NOI/CSP/CCPC/ICPC算法編程高難度練習賽_牛客競賽OJ

第二場,暴露了很多問題,這次的題目數學數論題居多,有點樣例都看不明白,做的時候都快崩潰了。數學不好太難了;數論還沒咋看,導致一些簡單的題推不出來;有一些模板題沒見過很不好想,但是想明白后不算難;

預估難度:

  • 簡單:K I M D
  • 中等:E C B A L
  • 較難:H G
  • 困難:J F

我的做題順序 K I M D A,數學太難了XD;雖然最后榜又歪了但是這次影響不大,自己做題的順序也是按難度來的;


目錄

  • 河南萌新聯賽2025第(二)場:河南農業大學
    • K-打瓦
    • I-猜數游戲(easy)
    • M-米婭逃離斷頭臺
    • D-開羅爾網絡的備用連接方案
    • E-咕咕嘎嘎!!!(easy)
    • C-O神
    • B-異或期望的秘密
      • 小藍的二進制詢問
      • 累加器
      • 異或期望的秘密
    • A-約數個數和
      • 整除分塊

K-打瓦

簽到題,使出PHP大法;

gugugaga

PHP 是一種創建動態交互性站點的強有力的服務器端腳本語言。意思就是說php語言會把不是代碼的東西直接輸出;


I-猜數游戲(easy)

簽到題;最優策略肯定是二分的思路去猜,所以需要log2(n)次,向上取整;

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
const int inf=0x3f3f3f3f;
const int N=1e5+5;
void slove(){int n;cin>>n;int an=(int)log2(n);if(log2(n)>an) an++;cout<<an;
} 
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;//cin>>_;while(_--)slove();return 0;
}

M-米婭逃離斷頭臺

數學題;設大圓半徑為aaa小圓半徑為bbb從圓心連向切線要求的面積為π×(a2?b2)/2\pi\times(a^2-b^2)/2π×(a2?b2)/2,又勾股定理可得a2?b2=x2/4a^2-b^2=x^2/4a2?b2=x2/4,固答案為π×x2/8\pi\times x^2/8π×x2/8

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
const int inf=0x3f3f3f3f;
const int N=1e5+5;
const double pi=3.1415926535;
void slove(){int x;cin>>x;double c=x/2.0;double an=0.5*pi*c*c;printf("%.2lf",an);
} 
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;//cin>>_;while(_--)slove();return 0;
}

D-開羅爾網絡的備用連接方案

一道很簡單的遍歷樹的題,先按要求建樹,然后dfs遍歷統計到達每個節點是當前值的二進制數里一的個數,最后多次尋問含有相應個數的1的節點有幾個,對應查詢就好;

輸入邊的時候順序不是固定的,所以建樹的時候記得建雙向邊!這樣才能把圖連起來;便利的時候打標記或記錄父節點,防止走回頭路;

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
const int inf=0x3f3f3f3f;
const int N=1e5+5;
vector<int> e[N];
int a[N];
int an[N];
void dfs(int x, int w, int f){  int c = a[x]&w;bitset<35> b(c);an[b.count()]++;for (int i : e[x]) {if (i==f) continue; dfs(i,c,x); }
}
void slove() {int n, q;cin >> n >> q;for (int i = 1; i <= n; i++) cin >> a[i];for (int i = 1; i < n; i++) {int u, v;cin >> u >> v;e[u].push_back(v);e[v].push_back(u); }dfs(1,-1,0);while (q--) {int x;cin >> x;cout << an[x] << endl;}
}
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;//cin>>_;while(_--)slove();return 0;
}

這題的題目描述真是一言難盡,連最基本的需求都表達不清楚;第一次用比賽的小喇叭,沒想到出題人還真的回復了;后面補充過后明白題意后操作起來就很簡單;


E-咕咕嘎嘎!!!(easy)

數據很小,而且輸入的是一個數,一開始想的是dfs枚舉,但估計會超時,于是就想動態規劃或者數學推導;但是太菜了沒推出來;

題解中給出的動態規劃的寫法,有點類似于暴力,三重循環,i表示枚舉新選進去的數,j枚舉選了這個數后所有gcd的情況,k表示已經選取的序列的長度有點類似01背包,看看是加上這一位更優還是不加更優,這題里面不牽扯物品的價值價值,所以直接加也可以;

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
const int inf=0x3f3f3f3f;
const int N=5e3+5;
const int M=1e9+7;
int dp[N][N];
void slove(){int n,m;cin>>n>>m;for(int i=2;i<=n;i++)dp[i][1]=1;for(int i=2;i<=n;i++){ // 枚舉的是選進去的數for(int j=2;j<i;j++){ // 枚舉的是前面狀態的gcd是多少for(int k=m;k>=2;k--){ // 枚舉級精選取得序列長度的長度,每一維都相當于是個01背包,所以倒序dp[__gcd(i,j)][k]=max(dp[__gcd(i,j)][k],dp[__gcd(i,j)][k]+dp[j][k-1]);dp[__gcd(i,j)][k]%=M;}}}int an=0;for(int i=2;i<=n;i++)an+=dp[i][m],an%=M;cout<<an;
} 
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;//cin>>_;while(_--)slove();return 0;
}

C-O神

這題感覺還是比較有意思的,不太好想,被題目中設立的情境給迷惑了;比賽的時候以為就是一個大模擬,但是賽后看題解才看出來居然是個背包dp;使用 dp[j]表示消耗 j能獲得的最大收益。把最優的充值情況記錄下來;然后看每一抽在最優的情況下需要花費多少的錢記錄在新的數組b[]中;

但是這個樣例看著太奇怪了,比賽的時候根本沒看懂,正常的概率不應該是小數嗎?后面發現是乘法逆元的緣故:

在普通數學中,概率 pq\frac pqqp?是一個小于等于1的分數。但在模數下,分數pq\frac pqqp?被表示為 p×q?1p\times q^{-1}p×q?1 mod MMM,其中 q?1q^{-1}q?1qqq 的模逆元。模逆元q?1q^{-1}q?1通常是一個很大的數(因為qqq是小整數時,q?1modMq^{-1}\mod Mq?1modM接近MMM)。期望計算中,每一項b[i]×p×qkb[i]\times p\times q^kb[i]×p×qk在模數下會被放大p=pqp= \frac pqp=qp?在模數下是p×q?1modMp\times q^-1\mod Mp×q?1modM(大數)。qkq^kqk(1?p)kmodM(1-p)^k\mod M(1?p)kmodM,但通常仍是大數。最終累加時,這些大數相乘再取模,結果可能仍然很大。進一步了解好像是大二會學到的離散;

對概率逆元操作完之后,把每一抽的期望[總概率(成功的概率×當前失敗的概率)×代價]計算出來累加就好了!

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
const int inf=0x3f3f3f3f;
const int N=2e3+3;
const int M=1e9+7;
int dp[N],b[N];
pii a[N];
int kksu(int a,int b){a%=M;int s=1;while(b){if(b&1){s*=a;s%=M;}a*=a;a%=M;b>>=1;}return s;
}
void slove(){int x,p,q,m;cin>>x>>p>>q>>m;int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i].fi>>a[i].se;for(int i=1;i<=n;i++)for(int j=N;j>=a[i].fi;j--)dp[j]=max(dp[j],dp[j-a[i].fi]+a[i].se);int t=0;for(int i=1;i<=m;i++){while(dp[t]<x*i)t++;b[i]=t;}int p1=p*kksu(q,M-2)%M;int q1=((1-p1)%M+M)%M;t=1;int an=0;for(int i=1;i<m;i++){an+=b[i]*p1%M*t%M;an%=M;t*=q1;t%=M;}an+=t*b[m];cout<<an%M;
} 
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;//cin>>_;while(_--)slove();return 0;
}

但是代碼里面的細節超級多,超級容易寫錯,因為逆元的緣故,所以基本上計算的地方都要一直去取模;


B-異或期望的秘密

這題沒看懂的原因和上一題一樣,不明白樣例里面為什么突然變得那么大,還是對乘法逆元的理解不夠深刻!

看懂后其實不難理解;

再具體的看這題之前先看下面這兩題;


小藍的二進制詢問

D-小藍的二進制詢問_河南萌新聯賽2024第(一)場:河南農業大學

不難發現,這道題也是這個人出的

題目要求計算區間 [l, r]內所有整數的二進制表示中1的個數之和的問題。核心策略是利用按位計算的方法高效地計算從0到任意整數n(包括n)的二進制1的個數之和,然后通過前綴和思想計算區間和。

整體的思想就是類似于前綴和的思想對于查詢 [l, r],區間和等于 f(r) - f(l-1),即:
ans=(∑i=0rpopcount(i))?(∑i=0l?1popcount(i))\text{ans} = (\sum_{i=0}^{r} \text{popcount}(i)) - (\sum_{i=0}^{l-1} \text{popcount}(i))ans=(i=0r?popcount(i))?(i=0l?1?popcount(i))

f(n)計算從0到n(包括0和n)的所有整數的二進制表示中1的個數之和。

循環條件:變量 t從2開始,每次左移一位(即t * =2),直到t>=n * 2。

周期貢獻:對于每個位位置 (相當于以 t為周期),完整周期的個數是n/t。每個周期中該位為1的個數是 t/2。因此,完整周期貢獻為:(n/t)*(t/2)。

以i=2,第二位為例

十進制數  二進制   第2位
0        000      0  ← 周期開始
1        001      0
2        010      0
3        011      0 
4        100      1
5        101      1
6        110      1
7        111      1
8       1000      0   ← 下一個周期開始
...

周期長度:T = 2i+1 = 8
每個周期內:前2i個數第2位為0,后4個數為1

所以得到每一位的周期就是T = 2i+1,周期內1的個數就是2i

剩余部分貢獻:在一個不完整的周期中,如果余數n%t大于 t/2,則剩余部分中該位為1的個數是 n%t- t/2。

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
const int inf=0x3f3f3f3f;
const int N=1e5+5;
const int M=998244353;
int f(int n){if(n==0) return 0;int s=0,t=2;n++;while(t<n*2){s+=n/t*(t/2);if(n%t>t/2) s+=n%t-t/2;s%=M;t<<=1;}return s%M;
}
void slove(){int l,r;cin>>l>>r;cout<<(f(r)-f(l-1)+M)%M<<endl; 
} 
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;cin>>_;while(_--)slove();return 0;
}

累加器

F-累加器_河南萌新聯賽2024第(三)場:河南大學

這題要讓我們看從x到x+y這期間,對應二進制的數的每一位;可以延續上一題的思路;我們看看從0到x+y中變了多少次再減去從0到x變了多少次,就是我們的結果;

這道題我們只用找到他變化的周期就行,不要再具體看有幾個1了,所以更簡單點;

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
const int inf=0x3f3f3f3f;
const int N=1e5+5;
const int M=998244353;
int f(int x){int s=0;int t=1;while(t<=x){s+=x/t;t<<=1;}return s;
}
void slove(){int x,y;cin>>x>>y;cout<<f(x+y)-f(x)<<endl;
} 
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;cin>>_;while(_--)slove();return 0;
}

異或期望的秘密

現在我們再回來看這道題;這題看著帶這個異或的字樣,其實和異或關系并不大;異或時相同的位會被賦予0,所以我們去找不同的位的個數,再去比上區間長,就是我們所求的期望;

為了方便統計,我們就一位一位的看,看看這個區間的數的這一位上有幾個1幾個0,再看參與運算的k這一位是1還是0,找到不一樣的那個數的個數,累加的分子里面;最后計算出的結果是個分數,題目要求輸出逆元的形式;和上面的推導是一樣的;這里每次f函數判斷一位就行,遍歷每一位的for在主函數中;

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
const int inf=0x3f3f3f3f;
const int N=1e5+5;
const int M=1e9+7;
int kksu(int a,int b){int s=1;while(b){if(b&1){s*=a;s%=M;}a*=a;a%=M;b>>=1;}return s;
}
int f(int n,int i){if(n==0) return 0;int s=0,t=1<<(i+1);n++;s+=n/t*(t/2);if(n%t>t/2) s+=n%t-t/2;s%=M;return s%M;
}
void slove(){int l,r,k;cin>>l>>r>>k;int fz=0,fm=r-l+1;for(int i=0;i<=30,(1ll<<i)<=max(k,r);i++){int v=f(r,i)-f(l-1,i);if(k>>i&1) v=fm-v;fz+=v;fz%=M;}int an=fz*kksu(fm,M-2)%M;cout<<an<<endl;
} 
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;cin>>_;while(_--)slove();return 0;
}

A-約數個數和

樸實無華的題目描述,樸實無華的模板;一開賽就看到好多人都過了,題目還這么簡短;那大概率就是模板了;一開始是毫無頭緒的,因數的分解一直不太會(后來才想明白為什么是除),比賽的時候列了超級多的例子,驚奇的發現我們要求的答案就是∑i=1nni\sum_{i=1}^{n}\frac{n}{i}i=1n?in?,當時可激動了于是就暴力提交;但是數據很大超時了;于是就把每一項都列了出來,想到了之前看到過的整除分塊,但是之前沒具體學,好在還記得當時的思路自己推了推;

看似很簡單,但是當時寫完d后就一直在推推推…;好在最后還是對了;

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
const int inf=0x3f3f3f3f;
const int N=1e5+5;
void slove(){int n;cin>>n;int an=0;for(int l=1;l<=n;l++){int r=n/(n/l);an+=(n/l)*(r-l+1);l=r;}cout<<an;
} 
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;//cin>>_;while(_--)slove();return 0;
}

整除分塊

什么是整除分塊?

整除分塊 (又稱數論分塊) 是一種用于高效計算涉及整除運算的和式的技巧,常見于數論和算法問題中。其核心思想是將求和式中相同的整除結果進行“分塊”,合并計算,從而將時間復雜度從O(n)O(n)O(n)優化至O(n)O(\sqrt{n})O(n?)

給定一個正整數nnn ,如何快速計算以下和式?

S=∑k=1n?nk?S=\sum_{k=1}^n\lfloor\frac{n}{k}\rfloor S=k=1n??kn??

我們以16為例,現將結果列出來

i1234567891011121314151616i201065432222111111\begin{array}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|} \hline i & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 \\ \hline \frac{16}{i} & 20 & 10 & 6 & 5 & 4 & 3 & 2 & 2 & 2 & 2 & 1 & 1 & 1 & 1 & 1 & 1 \\ \hline \end{array}ii16??120?210?36?45?54?63?72?82?92?102?111?121?131?141?151?161??

觀察整除結果:對于 k∈[1,n]k\in[1,n]k[1,n],?nk?的取值最多只有2n\left\lfloor\frac nk\right\rfloor\text{的取值最多只有}{2\sqrt{n}}?kn??的取值最多只有2n?種(因為 k≤n時有n種取值,k>n時?nk?≤n)k\leq\sqrt{n}\text{時有}{\sqrt{n}}\text{種取值,}{k>\sqrt{n}}\text{時}{\left\lfloor\frac nk\right\rfloor\leq\sqrt{n}})kn?時有n?種取值,k>n??kn??n?)

合并相同值:找到所有滿足?nk?=q的連續區間?[l,r]\left\lfloor\frac nk\right\rfloor=q\text{的連續區間 }{[l,r]}?kn??=q的連續區間?[l,r],計算該區間的貢獻為 q?(r?l+1)q\cdot(r-l+1)q?(r?l+1)

確定右端點:對于當前分塊的左端點l,其右端點為r=∣nq∣l\text{,其右端點為}r=\left|\frac nq\right|l,其右端點為r=?qn??,其中q=?nl?q=\left\lfloor\frac nl\right\rfloorq=?ln??

看不懂?沒關系來數形結合,畫出16i\frac{16}{i}i16?的函數圖像,就是我們熟悉的反比例函數的圖像;因為計算機的除法會向下取整,所以我們畫出向下取整的函數,不難發現也是一段一段的!
與我們發現的規律一致;
函數圖像

所以整除分塊就是找到這些連續的塊的左右端點,這樣求和的時候就不用每個數都遍歷一遍了;

我們可以這么理解,因為是向下取整,所以順序遍歷新得到的結果的數可能是除不盡的(可能會有余數),那我們就反除這個結果,得到恰好能除完的位置,那個位置就是我們的右端點;再往后就是新的結果了;

分塊過程還是以16為例

分塊區間 [l, r]q = ?16l?\left\lfloor\frac{16}{l}\right\rfloor ?l16??右端點 r=?16q?r = \left\lfloor\frac{16}{q}\right\rfloor r=?q16??貢獻 q?(r?l+1)q \cdot (r - l + 1) q?(r?l+1)
[1, 1]16116 × 1 = 16
[2, 2]828 × 1 = 8
[3, 3]535 × 1 = 5
[4, 4]444 × 1 = 4
[5, 5]353 × 1 = 3
[6, 8]28(因為 ?162?=8\left\lfloor\frac{16}{2}\right\rfloor = 8 ?216??=82 × 3 = 6
[9, 16]1161 × 8 = 8

所以就能得到模板

for(int l=1;l<=n;l++){int r=n/(n/l);an+=(n/l)*(r-l+1);l=r;
}

同類練習

K-取模_2022年中國高校計算機大賽-團隊程序設計天梯賽(GPLT)上海理工大學校內選拔賽

也是一道數學題;題目要求∑i=1n(n%i)\sum_{i=1}^{n}\left(n\%i\right)i=1n?(n%i)的結果;

我們可以得出n%i=n??ni??in\%i=n-\lfloor\frac{n}{i}\rfloor\cdot in%i=n??in???i

我們的問題就可以轉行為∑i=1n(n%i)=∑i=1n(n??ni??i)\sum_{i=1}^{n}(n\%i)=\sum_{i=1}^{n}(n-\lfloor\frac{n}{i}\rfloor\cdot i)i=1n?(n%i)=i=1n?(n??in???i)也就是=n2?∑i=1n(?ni??i)=n^{2}-\sum_{i=1}^{n}(\lfloor\frac{n}{i}\rfloor\cdot i)=n2?i=1n?(?in???i)

只看右邊進而得到∑x=lrx??ni?\sum_{x=l}^{r}x\cdot\lfloor\frac{n}{i}\rfloorx=lr?x??in??所以我們要求的就是整除分塊后每一塊的區間和(用等差數列求和)×這一塊的值;最后累加起來用n2減;就可以了;

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
const int inf=0x3f3f3f3f;
const int N=1e5+5;
const int M=998244353;
void slove(){int n;cin>>n;__int128 s=0;for(__int128 l=1,r=1;l<=n;l++){int k=n/l;r=n/k;s+=((l+r)*(r-l+1)/2*k+M)%M;l=r;}int an=((__int128)n*(__int128)n-s)%M;cout<<an;
} 
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;//cin>>_;while(_--)slove();return 0;
}

L 題也是數論的題,推出結論就能快速解決,可結論成了大問題

H 看題解說是個數位dp,好像也能做?

G 題樹形dp,比賽的時候看出來了,和之前寫的沒有上司的舞會比較像,但是寫的時候有bug一直改不對;


這次補題的收獲還是很大的,也學到了很多新的東西;


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

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

相關文章

unixbench系統性能測試

unixbench系統性能測試 環境&#xff1a; UnixBench: 6.0.0(2025-05-21)簡介 UnixBench 是一款經典的 Unix/Linux 系統性能測試工具&#xff0c;主要用于評估系統的CPU 運算能力、內存性能、多線程處理能力以及部分系統調用&#xff08;如進程創建、文件操作&#xff09;的效率…

上線了,自己開發的刷題小程序,vue3.0

嘿&#xff0c;最近我搞了個Java刷題的小程序&#xff0c;用Vue寫的&#xff0c;界面和功能都還挺完整的。今天就來跟大家聊聊這個小程序是怎么實現的&#xff0c;代碼里都藏著哪些小細節。 先看整體結構&#xff0c;我把整個頁面分成了幾個大塊&#xff1a;頂部導航欄、題目內…

嵌入式開發學習———Linux環境下數據結構學習(三)

單向循環鏈表單向循環鏈表是一種特殊的單向鏈表&#xff0c;尾節點的指針指向頭節點&#xff0c;形成一個閉環。適用于需要循環訪問的場景&#xff0c;如輪詢調度。結構特點&#xff1a;每個節點包含數據域和指向下一個節點的指針&#xff0c;尾節點的指針指向頭節點而非空值。…

【華為機試】684. 冗余連接

文章目錄684. 冗余連接描述示例 1示例 2提示解題思路核心分析問題轉化算法選擇策略1. 并查集 (Union-Find) - 推薦2. 深度優先搜索 (DFS)3. 拓撲排序算法實現詳解方法一&#xff1a;并查集 (Union-Find)方法二&#xff1a;深度優先搜索 (DFS)數學證明并查集算法正確性證明時間復…

Ⅹ—6.計算機二級綜合題7---10套

目錄 第7套 【填空題】 【修改題】 【設計題】 第8套 【填空題】 【修改題】 【設計題】 第9套 【填空題】 【修改題】 【設計題】 第10套 【填空題】 【修改題】 【設計題】 第7套 【填空題】 題目要求:給定程序中,函數fun的功能是:將形參s所指字符串中所…

【三橋君】大語言模型計算成本高,MoE如何有效降低成本?

? 你好&#xff0c;我是 ?三橋君? &#x1f4cc;本文介紹&#x1f4cc; >> 一、引言 在AI技術飛速發展的當下&#xff0c;大語言模型&#xff08;LLM&#xff09;的參數規模不斷增長&#xff0c;但隨之而來的計算成本問題也日益凸顯。如何在保持高效推理能力的同時擴…

Python游戲開發利器:Pygame從入門到實戰全解析

引言 Pygame是Python中最受歡迎的2D游戲開發庫之一&#xff0c;基于SDL&#xff08;Simple DirectMedia Layer&#xff09;構建&#xff0c;支持圖形渲染、音效處理、事件響應等核心功能。無論是開發簡單的休閑游戲&#xff0c;還是復雜的交互式應用&#xff0c;Pygame都能提供…

行為型模式-協作與交互機制

行為型模式聚焦于對象間的行為交互&#xff0c;通過規范對象協作方式提升系統的靈活性與可擴展性。在分布式系統中&#xff0c;由于多節點異步通信、網絡不可靠性及狀態一致性挑戰&#xff0c;行為型模式需針對分布式特性進行適應性設計。本文從觀察者、策略、命令、責任鏈、狀…

spring boot 整合 Spring Cloud、Kafka 和 MyBatis菜鳥教程

環境準備確保項目中已引入 Spring Boot、Spring Cloud、Kafka 和 MyBatis 的依賴。以下是一個典型的 Maven 依賴配置&#xff1a;<dependencies><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artif…

20 BTLO 藍隊靶場 Sticky Situation 解題記錄

難度&#xff1a;5/10考察技能: Windows admin, Autopsy 使用場景&#xff1a;分析USB設備使用情況Autopsy使用注意&#xff1a;用管理員打開&#xff0c;在實際分析時注意先復制一個鏡像文件&#xff0c;保存好原文件常用的Windows USB 取證的位置:Windows XP:Registry Key: U…

安裝及配置Go語言開發環境與VSCode集成指南

安裝Go語言開發 安裝Go語言開發環境是第一步。訪問Go官網&#xff0c;下載適合操作系統的安裝包&#xff0c;如果進不去可以訪問Go官方鏡像站。 根據自己的系統選擇對應的安裝包&#xff0c;我這邊是Windows系統就點擊安裝第一個即可。 點擊下一步即可。 驗證安裝是否成功可以…

專題:2025微短劇行業生態構建與跨界融合研究報告|附100+份報告PDF匯總下載

原文鏈接&#xff1a; https://tecdat.cn/?p43384 分析師&#xff1a;Boyu Wang 在此對 Boyu Wang 對本文所作的貢獻表示誠摯感謝&#xff0c;他在武漢大學完成了數據科學與大數據技術專業的學習。擅長 R 語言、Python、機器學習、數據可視化。 中國短視頻行業在經歷爆發式增…

配置NGINX

Nginx環境配置與前端VUE部署安裝nginx&#xff1a;命令sudo yum update && sudo yum install nginx部署:拷貝前端到目錄/home/publish/idasweb/下修改nginx配置&#xff1a;進入到/etc/nginx目錄下&#xff0c;修改nginx.conf中user www-data為user root&#xff0c;不…

MySQL深度理解-MySQL索引優化

1.Order by與Group by優化1.1Case1employees表中建立了name&#xff0c;position和age索引&#xff0c;并且使用了order by age進行排序操作&#xff1a;EXPLAIN SELECT * FROM employees WHERE name LiLei and position dev order by age最終explain的結果發現使用了idx_nam…

「Linux命令基礎」用戶和用戶組實訓

用戶與用戶組關系管理 在Linux系統中,用戶和用戶組的關系就像班級里的學生和小組。一個用戶可以同時屬于多個組,這種靈活的成員關系為權限管理提供了便利。創建用戶時,系統會自動生成一個與用戶同名的主組,這個組會成為用戶創建文件時的默認屬組。 理解用戶和用戶組的關系…

Https以及CA證書

目錄 1. 什么是 HTTPS 通信機制流程 證書驗證過程 CA證書 瀏覽器如何校驗證書合法性呢&#xff1f; 1. 什么是 HTTPS HTTP 加上加密處理和認證以及完整性保護后即是 HTTPS。 它是為了解決 HTTP 存在的安全性問題&#xff0c;而衍生的協議&#xff0c;那使用 HTTP 的缺點有…

數字圖像處理(四:圖像如果當作矩陣,那加減乘除處理了矩陣,那圖像咋變):從LED冬奧會、奧運會及春晚等等大屏,到手機小屏,快來挖一挖里面都有什么

數字圖像處理&#xff08;四&#xff09;三、&#xff08;準備工作&#xff1a;玩具咋玩&#xff09;圖像以矩陣形式存儲&#xff0c;那矩陣一變、圖像立刻跟著變&#xff1f;原圖發揮了鈔能力之后的圖上述代碼包含 10 個圖像處理實驗&#xff0c;每個實驗會生成對應處理后的圖…

SpringBoot航空訂票系統的設計與實現

文章目錄前言詳細視頻演示具體實現截圖后端框架SpringBoot持久層框架Hibernate成功系統案例&#xff1a;代碼參考數據庫源碼獲取前言 博主介紹:CSDN特邀作者、985高校計算機專業畢業、現任某互聯網大廠高級全棧開發工程師、Gitee/掘金/華為云/阿里云/GitHub等平臺持續輸出高質…

2025年PostgreSQL 詳細安裝教程(windows)

前言 PostgreSQL 是一個功能強大的開源關系型數據庫管理系統(ORDBMS)&#xff0c;以下是對它的全面介紹&#xff1a; 基本概況 名稱&#xff1a;通常簡稱為 "Postgres" 類型&#xff1a;對象-關系型數據庫管理系統 許可&#xff1a;開源&#xff0c;采用類MIT許可…

Java日志按天切分方法

使用 Logrotate&#xff08;推薦&#xff09;Logrotate 是 Linux 系統自帶的日志管理工具&#xff0c;支持自動切割、壓縮和刪除舊日志。步驟&#xff1a;創建 Logrotate 配置文件在 /etc/logrotate.d/ 下新建配置文件&#xff08;如 java-app&#xff09;&#xff1a;sudo nan…