zoukankan      html  css  js  c++  java
  • 女生赛训练 2

    A - Automatic Judge

    #include <bits/stdc++.h>
    using namespace std;
    int vis[1200],timing[1200];
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int n,m;
            scanf("%d%d",&n,&m);
            memset(vis,0,sizeof(vis));
            memset(timing,0,sizeof(timing));
            int sum=0,all=0;
            for(int i=1;i<=m;i++)
            {
                int x;
                int h,m;
                string ans;
                scanf("%d",&x);
                scanf("%d:%d",&h,&m);
                int Time=h*60+m;
                cin>>ans;
                if(ans=="AC")
                {
                    if(vis[x]) continue;
                    else
                    {
                        sum++;
                        vis[x]=1;
                        all+=timing[x]+Time;
                    }
                }
                else if(ans=="CE")
                {
                    continue;
                }
                else
                {
                    if(vis[x]) continue;
                    else
                    {
                        timing[x]+=20;
                    }
                }
            }
            printf("%d %d
    ",sum,all);
        }
    
    
    
        return 0;
    }
    View Code

    B - Building Shops

    #include <bits/stdc++.h>
    #define ll long long
    #define db double
    using namespace std;
    
    const int mn = 3010;
    const ll mod = 1e9 + 7;
    const ll inf = 1e18;
    const db eps = 1e-3;
    
    ll dp[mn][5];
    ll sum[mn];
    
    struct node
    {
        ll x, c;
    } p[mn];
    bool cmp(const node &a, const node &b)
    {
        return a.x < b.x;
    }
    
    int main()
    {
        int n;
        while (~scanf("%d", &n))
        {
            for (int i = 1; i <= n; i++)
                scanf("%lld %lld", &p[i].x, &p[i].c);
                
            sort(p + 1, p + n + 1, cmp);
            
            sum[0] = 0;
            for (int i = 1; i <= n; i++)
                sum[i] = sum[i - 1] + p[i].x;
            
            for (int i = 1; i <= n; i++)
                dp[i][0] = dp[i][1] = inf;
            
            dp[1][1] = p[1].c;
            for (int i = 2; i <= n; i++)
            {
                dp[i][1] = min(dp[i - 1][0], dp[i - 1][1]) + p[i].c;
                for (int j = 1; j < i; j++)
                {
                    ll temp = sum[i] - sum[j] - (i - j) * p[j].x;
                    dp[i][0] = min(dp[i][0], dp[j][1] + temp);
                }
                //cout << i << ' ' << dp[i][0] << ' ' << dp[i][1] << endl;
            }
            
            printf("%lld
    ", min(dp[n][0], dp[n][1]));
        }
        
        
        return 0;
    }
    View Code

    C - Coprime Sequence

    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int maxn=1e5+10;
    ll pre[maxn],sub[maxn];
    ll a[maxn];
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int n;
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
            {
                scanf("%lld",&a[i]);
            }
    
            pre[1]=a[1];
            for(int i=2;i<=n;i++)
            {
                pre[i]=__gcd(pre[i-1],a[i]);
            }
            sub[n]=a[n];
            for(int i=n-1;i>=1;i--)
            {
                sub[i]=__gcd(sub[i+1],a[i]);
            }
            ll ans=1;
            for(int i=2;i<=n-1;i++)
            {
                ans=max(ans,__gcd(pre[i-1],sub[i+1]));
            }
            ans=max(ans,sub[2]);
            ans=max(ans,pre[n-1]);
            printf("%lld
    ",ans);
        }
    
    
    
    }
    View Code

    E - Easy Summation

    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    
    const int mn = 1e5 + 10;
    const ll mod = 1e9 + 7;
    
    int main()
    {
        int T;    scanf("%d", &T);
        while (T--)
        {
            ll n;int k;
            scanf("%lld %d", &n, &k);
            
            ll sum = 0;
            for (ll i = 1; i <= n; i++)
            {
                ll temp = 1;
                for (int j = 1; j <= k; j++)
                    temp = temp * i % mod;
                sum = (sum + temp) % mod;
            }
            printf("%lld
    ", sum);
        }
        
        return 0;
    }
    View Code

    G - Graph Theory

    #include <bits/stdc++.h>
    using namespace std;
    
    const int mn = 1e5 + 10;
    
    int a[mn];
    int main()
    {
        int T;
        scanf("%d", &T);
        while (T--)
        {
            int n;    scanf("%d", &n);
            
            a[1] = 2;
            for (int i = 2; i <= n; i++)
                scanf("%d", &a[i]);
            
            if (a[n] == 2 || n % 2 == 1)
            {
                printf("No
    ");
                continue;
            }
            
            int temp = 0, flag = 1;
            for (int i = n; i >= 1; i--)
            {
                if (a[i] == 1)    temp++;
                else if (a[i] == 2)    temp--;
                if (temp < 0)
                {
                    flag = 0;
                    break;
                }
            }
            if (!flag)    printf("No
    ");
            else    printf("Yes
    ");
        }
        return 0;
    }
    View Code

    H - Happy Necklace

    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    
    const ll mod = 1e9 + 7;
    ll N;
    
    struct Matrix{
        ll m[3][3];
    } in;
    
    Matrix mul(Matrix x, Matrix y)
    {
        Matrix z;
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                z.m[i][j] = 0;
                for (int k = 0; k < 3; k++)
                {
                    ll temp = (x.m[i][k] % mod) * (y.m[k][j] % mod) % mod;
                    z.m[i][j] = (z.m[i][j] + temp) % mod;
                }
            }
        }
        return z;
    }
    
    Matrix qpow(ll n)
    {
        Matrix ans;
        ans.m[0][0] = 1, ans.m[0][1] = 0, ans.m[0][2] = 0;
        ans.m[1][0] = 0, ans.m[1][1] = 1, ans.m[1][2] = 0;
        ans.m[2][0] = 0, ans.m[2][1] = 0, ans.m[2][2] = 1;
        
        Matrix t;
        t.m[0][0] = 1, t.m[0][1] = 1, t.m[0][2] = 0;
        t.m[1][0] = 0, t.m[1][1] = 0, t.m[1][2] = 1;
        t.m[2][0] = 1, t.m[2][1] = 0, t.m[2][2] = 0;
        
        while (n)
        {
            if (n & 1)
                ans = mul(ans, t);
            t = mul(t, t);
            n >>= 1;
        }
        return ans;
    }
    
    int main()
    {
        int T;
        scanf("%d",&T);
        in.m[0][0] = 4, in.m[0][1] = 3, in.m[0][2] = 2;
        
        while(T--)
        {
            ll n;    scanf("%lld", &n);
            
            Matrix temp = qpow(n - 1);
            
    //        for (int i = 0; i < 3; i++)
    //        {
    //            for (int j = 0; j < 3; j++)
    //                printf("%d ", temp.m[i][j]);
    //            printf("
    ");
    //        }
            
            Matrix res = mul(in, temp);
            
            printf("%lld
    ", res.m[0][2]);
        }
    
        return 0;
    }
    View Code

     

  • 相关阅读:
    Team Foundation Sidekicks 2010
    Asp.net页面传值的方式汇总
    轻量级IOC框架Ninject使用
    AutoMapper使用简单总结
    页面请求的方式(Get与Post)
    总结2012 规划2013
    在reset css后两个input之间还是出现默认间隔的问题。
    js学习笔记事件委托
    程序猿工具——svn
    JS 事件添加onclick写法注意。
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/10993145.html
Copyright © 2011-2022 走看看