1. 程式人生 > >【Codeforces】Codeforces Round #492 (Div. 2) [Thanks, uDebug!] (Contest 996)

【Codeforces】Codeforces Round #492 (Div. 2) [Thanks, uDebug!] (Contest 996)

spl === bsp -- href 分享 printf cli 位置

題目

傳送門:QWQ

A:A - Hit the Lottery

分析:

大水題 模擬

代碼:

技術分享圖片
#include <bits/stdc++.h>
using namespace std;
int main(){
    int n;
    int x=0;scanf("%d",&n);
    while(n>=100){
        x++; n-=100;
    }
    while(n>=20){
        x++; n-=20;
    }
    while(n>=10){
        x
++; n-=10; } while(n>=5){ x++; n-=5; } printf("%d\n",x+n); }
View Code


B:B - World Cup

分析:

把之前無用的循環全部減掉,最後暴力模擬一下就ok

代碼:

技術分享圖片
#include <bits/stdc++.h>
using namespace std;
const int maxn=2000005;
int a[maxn];
int main(){
    
int n,minv=1e9+5;scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); minv=min(minv,a[i]); } // printf("========= %d\n",minv); int k=0; for(;k<minv;k+=n); k=max(0,k-n); for(int i=1;i<=n;i++) a[i]-=k; // printf("====== %d\n",k); int kkk=0
; for(;;) for(int i=1;i<=n;i++){ // printf("------- %d: %d\n",i,a[i]); if(a[i]-kkk<=0){ printf("%d\n",i); return 0; } kkk++; } }
View Code


C:Tesla

分析:

代碼:


D:D - Suit and Tie

分析:

貪心+暴力。

掃一遍,把另外一個位置的數暴力swap過來

代碼:

技術分享圖片
#include <bits/stdc++.h>
using namespace std;
const int maxn=300;
int a[maxn], ok[maxn];
int main(){
    int n;scanf("%d",&n); n*=2;
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    int ans=0;
    for(int i=1;i<=n;i++){
        if(ok[a[i]]) continue;
         int j; ok[a[i]]=1;
        for(j=i+1;j<=n;j++){
            if(a[j]==a[i]) break;
        }
    //    printf("---------   %d\n",j);
        for(int k=j;k>=i+1;k--){
            swap(a[k],a[k-1]);
        }
        ans+=j-i-1;
    }
//    for(int i=1;i<=n;i++) printf("%d ",a[i]);
    printf("%d",ans);
    return 0;
}
View Code


E:E - Leaving the Bar

分析:

https://blog.csdn.net/deerly_/article/details/80857901

代碼:

技術分享圖片
#include <bits/stdc++.h>
using namespace std;
const int maxn=100005;
typedef long long ll;
int ans[maxn];
ll sqr(ll x){return x*x; }
struct Node{
    ll x,y,id;
}s[maxn];
int main(){
    int n; scanf("%d",&n ); ll P=1500000; P=P*P;
    ll sumx=0,sumy=0;
    for(int i=1;i<=n;i++){
        scanf("%I64d%I64d",&s[i].x,&s[i].y); s[i].id=i;
    }
    for(;;){
        random_shuffle(s+1,s+1+n); ll X=0,Y=0;
        memset(ans,0,sizeof(ans));
        for(int i=1;i<=n;i++){
            ll valx=s[i].x,valy=s[i].y;
            if(sqr(X-valx)+sqr(Y-valy) > sqr(X+valx) + sqr(Y+valy)){
                X+=valx; Y+=valy;
                ans[s[i].id]=-1;
            }
            else{
                X-=valx; Y-=valy;
                ans[s[i].id]=1;
            }
        }
        if(sqr(X)+sqr(Y)<=P){
            for(int i=1;i<=n;i++) printf("%d ",ans[i]);
            return 0;
        }
    }
}
View Code

【Codeforces】Codeforces Round #492 (Div. 2) [Thanks, uDebug!] (Contest 996)