前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >哈理工2019新生赛解题报告

哈理工2019新生赛解题报告

作者头像
wenzhuan
发布2022-08-15 12:23:41
1930
发布2022-08-15 12:23:41
举报
文章被收录于专栏:你会烧尽还是结冰

没啥好写的但毕竟也是ak了

来看压行小天才的表演

A: 会长的烦心事

题目链接

代码语言:javascript
复制
#include<bits/stdc++.h>
#define rep(i,s,e) for(int i=s; i<e; ++i)
using namespace std;
int len[15];
int change(char c){
    if(c=='l') return 0;
    if(c=='e') return 1;
    if(c=='a') return 2;
    if(c=='g') return 3;
    if(c=='u') return 4;
    if(c=='o') return 5;
    if(c=='f') return 6;
     return 7;
}
int main(){
    string s; while(cin>>s){
        int n=s.length(); rep(i,0,7) len[i]=0;
        rep(i,0,n) len[change(s[i])]++;
        len[0]/=2; len[1]/=2; int mn=1e9;
        rep(i,0,7) mn=min(mn,len[i]); cout<<mn<<'\n';
    }
}

B: 快来秒掉我!

题目链接 嗯!第一次写php(逃

代码语言:javascript
复制
Do you want to play ACM?(yes\no)

C: 素数圆环

题目链接 暴搜

代码语言:javascript
复制
#include<bits/stdc++.h>
#define rep(i,s,e) for(int i=s; i<e; ++i)
using namespace std;
int n,cas,ans[25],vis[25];
int p[25]={0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1};
void dfs(int x){
    if(x>n&&p[ans[n]+1]) rep(i,1,n+1) 
        cout<<ans[i]<<(char)(i==n?'\n':' ');
    if(x<=n) rep(i,2,n+1) if(!vis[i]&&p[i+ans[x-1]]){
        vis[i]=1; ans[x]=i; dfs(x+1); vis[i]=0;
    }
}
void solve(){
    cout<<"Case "<<++cas<<":\n"; ans[1]=1;
    if(n%2==0) dfs(2); cout<<'\n';
}
int main(){
    while(cin>>n&&n) solve();
}

D: 电脑磨损程度

题目链接 委屈,它卡cout精度

代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;
int solve(int n){
     if(n<=4) return cout<<10<<'\n',0;
     int r=n%8,c=n/8; if(!r) return cout<<c*18<<'\n',0;
     if(r==1) return cout<<c*18+2<<".4"<<'\n',0;
     if(r==2) return cout<<c*18+4<<".8"<<'\n',0;
     if(r==3) return cout<<c*18+7<<".2"<<'\n',0;
     if(r==4) return cout<<c*18+9<<".6"<<'\n',0;
     return cout<<c*18+10+(r-4)*2<<'\n',0;
}
int main(){
     int n; while(cin>>n&&n) solve(n);
}

E: ACMer如何拯救小学生

题目链接

代码语言:javascript
复制
#include<bits/stdc++.h>
#define rep(i,s,e) for(int i=s; i<e; ++i)
using namespace std;
string s;
int main(){
    int _; cin>>(_); getchar(); while(_--){
        getline(cin,s); int n=s.length();
        string t=""; t+=toupper(s[0]); rep(i,1,n){
            if(s[i-1]==' '&&s[i]!=' ') t+=toupper(s[i]);
        } cout<<t<<'\n';
    }
}

F: 当会长和一群手贱的耗子在电梯相遇

题目链接 算因数个数

代码语言:javascript
复制
#include<bits/stdc++.h>
#define rep(i,s,e) for(ll i=s; i<e; ++i)
using namespace std;
typedef long long ll;
void solve(ll n){
     ll cnt(0); rep(i,1,1e8){
          if(i*i>n) break; if(n%i==0) cnt+=i*i==n?1:2;
     } puts(cnt&1?"Goddess,I'm coming~~~":"Farewell~");
}
int main(){
     ll n; while(cin>>n&&n) solve(n);
}

G: ACMer分奖金

题目链接

代码语言:javascript
复制
#include<bits/stdc++.h>
#define rep(i,s,e) for(int i=s; i<e; ++i)
using namespace std;
int main(){
    int _; cin>>_; while(_--){
        int num[10]; rep(i,0,6) num[i]=0;
        int n; cin>>n; rep(i,0,n){
            int a; cin>>a; num[0]+=a/100; a%=100;
            num[1]+=a/50; a%=50; num[2]+=a/20; a%=20;
            num[3]+=a/10; a%=10; num[4]+=a/5; a%=5; num[5]+=a;
        } int sum(0); rep(i,0,6) sum+=num[i];
        cout<<sum<<'\n';
    }
}

H: 放轻松

题目链接

代码语言:javascript
复制
#include<bits/stdc++.h>
#define rep(i,s,e) for(int i=s; i<e; ++i)
using namespace std;
double a[15];
int main(){
    int n; while(cin>>n){
        rep(i,0,n) cin>>a[i]; sort(a,a+n);
        rep(i,0,n) printf("%.2lf ",a[i]); cout<<'\n';
    }
}

I: ACM协会晚会

题目链接 组合数

代码语言:javascript
复制
#include<bits/stdc++.h>
#define rep(i,s,e) for(int i=s; i<e; ++i)
using namespace std;
typedef long long ll;
const int mod = 1e18;
void exgcd(ll a,ll b,ll &x,ll &y){
     if(!b){ x=1,y=0; return; }
     else{ exgcd(b,a%b,y,x); y-=(a/b)*x; return; }
}
ll C(int s,int x){
    if(s>x-s) s=x-s;
    ll ans=1,tmp=1,xx,y;
    rep(i,1,s+1) ans=ans*(x-i+1)%mod,tmp=tmp*i%mod;
    exgcd(tmp,mod,xx,y); ans=(ans*xx%mod+mod)%mod;
    return ans;
}
int solve(){
    int n,m; cin>>n>>m; if(m>n) return puts("0");
    return cout<<C(m,n)<<'\n',0;
}
int main(){
    int _; cin>>_; while(_--) solve();
}

J: 会长爱旅游

题目链接 bfs

代码语言:javascript
复制
#include<bits/stdc++.h>
#define mst(a,x) memset(a, x, sizeof(a))
#define rep(i,s,e) for(int i=s; i<e; ++i)
using namespace std;
const int maxn = 1e5 + 5;
vector<int>vv[maxn];
int vis[maxn],ans[maxn];
void bfs(int s){
    queue<int>q; q.push(s); while(!q.empty()){
        int fr=q.front(); q.pop(); for(int t:vv[fr])
        if(!vis[t]) vis[t]=1,ans[t]=fr,q.push(t);
    }
}
int main(){
    int _; cin>>_; while(_--){
        int n,s; cin>>n>>s; mst(vv,0); rep(i,1,n){
            int x,y; cin>>x>>y; vv[x].push_back(y); vv[y].push_back(x);
        } ans[s]=-1; vis[s]=1; bfs(s); 
        rep(i,1,n+1) cout<<ans[i]<<(char)(i==n?'\n':' ');
    }
}

压行选手是这么牛逼的

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • A: 会长的烦心事
  • B: 快来秒掉我!
  • C: 素数圆环
  • D: 电脑磨损程度
  • E: ACMer如何拯救小学生
  • F: 当会长和一群手贱的耗子在电梯相遇
  • G: ACMer分奖金
  • H: 放轻松
  • I: ACM协会晚会
  • J: 会长爱旅游
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档