求助大佬调试TLE1.03s的代码!

P2947 [USACO09MAR] Look Up S

https://www.luogu.com.cn/blog/qaq-c14/ka-chang-mei-you-qian-tu 卡常寄巧自取
by C6H6 @ 2024-01-22 08:35:15


@[Myself_Hisy](/user/922691)
by C6H6 @ 2024-01-22 08:35:27


```cpp #define gc() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, MAXSIZE, stdin), p1 == p2) ? EOF : *p1++) const int MAXSIZE = 1 << 20; char buf[MAXSIZE], *p1, *p2; void read() {} template <class T1, class ...T2> void read(T1& ret,T2&... rest) { ret = 0; char c; bool f = false; while (!isdigit(c = gc() ) ) f = c == '-'; while(isdigit(c) ) { ret = (ret << 3) + (ret << 1) + (c ^ '0'); c = gc(); } if(f) ret = -ret; read(rest...); } ``` 试试这个快读 用法: read(a, b, c);
by C6H6 @ 2024-01-22 08:37:24


为什么还是1.03s! ```cpp #include<cstdio> inline int scan(void){ register int minus=1; register int number=0; register char got=getchar(); while('9'<got||got<'0'){ got=getchar(); }; while('0'<=got&&got<='9'){ number=(number<<3)+(number<<1)+(got^'0'); got=getchar(); }; return number*minus; }; inline void print(register int answer){ if(answer>9){ print(answer/10); }; putchar(answer%10+'0'); }; int high[100001]; int main(void){ register int maxn=scan(); for(register int iter=1;iter<=maxn;iter++){ high[iter]=scan(); }; for(register int head=1,tail;head<=maxn;head++){ bool flag=true; for(tail=head+1;tail<=maxn;tail++){ if(high[head]<high[tail]){ print(tail); flag=false; putchar('\n'); break; }; }; if(flag){ putchar('0'); putchar('\n'); }; }; return 0; }; ```
by Kapo_Hisy @ 2024-01-29 14:37:13


有没有一种可能你这是O(n^2)的,不是常数的问题
by xutianze @ 2024-03-16 18:06:53


|