YACS-202110

YACS-202110

运费计算

#include<bits/stdc++.h>
using namespace std;

int a,ans=12;
int main(){
    cin>>a;
    if(a>1000){
        int surplus = a-1000;
        ans+=surplus/500*5;
        if(surplus%500!=0){
            ans+=5;
        }
    }
    cout<<ans;
}

 

阶乘的余数

http://iai.sh.cn/problem/497

#include<bits/stdc++.h>
using namespace std;

long long ans=1;
long long n,m;
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        ans*=i;
        ans%=m;
    }
    cout<<ans%m;

}

 

多边形的判定

http://iai.sh.cn/problem/499

#include<bits/stdc++.h>
using namespace std;

long long ans;
int n,a[100001];
int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];
        ans+=a[i];
    }
    bool flag=true;
    for(int i=0;i<n;i++){
        if(a[i]>=ans-a[i]){
            flag=false;
            break;
        }
    }
    if(flag){
        cout<<"Yes";
    }else{
        cout<<"No";
    }
}

 

淘气合影

http://iai.sh.cn/problem/505

#include<bits/stdc++.h>
using namespace std;
int n,pos[100005][6],a[100005];
//在正确的排列中的任意两个人x和y,假设x在y的左侧
//在这五次照片中,x最多只有2次可能在y的右侧 1.x跑到y的右侧 2.y跑到x的左侧
//其余都是x在y的左侧,因此这5次照片中超过3次出现x在y的左侧,那正确顺序x一定在y的左侧 
bool cmp(int x,int y){
    int cnt=0;//记录5次照片中x 出现在y左侧的次数 
    for(int i=1;i<=5;i++){
        if(pos[x][i]<pos[y][i]){
            cnt++;
        }
    }
    return cnt>=3;//大于三次,一次是正确的顺序 
} 

int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        a[i]=i;
    }
    for(int i=1;i<=5;i++){
        for(int j=1,x;j<=n;j++){
            cin>>x;
            pos[x][i]=j;//x 第i次的位置 
        }
    }
    
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
        cout<<a[i]<<" ";
    }
    return 0;
}

 

黑白翻转棋

http://iai.sh.cn/problem/506

#include<bits/stdc++.h>
using namespace std;

int n,m,a[22][22],b[22][22];
//数组copy 
void cop(){
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            b[i][j]=a[i][j];
        }
    }
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            scanf("%d",&a[i][j]);
        }
    }
    int maxx=1e9;
    for(int i=0;i<(1<<m);i++){
        cop();
        bool ok=false;
        int cnt=0;
        for(int j=1;j<=m;j++){
            if((i>>(j-1)) &1 ){
                b[1][j]^=1;
                b[1][j-1]^=1;
                b[1][j+1]^=1;
                b[2][j]^=1;
                cnt++;
            }
        }
        for(int ii=2;ii<=n;ii++){
            for(int jj=1;jj<=m;jj++){
                if(b[ii-1][jj]){
                    cnt++;
                    b[ii-1][jj]^=1;
                    b[ii][jj-1]^=1;
                    b[ii][jj]^=1;
                    b[ii][jj+1]^=1;
                    b[ii+1][jj]^=1; 
                }
            }
        }
        ok=true;
        for(int jj=1;jj<=m;jj++){
            if(b[n][jj]){
                ok=false;
            }
        }
        if(ok) maxx=min(maxx,cnt);
    }
    if(maxx==1e9){
        printf("Impossible\n");
    }else{
        printf("%d\n",maxx);
    }
}
posted @ 2021-10-30 17:02  new-code  阅读(70)  评论(0)    收藏  举报