关于本题读入

P1531 I Hate It

@[B1G_CUTE_BUG](/user/398983) 完整代码给一下捏
by Frosts @ 2023-08-25 15:07:58


@[Frosts](/user/1064154) ```cpp #include<bits/stdc++.h> using namespace std; const int N= 2e5+ 5; int n, m, a[N]; class segt { struct node { int mx; } t[N<< 2]; void pushup(int u) { t[u].mx= max(t[u<< 1].mx, t[u<< 1| 1].mx); } public: void build(int u, int l, int r) { if(l== r) { t[u].mx= a[l]; return; } int mid= l+ r>> 1; build(u<< 1, l, mid); build(u<< 1| 1, mid+ 1, r); pushup(u); } void update(int u, int l, int r, int P, int val) { if(l> P || r< P) return; if(l== r) { t[u].mx= max(t[u].mx, val); return; } int mid= l+ r>> 1; update(u<< 1, l, mid, P, val); update(u<< 1| 1, mid+ 1, r, P, val); pushup(u); } int query(int u, int l, int r, int L, int R) { if(l> R || r< L) return -1e9; if(l>= L && r<= R) return t[u].mx; int mid= l+ r>> 1, t1= -1e9; t1= max(t1, query(u<< 1, l, mid, L, r)); t1= max(t1, query(u<< 1| 1, mid+ 1, r, L, R)); return t1; } } T; signed main() { scanf("%d%d", &n, &m); for(int i= 1; i<= n; i++) scanf("%d", &a[i]); T.build(1, 1, n); char c; int x, y; while(m--) { cin >> c; scanf("%d%d", &x, &y); if(c=='Q') printf("%d\n", T.query(1, 1, n, x, y)); else T.update(1, 1, n, x, y); } return 0; } ```
by BIG_CUTE_BUG @ 2023-08-25 15:09:22


@[B1G_CUTE_BUG](/user/398983) > 在本地使用了如下代码读入字符?cgetchar(); c= getchar();但是OJ上挂了(没有输出),改成了 cin>>c 才成功读入(有输出了)。试问路过的dalao为什么。 `getchar` 函数会读入空格和换行。
by Eirin_Yagokoro @ 2023-08-25 15:11:46


@[__dest__ruct__or__](/user/592238) 是这样的。
by BIG_CUTE_BUG @ 2023-08-25 15:13:51


@[B1G_CUTE_BUG](/user/398983) > @destructor 是这样的。 所以有可能造数据的时候行末还有一个空格。
by Eirin_Yagokoro @ 2023-08-25 15:15:34


@[__dest__ruct__or__](/user/592238) 所以dalao请问OJ上`getchar`的读入遇到了什么问题
by BIG_CUTE_BUG @ 2023-08-25 15:15:40


@[B1G_CUTE_BUG](/user/398983) > @destructor 所以dalao请问OJ上getchar的读入遇到了什么问题 发在上面了。
by Eirin_Yagokoro @ 2023-08-25 15:16:06


@[__dest__ruct__or__](/user/592238) 好的谢谢你
by BIG_CUTE_BUG @ 2023-08-25 15:16:16


|