• 日常训练


    A水题,判断第一个,后面的全是0

    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cassert>
    #include<iomanip>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define pi acos(-1.0)
    #define ll long long
    #define mod 1000000007
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    
    const double g=10.0,eps=1e-4;
    const int N=1000+10,maxn=500+100,inf=0x3f3f3f;
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        ll a,b,n;
        cin>>a>>b>>n;
        for(ll j=0;j<=9;j++)
            if((a*10+j)%b==0)
            {
                a=a*10+j;
                cout<<a<<string(n-1,'0')<<endl;
                return 0;
            }
        cout<<-1<<endl;
        return 0;
    }
    /*********************
    
    *********************/
    A

    B有点坑,wa了五发,找连续日期,注意2月28天

    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cassert>
    #include<iomanip>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define pi acos(-1.0)
    #define ll long long
    #define mod 1000000007
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    
    const double g=10.0,eps=1e-4;
    const int N=1000+10,maxn=500+100,inf=0x3f3f3f;
    
    int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    vector<pair<string,int> >m;
    void get(string s)
    {
        bool f=0;
        for(int i=0;i<m.size();i++)
        {
            if(m[i].first==s)
            {
                m[i].second++;
                f=1;
                break;
            }
        }
        if(!f)m.push_back(make_pair(s,1));
    }
    inline bool isnum(char s)
    {
        return '0'<=s&&s<='9';
    }
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        string s,p;
        cin>>s;
        for(int i=0;i<s.size()-9;i++)
        {
            if(isnum(s[i])&&isnum(s[i+1])&&s[i+2]=='-'&&isnum(s[i+3])&&
               isnum(s[i+4])&&s[i+5]=='-'&&s[i+6]=='2'&&s[i+7]=='0'&&s[i+8]=='1'&&'3'<=s[i+9]&&s[i+9]<='5')
            {
                int day=(s[i]-'0')*10+s[i+1]-'0';
                int p=(s[i+3]-'0')*10+s[i+4]-'0'-1;
                if(p>=0&&p<12)
                {
                    if(day>0&&day<=mon[p])
                    {
                        get(s.substr(i,10));
                    }
                }
            }
        }
        int ans=0;
        string anss;
        for(int i=0;i<m.size();i++)
        {
           // cout<<m[i].first<<" "<<m[i].second<<endl;
            if(m[i].second>ans)
            {
                ans=m[i].second;
                anss=m[i].first;
            }
        }
        cout<<anss<<endl;
        return 0;
    }
    /*********************
    
    *********************/
    B

    c模拟,找最小的那一个开始模拟,注意可能有多个最小值,但是算出来只有一个全为正数

    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cassert>
    #include<iomanip>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define pi acos(-1.0)
    #define ll long long
    #define mod 1000000007
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    
    const double g=10.0,eps=1e-4;
    const int N=100000+10,maxn=500+100,inf=0x3f3f3f;
    
    ll a[N],n,b[N];
    void getans(int x,ll dis)
    {
        for(int i=1;i<=n;i++)b[i]=a[i];
        ll te=b[x];
        b[x]+=(b[x]*n+dis);
        for(int i=1;i<=n;i++)
            b[i]-=te;
        while(dis--){
            x++;
            if(x>n)x=1;
            b[x]--;
        }
        for(int i=1;i<=n;i++)
            if(b[i]<0)
               return ;
        for(int i=1;i<=n;i++)
            cout<<b[i]<<" ";
        cout<<endl;
    }
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        ll k,minn=1e10;
        cin>>n>>k;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            minn=min(minn,a[i]);
        }
        vector<int>v;
        for(int i=1;i<=n;i++)
        {
            if(a[i]==minn)
            {
                if(minn==0)
                {
                    if(i+1<=n&&a[i+1]!=0)v.push_back(i);
                    else if(i==n&&a[1]!=0)v.push_back(i);
                }
                else v.push_back(i);
            }
        }
      //  cout<<v.size()<<endl;
        for(int i=0;i<v.size();i++)
        {
            ll dis=(k+n-v[i])%n;
            getans(v[i],dis);
        }
        return 0;
    }
    /*********************
    3 2
    0 3 3
    3 1
    2 0 4
    3 3
    2 3 1
    3 1
    1 0 0
    *********************/
    C

    D贪心,先排序,然后挨个匹配

    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cassert>
    #include<iomanip>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define pi acos(-1.0)
    #define ll long long
    #define mod 1000000007
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    
    const double g=10.0,eps=1e-4;
    const int N=100000+10,maxn=500+100,inf=0x3f3f3f;
    
    pair<int,int>v[2][N];
    int vv[2];
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            int c,s;
            cin>>c>>s;
            v[c][++vv[c]]=make_pair(s,i);
        }
        sort(v[0]+1,v[0]+1+vv[0]);
        sort(v[1]+1,v[1]+1+vv[1]);
        for(int i=1,j=1;i<=vv[0]&&j<=vv[1];)
        {
            int t=min(v[0][i].first,v[1][j].first);
            cout<<v[0][i].second<<" "<<v[1][j].second<<" "<<t<<endl;
            v[0][i].first-=t;
            v[1][j].first-=t;
            if(v[0][i].first)j++;
            else if(v[1][j].first)i++;
            else if(i<vv[0])i++;
            else j++;
        }
        return 0;
    }
    /*********************
    2
    0 0
    1 0
    5
    1 11
    0 9
    1 4
    0 4
    0 2
    *********************/
    D
  • 相关阅读:
    ThinkPHP 实现数据库事务回滚示例代码
    Java数据结构和算法
    Java数据结构和算法
    Java数据结构和算法
    git push每次提交都要输入用户名的解决方案
    Java数据结构与算法
    Java数据结构和算法
    Java数据结构和算法
    类和接口
    git如何忽略文件
  • 原文地址:https://www.cnblogs.com/acjiumeng/p/7210573.html
Copyright © 2020-2023  润新知