牛客競賽,GDDU第十屆文遠知行杯新生程式設計競賽,摸魚記(BDEIKL題解,補G,ACFHJ)
碎碎念
比賽前看到評論區的提問
這個是幹啥的,求解答,第一次參加
抽獎送牛客衛衣的
hhhh重在參與
然後【注意事項】裡面寫的
1 參賽形式:個人,面向零基礎20級新生和部分有基礎新生。
4 請各位教練約束一下自己學生,老隊員儘量不要參加,至少不要帶歪榜
5 因我校新生水平有限,題目比較簡單。題目或者網路若有問題請各位教練和同學們多多擔待
說好的水賽呢?水在哪裡嚶嚶嚶
之前老師在社團群裡隨手發了個,我還以為是推薦呢,結果下午好像就我來打了?
我,qaqwq
按照過題率做了BDEIKL一共6題
G思路是對的,但是不知道為啥一直沒過,補一下
剩下五題題目沒看就算了,害。
簽到語法題:B、I
- B就是一個字串統計O(n)列舉就行了
- I是一個直接輸出答案的簽到題,,(Ctrl+F搜冠軍,數一下就行)
#include <bits/stdc++.h>
using namespace std;
int main(){
string s;
int cnt = 0;
while(cin>>s){
if(s==".")break;
for(int i = 0; i < s.size(); i++){
if(s[i]=='a')cnt++;
}
}
cout<<cnt<<"\n";
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main(){
cout<<"The Chinese teams has won 4 championships\n";
return 0;
}
簽到模擬題:K,L
- K是一個陣列模擬,會vector迭代器就白給
- L是一個直接開方計算,注意360度的時候分個類。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
vector<int>a;
int main(){
int n, q;
cin>>n>>q;
for(int i = 0; i < n; i++){
int x; cin>>x; a.push_back(x);
}
while(q--){
int op; cin>>op;
if(op==1){
int x; cin>>x;
a.erase(a.begin()+x-1);
}else if(op==2){
int x, y; cin>>x>>y;
vector<int>::iterator it = a.begin()+x-1;
a.insert(it,y);
}else if(op==3){
int x; cin>>x;
vector<int>::iterator it = a.begin()+x-1;
int t = *it, tt = *it; it++;
while((*it)==t && it<a.end()){
tt += t;
it++;
}
a.erase(a.begin()+x-1,it);
a.insert(a.begin()+x-1,tt);
}
for(int i = 0; i < a.size(); i++){
if(i!=0)cout<<" ";
cout<<a[i];
}
cout<<"\n";
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const double pi = 3.1415926535;
int main(){
//cout<<pi<<endl;
int T; cin>>T;
while(T--){
int a, b, r, h;
cin>>a>>b>>r>>h;
double x = min(abs(a-b),360-abs(a-b))*1.0/360*2*pi*r;
double ans = sqrt(x*x+1.0*h*h);
printf("%.2lf\n",ans*ans);
}
return 0;
}
簽到數學題:D、E
- 求n的階乘在m進位制下末位0的個數。這題CF有原題,這題是素數,簡化了問題,可以直接轉換為:n中p因子個數,然後迴圈就好了。結論是
n/p+n/(p^2)+n/(p^3)
。 - k為gcd的因子,等價於同時滿足k是i和j的因數,即有多少個i和j都是k的倍數。所以答案直接輸出
(n/k)*(m/k)
。(這題我還繞了好久要不要迴圈求k平方的倍數,不過已經包含了) - 這兩題的坑是要記得開longlong,emmm
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
int T; cin>>T;
while(T--){
int n, p; cin>>n>>p;
LL cnt = 0, tmp = 1;
for(int i = 1; i <= n; i++){
tmp *= i;
if(tmp%p==0){
cnt++; tmp/=p;
}
}
cout<<cnt<<"\n";
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
int T; cin>>T;
while(T--){
LL n, m, k;
cin>>n>>m>>k;
if(k==1){
cout<<n*m<<endl;
continue;
}
LL cnt = 0, t1, t2;
t1 = n/k, t2 = m/k;
cnt += t1*t2;
cout<<cnt<<endl;
}
return 0;
}
補題,G
- 無論以任何順序入場,怒氣值之和都不會改變。(結論我已經得出來了)
- 可是不知道為什麼單跑一遍還是會TLE,我直接qaq
- 還是想不懂自己下午為什麼會傻傻的寫錯,qaq
//結論,直接計算就行
//n個座位,m個人(按照一定排列進入)有心儀座位
//如果做不到心儀的,怒氣值為右邊以第一個空的到心儀的位置
//求安排順序讓怒氣值最小
//記得開longlong
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL a[100010];
int main(){
int n, m; cin>>n>>m;
for(int i = 1; i <= m; i++)
cin>>a[i];
sort(a+1,a+m+1);//排序是
LL ans = 0, s = 1;
for(int i = 1; i <= n; i++){
if(a[s]<=i){//如果心儀座位在i左邊,那就走過來,積累怒氣值
ans += i-a[s];
s++;
}
if(s==m+1)break;
}
if(s!=m+1)cout<<-1;
else cout<<ans;
return 0;
}
/*
/*
//貪心,每個人先選好自己的位置
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 100010;
int a[maxn];
set<int>se;
int main(){
ios::sync_with_stdio(false);
int n, m; cin>>n>>m;
for(int i = 1; i <= m; i++){
cin>>a[i]; se.insert(a[i]);
}
sort(a+1,a+m+1);
int ans = 0;
for(int i = 1; i <= m; i++){
if(a[i]==a[i-1]){
int t = a[i];
while(se.count(t))t++;
if(t>n){cout<<-1;return 0;}
se.insert(t);
ans += t-a[i];
}
}
cout<<ans<<"\n";
return 0;
}
*/
/*
//貪心:所有順序結果都一樣,直接計算
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 100010;
int a[maxn];
set<int>se;
vector<int>vc;
int main(){
int n, m;
cin>>n>>m;
int ans = 0;
for(int i = 1; i <= m; i++){
cin>>a[i]; int t = a[i];
while(se.count(t))t++;
if(t>n){
cout<<"-1";
return 0;
}
se.insert(t);
ans += t-a[i];
}
cout<<ans<<"\n";
return 0;
}
*/
/*
//列舉排列
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 100010;
int a[maxn], sc[maxn];
int main(){
int n, m;
cin>>n>>m;
for(int i = 1; i <= m; i++)
cin>>a[i];
int ans = -1;
do{
memset(sc,0,sizeof(sc));
int tmp = 0;
for(int i = 1; i <= m; i++){
int t = a[i];
while(sc[t]!=0)t++;
if(t>n){
tmp =-1e9;
}
sc[t] = i;
tmp += t-a[i];
}
ans = max(ans,tmp);
}while(next_permutation(a+1,a+m+1));
cout<<ans<<"\n";
return 0;
}
*/
官方題解
相關文章
- 2020年廣東工業大學第十屆文遠知行杯新生程式設計競賽 A.肥豬的鋼琴床(dp動態規劃)程式設計動態規劃
- 華中農業大學第十三屆程式設計競賽 題解程式設計
- QZEZ第一屆“飯吉圓”杯程式設計競賽程式設計
- 2020年“感恩杯”台州學院第十三屆大學生程式設計競賽D、H、I題解(後續補充)程式設計
- 第十屆山東省大學生程式設計競賽題解(A、F、M、C)程式設計
- 第二屆“重科杯”重慶科技大學程式設計競賽(同步賽)ptlks的題解(2024.5.18)程式設計
- 華中農業大學第十三屆程式設計競賽程式設計
- [補題] 第 45 屆國際大學生程式設計競賽(ICPC)亞洲區域賽(上海)程式設計
- 【牛客訓練記錄】浙江機電職業技術大學第九屆程式設計競賽程式設計
- 北京資訊科技大學第十一屆程式設計競賽(重現賽)I程式設計
- 牛客網-2018年湘潭大學程式設計競賽:G 又見斐波那契程式設計
- 第十七屆中國計量大學程式設計競賽 I- Isolated Pointset程式設計
- [題解][2021-2022年度國際大學生程式設計競賽第10屆陝西省程式設計競賽] Type The Strings程式設計
- "華為杯"華南理工大學程式設計競賽(同步賽) H題解 還沒寫程式設計
- 牛客周賽 Round 70 A~G 題解
- “九韶杯”河科院程式設計協會第一屆程式設計競賽題目分析以及總結程式設計
- M-災難預警-浙江農林大學第十九屆程式設計競賽暨天梯賽選拔賽程式設計
- 第15屆浙江省大學生程式設計競賽D題程式設計
- 第二十屆西南科技大學ACM程式設計競賽(同步賽)ACM程式設計
- 第十屆中國大學生程式設計競賽 重慶站(CCPC 2024 Chongqing Site)程式設計
- 挑選方案問題(牛客競賽 思維題+推導公式)公式
- 第 10 屆 CCPC 中國大學生程式設計競賽濟南站 遊記程式設計
- 2024端午鋁紫程式設計競賽程式設計
- 中國計量大學現代科技學院第四屆“中競杯”程式設計校賽(同步賽) F.爬塔(DP)程式設計
- 第十五屆藍橋杯軟體賽省賽C/C++B 組題解C++
- 無錫學院2024年ACM大學生程式設計競賽校選賽 題解ACM程式設計
- 藍橋杯競賽題目:”機器人繁殖“解析及題解機器人
- 2024 CCPC第五屆遼寧省程式設計競賽 集訓2程式設計
- 2024國慶鋁紫程式設計競賽程式設計
- 程式設計競賽中讀檔案技能程式設計
- 第十屆藍橋杯C++國賽B組部分題解(假題解)C++
- 牛客周賽 Round 66 G
- 牛客小白月賽3 G
- 牛客小白月賽105 題解
- 牛客周賽 Round 66 題解
- 第十三屆藍橋杯省賽A組
- 紹興市大學生程式設計競賽程式設計
- ZZJC新生訓練賽第十八場題解