zoukankan      html  css  js  c++  java
  • contest 1.17

    C.最大公约数II

    分解因子+欧拉函数

    #include <iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    typedef long long ll;
    using namespace std;
     
    ll ans1,asn2;
     
    ll get_phi(ll x){
        ll ret=x;
        for(ll i=2;i*i<=x;i++)
          if(x%i==0){
            ret/=i,ret*=(i-1);
            while(x%i==0)x/=i;
          }
        if(x>1)ret/=x,ret*=x-1;
        return ret;
    }
     
     
    int main()
    {
        ll n;scanf("%lld",&n);
        ll i;
        ll ans1,ans2;
        for(i=1;i*i<=n;i++){
            if(n%i==0){
                ans1=i;
                ans2=get_phi(n/i);
                printf("%lld %lld
    ",ans1,ans2);
            }
     
        }
        if(sqrt(n)*sqrt(n)==n) i-=2;
        else i-=1;
        for(i;i>=1;i--){
            if(n%i==0){
                ans1=n/i;
                ans2=get_phi(i);
                printf("%lld %lld
    ",ans1,ans2);
            }
        }
        return 0;
    }
    View Code

    A.

     dp_0[i]表示长度为i的s[i]与s[i-1]不同且s[i]与s[i+1]相同的无春花串的总数

     dp_1[i]表示长度为i的s[i]与s[i-1]不同且s[i]与s[i+1]不同的无春花串的总数

    #include <iostream>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    #define mod 1000000007
    typedef long long ll;
    using namespace std;
     
    ll dp_0[100005],dp_1[100005];
    ll dp[100005];
     
    int main()
    {
        ll t;scanf("%lld",&t);
        while(t--){
            ll n,s;scanf("%lld%lld",&n,&s);
            dp_0[0]=1,dp_1[0]=0;dp[0]=1;
            dp_0[1]=0,dp_1[1]=s-1;dp[1]=s-1;
            for(int i=2;i<=n-3;i++){
                dp_0[i]=(dp_0[i-2]+dp_1[i-2])%mod*(s-1)%mod;
                dp_1[i]=(dp_0[i-1]+dp_1[i-1])%mod*(s-1)%mod;
                dp[i]=(dp_0[i]+dp_1[i])%mod;
            }
            ll ans=0;
            for(ll i=0;i<=n-3;i++){
                ans=(ans+dp[i]*dp[n-3-i]%mod*s%mod)%mod;
            }
            printf("%lld
    ",ans);
        }
        return 0;
    }
    View Code

    F.Mixing Milk II

    暴力

    #include <iostream>
    #include<cstdio>
    using namespace std;
     
    int main()
    {
        int a,x;
        scanf("%d%d",&a,&x);
        int b,y;
        scanf("%d%d",&b,&y);
        int c,z;
        scanf("%d%d",&c,&z);
        for(int i=1;i<=100;i++){
            if(i%3==1){
                if(x+y>b) x-=(b-y),y=b;
                else y+=x,x=0;
            }
            else if(i%3==2){
                if(y+z>c) y-=(c-z),z=c;
                else z+=y,y=0;
            }
            else{
                if(z+x>a) z-=(a-x),x=a;
                else x+=z,z=0;
            }
            //printf("%d %d %d
    ",x,y,z);
        }
        printf("%d
    %d
    %d
    ",x,y,z);
        return 0;
    }
    View Code

    G.The Bucket List

    暴力

    #include <iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cmath>
    typedef long long ll;
    using namespace std;
     
    struct Node{
      int s,t,b;
    }node[105];
    int vis[1005];
     
    bool cmp(Node a,Node b){
      if(a.s!=b.s) return a.s<b.s;
      else return a.t<b.t;
    }
     
    int main()
    {
        int n;scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d%d%d",&node[i].s,&node[i].t,&node[i].b);
        }
        sort(node+1,node+1+n,cmp);
        int ans=0;
        for(int i=1;i<=n;i++){
            int s=node[i].s;
            int t=node[i].t;
            int b=node[i].b;
            int cnt=0,k=0;
            while(cnt<b){
                k++;
                if(vis[k]<=s) {
                    //printf("k=%d vis=%d s=%d
    ",k,vis[k],s);
                    cnt++,vis[k]=t;
                }
                else continue;
            }
            ans=max(ans,k);
        }
        printf("%d
    ",ans);
        return 0;
    }
    View Code

    A.五子棋

    暴力

    #include <iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
     
    int Map[20][20];
    int dire[8][2]={-1,-1,-1,0,-1,1,0,1,1,1,1,0,1,-1,0,-1};
     
    bool in(int x,int y){
      if(x>=1&&x<=15&&y>=1&&y<=15) return 1;
      return 0;
    }
     
    bool check(int x,int y,int now){
      int cnt[9];
      for(int i=0;i<8;i++){
        cnt[i]=0;
        int x_=x,y_=y;
        while(in(x_+dire[i][0],y_+dire[i][1])){
            x_=x_+dire[i][0];
            y_=y_+dire[i][1];
            //printf("%d %d %d %d %d %d
    ",x,y,x_,y_,Map[x_][y_],now);
            if(Map[x_][y_]!=now) break;
            else cnt[i]++;
        }
      }
      if(cnt[0]+cnt[4]+1>=5) return 1;
      if(cnt[1]+cnt[5]+1>=5) return 1;
      if(cnt[2]+cnt[6]+1>=5) return 1;
      if(cnt[3]+cnt[7]+1>=5) return 1;
      return 0;
    }
     
    int main()
    {
        for(int i=1;i<=15;i++){
            for(int j=1;j<=15;j++){
                Map[i][j]=-1;
            }
        }
        int n;scanf("%d",&n);
        int step=0,winner=1;
        for(int i=1;i<=n;i++){
            int x,y;scanf("%d%d",&x,&y);
            if(step) continue;
            Map[x][y]=i%2;
            if(check(x,y,i%2)) step=i,winner=i%2;
        }
        if(!step) puts("Tie");
        else{
            if(winner==1) printf("A ");
            else printf("B ");
            printf("%d
    ",step);
        }
        return 0;
    }
    View Code

    D.凉宫春日的忧郁

    取对数

    import java.math.*;
    import java.util.Scanner;
     
    public class Main {
     
        public static void main(String[] args) {
            Scanner cin=new Scanner(System.in);
            int t=cin.nextInt();
            for(int i=1;i<=t;i++){       
                int x=cin.nextInt();
                int y=cin.nextInt();
                if(y==0) {
                    System.out.println("Yes");
                    continue;
                }
                double tmp=0;
                for(int j=1;j<=y;j++){
                    tmp=tmp+(Math.log10(j*1.0)/Math.log10(Math.E));
                }
                tmp=tmp/y;
                tmp=Math.pow(Math.E, tmp);
                if(x<=tmp) System.out.println("Yes");
                else System.out.println("No");
            }
        }
     
    }
    View Code

    H.Back and Forth

    暴力

    #include <iostream>
    #include<cstdio>
    #include<cstring>
    #include<map>
    using namespace std;
     
    int a[20],b[20];
    int copa[20],copb[20];
    map<int,int> mp;
     
    int main()
    {
        for(int i=1;i<=10;i++){
            scanf("%d",&a[i]);
            copa[i]=a[i];
        }
        for(int i=1;i<=10;i++){
            scanf("%d",&b[i]);
            copb[i]=b[i];
        }
        int tot=0,ans=0;
        for(int i=1;i<=10;i++){
            tot-=a[i];b[11]=a[i];
            if(i<=9) swap(a[i],a[10]);
            for(int j=1;j<=11;j++){
                tot+=b[j];a[10]=b[j];
                if(j<=10) swap(b[j],b[11]);
                for(int p=1;p<=10;p++){
                    tot-=a[p];b[11]=a[p];
                    if(p<=9) swap(a[p],a[10]);
                    for(int q=1;q<=11;q++){
                        tot+=b[q];a[10]=b[q];
                        if(q<=10) swap(b[q],b[11]);
                        if(!mp[tot]) {
                                //printf("%d %d %d %d ",i,j,p,q);
                                //printf("tot=%d
    ",tot);
                                mp[tot]=1,ans++;
                        }
                        if(q<=10) swap(b[q],b[11]);
                        tot-=b[q];
                    }
                    if(p<=9) swap(a[p],a[10]);
                    tot+=a[p];
                }
                if(j<=10) swap(b[j],b[11]);
                tot-=b[j];
            }
            if(i<=9) swap(a[i],a[10]);
            tot+=a[i];
        }
        printf("%d
    ",ans);
        return 0;
    }
    View Code
    转载请注明出处:https://www.cnblogs.com/lllxq/
  • 相关阅读:
    POJ 2175 Evacuation Plan 费用流 负圈定理
    POJ 2983 Is the Information Reliable? 差分约束
    codeforces 420B Online Meeting
    POJ 3181 Dollar Dayz DP
    POJ Ant Counting DP
    POJ 1742 Coins DP 01背包
    中国儒学史
    产品思维30讲
    Java多线程编程核心技术
    编写高质量代码:改善Java程序的151个建议
  • 原文地址:https://www.cnblogs.com/lllxq/p/10280877.html
Copyright © 2011-2022 走看看