zoukankan      html  css  js  c++  java
  • [Offer收割]编程练习赛104

    题目过于简单,没啥好说的,但是拿了个第一感觉很爽,记录一下

    题目1 : 小Hi与魔法 排序,从1开始递增

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=100005;
    int a[N];
    int main()
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++)cin>>a[i];
        sort(a,a+n);
        int ans=0,l=1;
        for(int i=0;i<n;i++)
        {
            if(a[i]==l)
            l++,ans++;
            else if(a[i]==l-1)ans++;
            else break;
        }
        cout<<ans<<"
    ";
    }

    题目2 : 选项编码 就是map一下

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int main()
    {
        string s;
        cin>>s;
        unordered_map<string,string>M;
        M["101"]="A";
        M["11"]="B";
        M["0"]="C";
        M["100"]="D";
        string t;
        for(auto X:s)
        {
            t+=X;
            if(M.count(t))
            cout<<M[t],t="";
        }
    }

    题目3 : 假期旅行 直接dp当前天是不是可以到达,然后分别转移(题目不太好读懂

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=1005;
    char s[N][N];
    int dp[N][N];
    int main()
    {
        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;i++)cin>>(s[i]+1);
        for(int i=0;i<m;i++)dp[0][i]=1;
        for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            if(dp[i-1][j-1]&&s[i][j]=='O')dp[i][j]=1;
            if(dp[i][j-1]&&s[i][j]=='O')dp[i][j]=1;
        }
        int ans=-1;
        for(int i=1;i<=m;i++)
        if(dp[n][i])
        {
            ans=i;
            break;
        }
        cout<<ans;
    }

    题目4 : 脉冲星观测 说的是其中有一个多记了,所以只要看前面对,还是后面对就可以了,(当然可以都不对,3的情况)

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=100005;
    int a[N];
    set<int>S;
    void la(int x)
    {
        //cout<<x<<"
    ";
        S.insert(1);
        S.insert(x);
        int y=sqrt(x+0.5);
        for(int i=2;i<=y;i++)
        if(x%i==0)S.insert(i),S.insert(x/i);
    }
    int main()
    {
        int n;
        cin>>n;
        for(int i=0;i<n;i++)cin>>a[i];
        //cout<<a[1]-a[0]<<" "<<a[n-1]-a[n-2]<<"
    ";
        if(a[1]-a[0]!=a[n-1]-a[n-2])
        {
            if(a[1]-a[0]!=a[2]-a[1])
            la(a[n-1]-a[n-2]);
            if(a[n-2]-a[n-3]!=a[n-1]-a[n-2])
            la(a[1]-a[0]);
        }
        else la(a[1]-a[0]);
        for(auto X:S)cout<<X<<"
    ";
    }
  • 相关阅读:
    Scrum Works 1.84安装
    使用Sandcastle Styles 来生成VS2008的帮助文档.
    NDoc 用户指南(转)
    第一章 C#语言基础(C# Language Elements)
    SQL Server 2005 中删除重复记录
    SDE 远程连接
    C# 按钮美化技巧
    SOP 中的 Service
    C# DateTime赋值为null
    C# WebBrowser显示html字符串
  • 原文地址:https://www.cnblogs.com/BobHuang/p/11223853.html
Copyright © 2011-2022 走看看