2021“MINIEYE杯”中国大学生算法设计超级联赛(4)

Calculus


题目大意

判断函数是否收敛  

思路

只要判断系数是否存在0,但是判断单独的一个0比较麻烦,那么可以反过来思考,但凡系数中存在非零数,即视为是发散的,那么存在系数0的函数则被视为是收敛的

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    ll _;
    cin>>_;
    while(_--)
    {
        string str;
        cin>>str;
        for(ll i=0; i<str.size(); i++)
        {
            if(str[i]>='1'&&str[i]=='9') cout<<"NO"<<endl;
            else cout<<"YES"<<endl;
        }
    }
}

License Plate Recognition

大模拟

思路

从右到左遍历,数字和字母都是连续的,然而汉字字符仅部分是连续的,所以从左到右遍历的话,很难识别汉字已经结束了

代码

#include <bits/stdc++.h>
using namespace std;
#define ll long long
string str[33];
struct node
{
    ll l,r;
};
vector<node> v;
void solve()
{
    ll L,R;
    L=R=0;
    ll i=100;
    for(ll ff=7; ff>=2; ff--)
    {
        for(; i>=1; i--)
        {
            ll dotsum=0;
            for(ll j=1; j<=30; j++)
            {
                if(str[j][i]=='#'&&R==0) R=i;
                if(R&&str[j][i]=='.') dotsum++;
            }
            if(dotsum==30)
            {
                node NODE;
                NODE.l=i+1;
                NODE.r=R;
                R=0;
                dotsum=0;
                v.push_back(NODE);
                break;
            }
        }
    }
    ll flag=1;
    for(; i>=1; i--)
    {
        if(flag==1)
        {
            for(ll j=1; j<=30; j++)
            {
                if(str[j][i]=='#')
                {
                    R=i;
                    flag=0;
                    break;
                }
            }
        }
    }
    i=1;
    flag=1;
    for(; i<=100; i++)
    {
        if(flag==1)
        {
            for(ll j=1; j<=30; j++)
            {
                if(str[j][i]=='#')
                {
                    L=i;
                    flag=0;
                    break;
                }
            }
        }
    }
    node NODE;
    NODE.l=L;
    NODE.r=R;
    v.push_back(NODE);
}
int main()
{
    ll t;
    scanf(" %lld",&t);
    for(ll iii=1;iii<=t;iii++)
    {
        v.clear();
        for(ll i=1; i<=30; i++)
        {
            cin>>str[i];
            str[i]='+'+str[i];
        }
        solve();
        cout<<"Case #"<<iii<<":"<<endl;
        for(ll i=v.size()-1; i>=0; i--)
        {
            cout<<v[i].l<<' '<<v[i].r<<endl;
        }
    }
}

Lawn of the Dead

留坑待补

posted @ 2021-08-18 13:18  Drophair  阅读(46)  评论(0编辑  收藏  举报