CF 750

Posted HelloWorld!--By-MJY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF 750相关的知识,希望对你有一定的参考价值。

今天CF打的块残废了     就是一废物

A 在24点之前到 直接模拟即可

#include<stdio.h>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>

using namespace std;

#define LL long long
#define MAXN 1010
#define inf  1000000000.0

int main()
{
    int n,k;
    scanf("%d%d",&n,&k);
    int ans=0;
    int i;
    for(i=1;i<=n;i++)
    {
        if(ans+5*i+k>240)
        {

            break;
        }
        else
            ans = ans +5*i;
    }
     printf("%d\\n",i-1);
    return 0;
}

  B

  显然东西是没用的  但是在南北极就出问题了

  从北极点开始 最后要回到北极点

  在北极点 只能往南边 南极同理  不然就有问题

  然后 40000 不能随便%掉  因为可能走到一边点 然后还是这个方向  就翻车了

  就分类讨论   唉    翻车翻车

  

#include<stdio.h>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>

using namespace std;

#define LL long long
#define MAXN 1010
#define inf  1000000000.0

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int ans=0;
        int ok=0;

        for(int i=1;i<=n;i++)
        {
            int a;
            char s[65];
            scanf("%d %s",&a,s);
            if(s[0]==\'N\')
            {
                if(20000-ans+a>20000)
                    ok=1;
            }
            if(s[0]==\'S\')
            {
                if(ans+a>20000)
                    ok=1;
            }
            a=a%40000;
            if(ans ==0&&s[0]!=\'S\'||ans==20000&&s[0]!=\'N\')
                ok=1;
            if(s[0]==\'N\')
            {
                if(ans ==0)
                {
                    if(a<=20000)
                    {
                        ans = ans +a;
                    }
                    else
                    {
                        ans = 20000 - (a-20000);
                    }

                }
                else if(ans<20000)
                {
                    if(ans >=a)
                    {
                        ans =ans -a;
                    }
                    else
                    {
                        a-=ans;
                        ans =0;
                        if(a<=20000)
                            ans =ans +a,a=0;
                        else
                            ans =20000,a=a-20000;
                        if(a>0)
                            ans =20000-a;
                    }
                }
                else if(ans ==20000)
                {
                    if(a<=20000)
                        ans =ans-a;
                    else
                    {
                        ans=0;
                        a=a-20000;
                        if(a>0)
                            ans = a;
                    }
                }
            }
            else if(s[0]==\'S\')
            {
                if(ans ==0)
                {
                    if(a<=20000)
                        ans =a;
                    else
                    {
                        ans =20000 -(a-20000);
                    }
                }
                else if(ans <20000)
                {
                    if(a<=20000-ans)
                        ans = ans +a;
                    else
                    {
                        a=a-(20000-ans);
                        ans =20000;
                        if(a<=20000)
                            ans = 20000-a;
                        else
                        {
                            ans =0;
                            a=a-20000;
                            if(a>0)
                                ans = a;
                        }
                    }
                }
                else if(ans==20000)
                {
                    if(a<=20000)
                        ans =20000-a;
                    else
                    {
                        ans =0;
                        a=a-20000;
                        if(a>0)
                            ans =ans +a;
                    }
                }
            }
            ans = ans %40000;
            if(ans >20000)
                ans =ans -20000;
        }
        if(ans==0&&ok!=1)
            printf("YES\\n");
        else
            printf("NO\\n");
    }
    return 0;
}
View Code

  C

  >=1900  去DIV1

  否则去           2

  从头开始维护 一个左右边界

  写一个不等式  就是维护的 然后判断结果

  

#include<stdio.h>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>

using namespace std;

#define LL long long
#define MAXN 210010
#define inf  1000000000

int a[MAXN],b[MAXN];

int main()
{
    int l,r,n;

    while(scanf("%d",&n)!=EOF)
    {
        for(int i=1;i<=n;i++)
        {
            scanf("%d%d",&a[i],&b[i]);
        }
        l=-inf;
        r=inf;
        int c=0;
        for(int i=1;i<=n;i++)
        {
            if(b[i]==1)
            {
                l=max(l,1900-c);
            }
            else
            {
                r=min(r,1900-c);
            }
            c=c+a[i];
        }
        r--;
        if(r==inf-1)
            printf("Infinity\\n");
        else if(l>r)
            printf("Impossible\\n");
        else
        {
            for(int i=1;i<=n;i++)
                r=r+a[i];
            printf("%d\\n",r);
        }
    }
    return 0;
}
View Code

 

  

以上是关于CF 750的主要内容,如果未能解决你的问题,请参考以下文章

CF750ENew Year and Old Subsequence

[CF750G]New Year and Binary Tree Paths

CF750F New Year and Finding Roots 构造+树论

CF750G New Year and Binary Tree Paths(DP)

gtx750能玩啥游戏

如何从后台弹出片段