zoukankan      html  css  js  c++  java
  • Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)A,B,C

    A:链接:http://codeforces.com/contest/831/problem/A

    解题思路:

    从前往后分别统计递增,相等,递减序列的长度,如果最后长度和原序列长度相等那么就输出yes;

    实现代码:

    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int m,i,ans=1,a[109];
        cin>>m;
        for(i=0;i<m;i++){
            cin>>a[i];
        }
        for(i=0;i<m-1;i++){
            if(a[i]<a[i+1])
                ans++;
            else
                break;
        }
        //cout<<i<<endl;
        for(;i<m-1;i++){
            if(a[i]==a[i+1])
                ans++;
            else
                break;
        }
        //cout<<i<<endl;
        for(;i<m-1;i++){
            if(a[i]>a[i+1])
                ans++;
            else
                break;
        }
        //cout<<ans<<endl;
        if(ans==m)
        cout<<"YES"<<endl;
        else
        cout<<"NO"<<endl;
        return 0;
    }

    B:链接:http://codeforces.com/contest/831/problem/B

    解题思路:

    就是求第三个字符串中的字符在第一的序列的位置,输出第二个字符串当前位置的字符

    实现代码:

    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        string s1,s2,s3;
        char c;
        int i,j;
        cin>>s1;
    
        cin>>s2;
    
        cin>>s3;
        int len = s3.size();
        for(i=0;i<len;i++){
            if(s3[i]>='A'&&s3[i]<='Z'){
                c = tolower(s3[i]);
                for(j=0;j<s1.size();j++){
                    if((char)c==s1[j]){
                        cout<<(char)(s2[j]-32);
                        break;}
                }
            }
            else if(s3[i]>='a'&&s3[i]<='z'){
                for(j=0;j<s1.size();j++)
                    if(s3[i]==s1[j])
                    cout<<s2[j];
            }
            else
                cout<<s3[i];
        }
        cout<<endl;
        return 0;
    }

    C:链接:http://codeforces.com/contest/831/problem/C

    解题思路:

    a[]表示评委给的分,b[]表示某个状态的分数

    先前缀和处理一下a[i],由于初始分数可能由最小的b[]加上某一个a[i]表示,所以先设存在一个初值=b[1]-a[i],依次判断,如果这个初值能满足加上任意评委给的分,都能得到某状态的分数:x+a[i]=b[j] 可转化为: a[i] = b[j] - x;能满足的初值,存进集合里,最后输出数量即可

    #include<bits/stdc++.h>
    using namespace std;
    set<int>st;
    int main()
    {
        int m,n,a[2009],b[2009],i,j,temp,flag;
        cin>>m>>n;
        memset(a,0,sizeof(a));
        for(i=1;i<=m;i++){
            cin>>a[i];
            a[i] += a[i-1];
        }
        sort(a+1,a+m+1);
        for(i=1;i<=n;i++)
            cin>>b[i];
        sort(b+1,b+1+n);
        for(i=1;i<=m;i++){
            flag = 1;int x = b[1] - a[i];
            for(j=1;j <= n;j++){
                temp = b[j] - x;
                int ans = lower_bound(a+i,a+1+m,temp) - a;
                if(ans>m||a[ans]!=temp){
                    flag = 0;
                    break;
                }
            }
            if(flag)
                st.insert(a[i]);
        }
        cout<<(int)st.size()<<endl;
        return 0;
    }
  • 相关阅读:
    Did not find handler method for springMVC资源文件扫描不到---关于spring的那些坑
    mysql中OPTIMIZE TABLE的作用
    Linux环境下apache性能测试工具ab使用详解
    sqlite数据库 adb 从配置到查询表中数据全过程-----献给初学的自己
    c3p0参数解释
    linux下如何启动/停止/重启mysql:
    [MySQL] 变量(参数)的查看和设置
    mysql运行参数详解
    单例模式 理解,简单通透
    this的一些场景
  • 原文地址:https://www.cnblogs.com/kls123/p/7190431.html
Copyright © 2011-2022 走看看