# 2023NPSC初賽試題 [初賽題目](<https://github.com/linn1121/coding-with-C/blob/main/contest_senior.pdf> "Title") ## A.蛋餅愛數樹 __虫合__ 看不懂 ## B.巫醫巫醫出題 >解題思路: >可以直接理解成作業排成問題,等待時間都是T秒,要做的就是對各組每筆資料的X數做計算並排序,由X數最多的開始到所有組別的測資都執行完畢或著都遇到X過後結束。 >Code : >```cpp >#include <bits/stdc++.h> >using namespace std; >#define 原神 int >#define 啟動 main >#define 幫我撐五秒鐘 \ > ios::sync_with_stdio(false); \ > cin.tie(nullptr); \ > cout.tie(nullptr); >struct num_of_X >{ > int num{0}; > int pos; >}; >原神 啟動() >{ > 幫我撐五秒鐘 > int N, M, T, timeCost = 0; > cin >> N >> M >> T; > vector<string> assets(N); > vector<num_of_X> Xconuter(M); > for (int i = 0; i < N; i++) > { > cin >> assets[i]; > for (int j = 0; j < M; j++) > { > Xconuter[j].pos = j; > if (assets[i][j] == 'X') > { > Xconuter[j].num++; > } > } > } > sort(Xconuter.begin(), Xconuter.end(), [](num_of_Xa, num_of_X b) > { return a.num > b.num; }); > for (int i = 0; i < N; i++) > { > for (int j = 0; j < M; j++) > { > timeCost += T; > if (assets[i][Xconuter[j].pos] == 'X') > { > break; > } > } > } > cout << timeCost; >} >``` >時間複雜度約為$O$($N$+$2$($N$$\times$$M$)) >~~甚麼?優化??不存在的~~ --*Written By Chen* ## C.砲打皮皮 皮皮,啟動! >解題思路: >反正就是要先找到它的規則。 >$N,M$ 存在以下三種情況: >- 奇數 $\times$ 奇數 >- 奇數 $\times$ 偶數 >- 偶數 $\times$ 偶數 > >只要存在奇數的情況所需要選擇的位置數即為該奇數 >而第三種情況只要把每個位置都選一遍就可以使所有位置都被啟動 >因為只要是任一種可以使全部都啟動的情況即為正解, >所以直接輸出所有位置就可以了,$N\times M$也不會大於$2^{16}$ >Code: >```cpp >#include<bits/stdc++.h> >using namespace std; >#define 原神 int >#define 啟動 main >#define 幫我撐五秒鐘 ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); >原神 啟動 (){ > 幫我撐五秒鐘 > int n,m; > cin>>n>>m; > if(n%2!=0){ > cout<<n<<"\n"; > for(int i=1;i<=n;i++){ > cout<<i<<" 1"<<"\n"; > } > }else if(m%2!=0){ > cout<<m<<"\n"; > for(int i=1;i<=m;i++){ > cout<<"1 "<<i<<"\n"; > } > } > else{ > cout<<m*n<<"\n"; > for(int i=1;i<=n;i++){ > for(int j=1;j<=m;j++){ > cout<<i<<" "<<j<<"\n"; > } > } > } >} >``` >時間複雜度約為 $O(N×M)$ >~~一樣懶得優化,就是那麼偷懶~~ *--Written By Chen* ## D.全國系統程式設計大賽 >解題思路: >我還沒想到 ## E.巫醫巫醫拿錢錢 >解題思路: >該死的假解 ## F.買漫畫 >解題思路: >沒想法 ## G.菜月昴與逆序數對 >解題思路: >離散數學?微積分?你確定?
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up