zoukankan      html  css  js  c++  java
  • 考试订错3---1

    方法---暴力

    #include<bits/stdc++.h>
    using namespace std;
    int n,L,R,ansl,ansr,ans;
    double s;
    bool rope[10009];
    int main()
    {
        //freopen("dormitory.in","r",stdin);
        //freopen("dormitory.out","w",stdout);
        cin>>n>>s;
        cin>>L>>R;
        for(register int i=1;i<n;i++)
        {
            int l,r;
            scanf("%d%d",&l,&r);
            if(l<L)l=L;//*省去我冗杂的判断
            if(r>R)r=R;
            for(register int j=l;j<=r;j++)
            {
                rope[j]=1;
            }
        }
        for(int i=L;i<=R;i++)
        {
            int ll=i;
            while(rope[i]==0&&i<=R)i++;
            int rr=i-1;
            if(rr-ll+1>ans)//直接得到区间,不必另算,i++的应用注意限制i<=r,不然会错40分
            {
                ans=rr-ll+1;
                ansl=ll;
                ansr=rr;
            }
        }
        if(ans==0)cout<<"0 0"<<endl;
        else cout<<ansl<<" "<<ansr<<endl;
        return 0;
    }

    我可怜巴巴的40分代码

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    #include<map>
    using namespace std;
    int l1,r1,l,r,n,cnt=0;
    int re=0,rr,rl;
    int a[10005];
    double s;
    const int MAXN=999999999;
    int main()
    {   
        freopen("dormitory.in","r",stdin);
        freopen("dormitory.out","w",stdout);
        int i,j,f=0;
        cin>>n>>s;
        cin>>l1>>r1;
        r1=min(int(s),r1);
        for(i=1;i<=n-1;i++)
        {
            cin>>l>>r;
            if(l>=l1&&r<=r1)
            {
                for(j=l;j<=r;j++) {a[j]=MAXN;}    
            }
            else if(l>=l1&&r>r1)
            {
                for(j=l;j<=r1;j++) {a[j]=MAXN;}        
            }
            else if(l<l1&&r<=r1)
            {
                for(j=l1;j<=r;j++) {a[j]=MAXN;}
            }//改掉此点可得六十分
            
        }
        for(i=l1;i<=r1;i++)
        {  
            if(a[i]!=MAXN) 
            {   
                cnt++;
                if(cnt==1) {l=i;}
                continue;    
            }
            if(cnt>re){
              r=i-1;    
              re=cnt;
              cnt=0;
              rr=r;
              rl=l;    
            } 
        }
        if(rl!=rr)  cout<<rl<<" "<<rr<<endl;
        else cout<<"0"<<" "<<"0"<<endl;
        return 0;
    }
  • 相关阅读:
    使用C#调用C++类库
    C# IntPtr类型
    C# 调用C++ dll string类型返回
    C# try、catch、finally语句
    C语言 char *、char []、const char *、string的区别与相互转换
    C# 字符串string与char数组互转!
    C#如何调用C++(进阶篇)
    Springboot通过过滤器实现对请求头的修改
    【spring事务】
    命令行参数库:McMaster.Extensions.CommandLineUtils【转】
  • 原文地址:https://www.cnblogs.com/voldemorte/p/7419000.html
Copyright © 2011-2022 走看看