求助 日斤日斤的不等式,本地没问题,交全TLE。
  • 板块学术版
  • 楼主anewbg
  • 当前回复7
  • 已保存回复7
  • 发布时间2021/10/18 14:02
  • 上次更新2023/11/4 03:24:29
查看原帖
求助 日斤日斤的不等式,本地没问题,交全TLE。
418681
anewbg楼主2021/10/18 14:02

咳,没有赶上上午考试,回头光看第一题,结果...

自debug半天,一直找不出问题(本地试的点都没问题,不过可能是我手搓的点水吧)。应该不是循环出不去的问题。

代码如下(思路代码里):

//  qwq  
//debug老半天了都
/*
思路:
    1.记录最大左端点与最小右端点(maxl,minr)
    2.记录左右端点虚实(l,r)
    3.分情况讨论输出
*/
#include<bits/stdc++.h>
using namespace std;

const int maxn=6e4,maxt=1e6;
int n,maxl=-1000005,l,r,minr=1000005;
char x;

inline void read()
{
    int t=0,x=0,f=1;  //t表示比较符号:1 <  2 <=  3 >  4 >=
    char ch=getchar();
    while(ch!='<'&&ch!='>') ch=getchar();
    if(ch=='<') t=1,ch=getchar();
    if(ch=='>') t=3,ch=getchar();
    if(ch=='=') ++t,ch=getchar();
    if(ch=='-') f=-1,ch=getchar();
    while(ch<='9'&&ch>='0') x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
    x*=f;
    if(t==1) {minr=min(minr,x);if(minr==x) r=1;} //r==1:表示解集右端点是空心
    if(t==2) {if(x<minr) minr=x,r=2;} //r==2:表示解集右端点是实心
    if(t==3) {maxl=max(maxl,x);if(maxl==x) l=1;}//与r同理
    if(t==4) {if(x>maxl) maxl=x,l=2;}
}

int main()
{
    std::ios::sync_with_stdio(0);
    cin>>n>>x;
    for(int i=1;i<=n;++i)
        read();
    if(l==0)//表示左端点没有更新,即是答案形如x<a或x<=a情况(a为一常数) 
    {
        if(r==1) {cout<<x<<"<"<<minr;return 0;}//x<a
        else {cout<<x<<"<="<<minr;return 0;}//x<=a
    }
    if(r==0)//同上处理
    {
        if(l==1) {cout<<x<<">"<<maxl;return 0;}
        else {cout<<x<<">="<<maxl;return 0;}
    }//处理输出形如样例2的答案
    if(l==2&&r==2)//两端点均为实心
        if(maxl<=minr) {cout<<maxl<<"<="<<x<<"<="<<minr;return 0;}
    if(l==2&&r==1)//左实右空
        if(maxl<minr) {cout<<maxl<<"<="<<x<<"<"<<minr;return 0;}
    if(l==1&&r==2)//左空右实
        if(maxl<minr) {cout<<maxl<<"<"<<x<<"<="<<minr;return 0;}
    if(l==1&&r==1)//两端点均为空心
        if(maxl<minr) {cout<<maxl<<"<"<<x<<"<"<<minr;return 0;}
    //处理形如样例1的情况
    cout<<"No Answer!";//处理形如样例3的情况
    return 0;
}

违规自删。

2021/10/18 14:02
加载中...