当前位置:网站首页>20排位赛3

20排位赛3

2022-07-07 07:09:00 moyangxian

20排位赛3

A

题意:略

题记:略

#include<bits/stdc++.h>

using namespace std;
const int N=110;
int a[N];

int main(){
    
    cin>>a[0]>>a[1]>>a[2];
    sort(a,a+3);
    cout<<max(0,a[2]-a[1]-a[0]+1)<<endl;
    return 0;
}

B

题意:略

题记:找字符串的最长公共前后缀,用substr()函数或者求next函数。

#include<bits/stdc++.h>

using namespace std;
const int N=110;
int nxt[N];
char s[N];
int n,k;
void getnext(){
    
    int i=0,j=-1;
    nxt[0]=-1;
    while(i<n){
    
        if(j==-1||s[i]==s[j])
            i++,j++,nxt[i]=j;
        else
            j=nxt[j];
    }
}

int main(){
    
    cin>>n>>k;
    cin>>s;
    getnext();
    cout<<s;
    for(int i=1;i<=k-1;i++)
        cout<<(s+nxt[n]);
    return 0;
}

C

题意:略

题记:总共可以看到n/x个灯笼,r/x表示1~ r能看到多少灯笼,(l-1)/x表示1 ~ (l-1)能看到多少灯笼。(n/x)-r/x+(l-1)/x即答案。

#include<bits/stdc++.h>

using namespace std;
const int N=110;

void solve(){
    
    int n,x,l,r;
    cin>>n>>x>>l>>r;
    cout<<(n/x)-r/x+(l-1)/x<<endl;
}

int main(){
    
    int T;
    cin>>T;
    while(T--){
    
        solve();
    }
    return 0;
}

D

题意:略

题记:每次sum都能减去一个(a-b),所以将(a-b)作为关键字降序排序,每次将sum减一下即可。最后再判断一下sum是否大于m。

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
const int N=1e5+10;

struct Node{
    
    int a,b;
    bool operator<(const Node &W)const{
    
        return a-b>W.a-W.b;
    }
}t[N];

void solve(){
    
    int n,m;
    cin>>n>>m;
    ll sum=0;
    for(int i=1;i<=n;i++){
    
        cin>>t[i].a>>t[i].b;
        sum+=t[i].a;
    }
    sort(t+1,t+1+n);
    int ans=0;
    for(int i=1;i<=n;i++){
    
        if(sum<=m) break;
        sum-=t[i].a-t[i].b;
        ans++;
    }
    if(sum<=m) cout<<ans<<endl;
    else cout<<"-1"<<endl;
}

int main(){
    
    int T=1;
    //cin>>T;
    while(T--){
    
        solve();
    }
    return 0;
}

E

题意:略

题记:
C语言的sin函数需要传递的是弧度,弧度=角度*pi/180
在这里插入图片描述

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
const double pi=acos(-1.0);

int main(){
    
    double n,r;
    cin>>n>>r;
    double s=sin(360/(n*2)*(pi/180));
    double ans=(s*r)/(1-s);
    printf("%.8f\n",ans);
    return 0;
}

F

G

原网站

版权声明
本文为[moyangxian]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_45809826/article/details/114994592