zoukankan      html  css  js  c++  java
  • 2018-ICPC-焦作区预赛

    开个新坑,希望这套题,能在时间无限的情况下题数达到金牌,缓慢更新中。

    A:水中之水

    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstdlib>
    #include <vector>
    #include <iostream>
    #define lson rt<<1
    #define rson rt<<1|1
    using namespace std;
    typedef long long ll;
    typedef pair<int, int> P;
    const int maxn=1e4+10;
    char s[5][1000]={"Typically Otaku","Eye-opener","Young Traveller","Excellent Traveller","Contemporary Xu Xiake"};;
    
    int main()
    {
        
        int T;
        cin>>T;
        while(T--)
        {
            int t=0;
            for(int i=0;i<4;i++)
            {
                int b;cin>>b;
                if(b!=0)
                    t++;
            }
            cout<<s[t]<<endl;
        }
        
    }
     

     I:左右横跳即可

    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstdlib>
    #include <vector>
    #include <iostream>
    #define lson rt<<1
    #define rson rt<<1|1
    using namespace std;
    typedef long long ll;
    typedef pair<int, int> P;
    const int maxn=1e5+10;
    ll a[maxn],pre[maxn];
    int main()
    {
        
        int T;
        cin>>T;
        while(T--)
        {
            int n=0;
            cin>>n;
            for(int i=1;i<n;i++){
                cin>>a[i];
                a[i]+=a[i-1];
                pre[i]=pre[i-1]+a[i];
            }
            ll ans=0;
            cout<<0<<" ";
            int l=0,r=n;
            for(int i=1;i<n;i++)
            {
                if(i%2==0)
                {
                    l++;
                    ans+=pre[n-1]-pre[r-1]-pre[l-1];
                }
                else
                {
                    r--;
                    ans+=a[r];
                    ans+=pre[n-1]-pre[r]-pre[l];
                }
                cout<<ans;
                if(i==n-1)
                    cout<<endl;
                else
                    cout<<" ";
            }
        }
        
    }
     

     D:用手机模拟一下跑车即可做出来啦!

    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstdlib>
    #include <vector>
    #include <iostream>
    #define lson rt<<1
    #define rson rt<<1|1
    using namespace std;
    typedef long long ll;
    typedef pair<int, int> P;
    const int maxn=1e5+10;
    int main()
    {
        
        int T;
        cin>>T;
        while(T--)
        {
            double a,b,r,d,pai=acos(-1);
            cin>>a>>b>>r>>d;
            d=pai/180*d;
            double jiao=atan(b/(a+r));
            double R=sqrt(b*b+(r+a)*(r+a));
            if(d>jiao)
            {
                printf("%.12lf
    ",R-r);
            }
            else
            {
                jiao=jiao-d;
                double ans=(R*cos(jiao)-r);
                printf("%.12lf
    ",ans);
            }
        }
        
    }
     

     E: 猜一手结论

    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstdlib>
    #include <vector>
    #include <iostream>
    #define lson rt<<1
    #define rson rt<<1|1
    using namespace std;
    typedef long long ll;
    typedef pair<int, int> P;
    const int maxn=2e2+10;
    struct dashu
    {
        int s[maxn*5];
        int flag,len;
        void ini()
        {
            memset(s, 0, sizeof s);
            flag=len=1;
        }
        void pri()
        {
            for(int i=0;i<len;i++)
            {
                printf("%c",s[len-i-1]+'0');
            }
        }
        void jinwei()
        {
            for(int i=0;i<len;i++)
            {
                if(s[i]>9)
                {
                    s[i+1]+=s[i]/10;
                    s[i]=s[i]%10;
                    len=max(i+2,len);
                }
            }
        }
    };
    bool cmp(dashu d1,dashu d2)
    {
        if(d1.flag==1&&d2.flag==1)
        {
            if(d1.len>d2.len)
                return 0;
            else if(d1.len<d2.len)
                return 1;
            else
            {
                int len=d1.len;
                for(int i=0;i<len;i++)
                    if(d1.s[len-1-i]<d2.s[len-1-i])
                        return 1;
                    else if(d1.s[len-1-i]>d2.s[len-1-i])
                        return 0;
                return 1;
            }
        }
        else if(d1.flag==-1&&d2.flag==-1)
        {
            if(d1.len>d2.len)
                return 1;
            else if(d1.len<d2.len)
                return 0;
            else
            {
                int len=d1.len;
                for(int i=0;i<len;i++)
                    if(d1.s[len-1-i]<d2.s[len-1-i])
                        return 0;
                    else if(d1.s[len-1-i]>d2.s[len-1-i])
                        return 1;
                return 1;
            }
        }else if(d1.flag==1&&d2.flag==-1)
        {
            return 0;
        }else if(d1.flag==-1&&d2.flag==1)
        {
            return 1;
        }
        return 1;
    }
    dashu add(dashu d1,dashu d2)
    {
        dashu ans;
        ans.ini();
        if((d1.flag==1&&d2.flag==1)||(d1.flag==-1&&d2.flag==-1))
        {
            int len=max(d1.len,d2.len);
            for(int i=0;i<len;i++)
                ans.s[i]=d1.s[i]+d2.s[i];
            ans.len=len;
            ans.flag=d1.flag;
            ans.jinwei();
        }
        return ans;
    }
    dashu mul(dashu d1,dashu d2)
    {
        dashu ans,t;
        ans.ini();
        t.ini();
        ans.flag=d1.flag*d2.flag;
        for(int i=0;i<d1.len;i++)
        {
            int chengzi=d1.s[i];
            t.ini();
            t.len=i+d2.len;
            for(int j=0;j<d2.len;j++)
            {
                t.s[i+j]=chengzi*d2.s[j];
            }
            t.jinwei();
            ans=add(ans, t);
        }
        if(ans.s[ans.len-1]==0)
            d1.pri();
        return ans;
    }
    dashu zhuanhuan(int n)
    {
        dashu t2;
        t2.ini();
        for(int j=0;n!=0;j++)
        {
            t2.s[j]=n%10;
            n/=10;
            t2.len=j+1;
        }
         if(t2.s[t2.len-1]==0)
             cout<<n<<endl;
        return t2;
    }
    char n[maxn];
    vector<int> prime;
    int tong[maxn];
    int main()
    {
        for(int i=2;;i++)
        {
            int flag=0;
            for(int j=2;j<=sqrt(i);j++)
            {
                if(i%j==0)
                {
                    flag=1;
                    break;
                }
            }
            if(!flag)
                prime.push_back(i);
            if(prime.size()>100)
                break;
        }
        int T;
        cin>>T;
        
        while(T--)
        {
            memset(tong, 0, sizeof tong);
            cin>>n;
            dashu N;
            N.ini();
            int len=strlen(n);
            for(int i=0;i<len;i++)
            {
                N.s[len-1-i]=n[i]-'0';
            }
            N.len=len;
            
            dashu t;
            t.ini();
            t.s[0]=1;
            t.len=1;
            for(int i=0;;i++)
            {
                int p=prime[i];
                dashu t2=zhuanhuan(p);
                t=mul(t2, t);
                if(cmp(t, N))
                {
                    tong[i]--;
                    p=prime[i]+1;
                    for(int j=0;prime[j]<=p;j++)
                    {
                        while(p%prime[j]==0)
                        {
                            p/=prime[j];
                            tong[j]++;
                        }
                    }
                }
                else
                    break;
            }
            dashu ans1,ans2;
            ans1.ini();
            ans2.ini();
            ans1.s[0]=1;
            ans2.s[0]=1;
            for(int i=0;i<maxn;i++)
            {
                if(tong[i]==-1)
                {
                    ans1=mul(ans1, zhuanhuan(prime[i]));
    //                ans1.pri();
    //                cout<<endl;
                }
                else
                {
                    while (tong[i]!=0) {
                        ans2=mul(ans2, zhuanhuan(prime[i]));
                        tong[i]--;
    //                    ans2.pri();
    //                    cout<<endl;
                    }
                }
            }
            ans1.pri();
            cout<<"/";
            ans2.pri();
            cout<<endl;
        }
    }
     

     F:就考虑怎么处理数据就行了,然后最短路,但是getline的速度太慢了,被卡了很久

    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstdlib>
    #include <vector>
    #include <iostream>
    #include <queue>
    #define lson rt<<1
    #define rson rt<<1|1
    using namespace std;
    typedef long long ll;
    typedef pair<int, int> P;
    const int maxn=1e3+10;
    char s[maxn*6][maxn*6];
    vector<P> G[maxn][maxn];
    int used[maxn][maxn];
    
    P S,T;
    int count1=0;
    void L(int x,int y)
    {
        int xx=2+4*(x-1);
        if(y%2==0)
        {
            xx+=2;
        }
        int yy=4+6*(y-1);
        if(s[xx][yy]=='S')
            S=make_pair(x, y);
        if(s[xx][yy]=='T')
            T=make_pair(x, y);
        if(s[xx-2][yy]==' ')
            G[x][y].push_back(make_pair(x-1, y));
        if(s[xx+2][yy]==' ')
            G[x][y].push_back(make_pair(x+1, y));
        
        if(y%2==0)
        {
            if(s[xx-1][yy-3]==' ')
                G[x][y].push_back(make_pair(x, y-1));
            if(s[xx-1][yy+3]==' ')
                G[x][y].push_back(make_pair(x, y+1));
            if(s[xx+1][yy-3]==' ')
                G[x][y].push_back(make_pair(x+1, y-1));
            if(s[xx+1][yy+3]==' ')
                G[x][y].push_back(make_pair(x+1, y+1));
        }
        else
        {
            if(s[xx-1][yy-3]==' ')
                G[x][y].push_back(make_pair(x-1, y-1));
            if(s[xx-1][yy+3]==' ')
                G[x][y].push_back(make_pair(x-1, y+1));
            if(s[xx+1][yy-3]==' ')
                G[x][y].push_back(make_pair(x, y-1));
            if(s[xx+1][yy+3]==' ')
                G[x][y].push_back(make_pair(x, y+1));
        }
    }
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int n,m;
            scanf("%d%d",&n,&m);
            count1+=n*m;
            if(count1>2e6)
            return 0;
            getchar();
            char c;
            int i=0;
            while((c=getchar())!='
    ')
            {
                s[0][i]=c;
                i++;
            }
            for(int i=0;i<n;i++)
            {
                for(int j=i*4+1;j<i*4+4+1;j++)
                {
                    int k=0;
                    while((c=getchar())!='
    ')
                    {
                        s[j][k]=c;
                        k++;
                    }
                }
            }
            int k=0;
            while((c=getchar())!='
    ')
            {
                s[4*n+1][k]=c;
                k++;
            }
            k=0;
            while((c=getchar())!='
    ')
            {
                s[4*n+2][k]=c;
                k++;
            }
            
            for(int i=1;i<=n;i++)
                for(int j=1;j<=m;j++){
                    used[i][j]=0;
                    G[i][j].clear();
                    L(i,j);
                }
            
            used[S.first][S.second]=1;
            queue<P> q;
            q.push(S);
            int flag=0;
            while(!q.empty())
            {
                P t=q.front();
                q.pop();
                int x=t.first,y=t.second;
                for(int i=0;i<G[x][y].size();i++)
                {
                    int nx=G[x][y][i].first,ny=G[x][y][i].second;
                    if(used[nx][ny]==0)
                    {
                        used[nx][ny]=used[x][y]+1;
                        if(nx==::T.first&&ny==::T.second)
                        {
                            flag=1;
                            break;
                        }
                        q.push(make_pair(nx, ny));
                    }
                }
                if(flag)
                    break;
            }
            
            if(used[::T.first][::T.second]==0)
            {
                printf("-1
    ");
            }
            else
            {
                printf("%d
    ",used[::T.first][::T.second]);
            }
        }
    }
    

     B:分类讨论中的好题

    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstdlib>
    #include <vector>
    #include <iostream>
    #include <queue>
    #define lson rt<<1
    #define rson rt<<1|1
    using namespace std;
    typedef long long ll;
    typedef pair<ll,ll> P;
    const int maxn=4e5+10;
    P J(ll hp,ll f)
    {
        ll l=0,r=1e5;
        while (l<r-1) {
            ll mid=(r+l)/2;
            if(mid*(mid+f-1+f)/2<hp)
                l=mid;
            else
                r=mid;
        }
        return make_pair(r, r*(r+1)/2-hp);
    }
    int main()
    {
        int T;
        cin>>T;
        while (T--) {
            ll hpa,hpb,atka,atkb;
            cin>>hpa>>hpb>>atka>>atkb;
            ll shanghai1=0,shanghai2=0;
            P t1=J(hpa,1),t2=J(hpb,1);
            P t2b=J(hpb-t1.second,t1.first+1),t2a=J(hpa-t2.second,t2.first+1);
            shanghai1=t1.first*(atkb+atka)+t2b.first*atkb;
            shanghai2=t2.first*(atka+atkb)+t2a.first*atka;
            vector<char> ans1,ans2;
            if(shanghai1<=shanghai2)
            {
                ll b_top=hpb-t2b.first*(t2b.first+t1.first+1+t1.first)/2,a_top=t1.second;
                
                for(int t=1;t<=t1.first;)
                {
                    if(t==a_top&&b_top>0){
                        ans1.push_back('B');
                        t++;
                    }
     
                    ans1.push_back('A');
                    t++;
                }
                for(int i=0;i<t2b.first;i++)
                    ans1.push_back('B');
                
            }
            
            if(shanghai1>=shanghai2)
            {
                ll b_top=t2.second,a_top=hpa-t2a.first*(t2a.first+t2.first+1+t2.first)/2;
                for(int t=1;t<=t2.first;)
                {
                    while((b_top-t>t)||(a_top-t<=0&&t<=b_top))
                    {
                        ans2.push_back('A');
                        b_top-=t;
                        a_top-=t;
                        t++;
                    }
                    ans2.push_back('B');
                    t++;
                }
                
                for(int i=0;i<t2a.first;i++)
                    ans2.push_back('A');
                
            }
            if(ans1.size()!=0&&ans2.size()!=0)
            {
                for(int i=0;i<ans1.size();i++)
                {
                    if(ans1[i]<ans2[i])
                    {
                        cout<<shanghai1<<" ";
                        for(int i=0;i<ans1.size();i++)
                            cout<<ans1[i];
                        cout<<endl;
                        break;
                    }
                    else if(ans1[i]>ans2[i])
                    {
                        cout<<shanghai2<<" ";
                        for(int i=0;i<ans2.size();i++)
                            cout<<ans2[i];
                        cout<<endl;
                        break;
                    }
                }
            }else if(ans1.size()!=0)
            {
                cout<<shanghai1<<" ";
                for(int i=0;i<ans1.size();i++)
                    cout<<ans1[i];
                cout<<endl;
            }
            else if(ans2.size()!=0)
            {
                cout<<shanghai2<<" ";
                for(int i=0;i<ans2.size();i++)
                    cout<<ans2[i];
                cout<<endl;
            }
        }
    }
     
  • 相关阅读:
    《Android源码设计模式》--装饰模式
    弹出对话框输入框
    顶部搜索框背景色渐变
    《Android源码设计模式》--模板方法模式
    《Android源码设计模式》--状态模式--责任链模式--解释器模式--命令模式--观察者模式--备忘录模式--迭代器模式
    《Android源码设计模式》--策略模式
    《Android源码设计模式》--抽象工厂模式
    《Android源码设计模式》--工厂方法模式
    《Android源码设计模式》--原型模式
    《Android源码设计模式》--Builder模式
  • 原文地址:https://www.cnblogs.com/King-of-Dark/p/12410983.html
Copyright © 2011-2022 走看看