Language: C++

#include<bits/stdc++.h>
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename... Ar>
#define Reg register
#define RI Reg int
#define Con const
#define CI Con int&
#define I inline
#define W while
#define N 500000
#define Gmax(x,y) (x<(y)&&(x=(y)))
using namespace std;
int n,H=1,T=0,a[N+5],q[N+5],vis[N+5];string s;
int main()
{
    RI i,k;cin>>s,n=s.length()+1,s="%"+s+"%",s[1]=='<'&&(q[++T]=1),s[n-1]=='>'&&(q[++T]=n);
    for(i=2;i^n;++i) s[i-1]=='>'&&s[i]=='<'&&(q[++T]=i);W(H<=T) k=q[H++],
        s[k-1]=='>'&&(Gmax(a[k-1],a[k]+1),!vis[k-1]&&(vis[q[++T]=k-1]=1)),//向左扩展
        s[k]=='<'&&(Gmax(a[k+1],a[k]+1),!vis[k+1]&&(vis[q[++T]=k+1]=1));//向右扩展
    long long ans=0;for(i=1;i<=n;++i) ans+=a[i];return printf("%lld",ans),0;//统计答案
}

\(B\)：Two Contests（点此看题面）

大致题意： 有\(n\)个区间，让你把它划分成非空的两部分，使得两部分区间交集大小之和最大。

首先，我们要知道，对于一些区间\([l_i,r_i]\)，它们的交集大小是\(max(min\{r_i\}-max\{l_i\}+1,0)\)。

因此，可以先将区间按左端点排序，然后枚举其中一个区间左端点最大值为\(l_i\)，则另一个区间左端点最大值为\(l_n\)。

而对于右端点，有两种可能性。

设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。

那么最优情况下，两个集合的\(min\{r_i\}\)要么分别是\(r_{min},Mn\)，要么分别是\(r_{max},min(r_{min},Mn)\)。

确定了左端点和右端点，我们就可以因此而更新答案了。

#include<bits/stdc++.h>
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename... Ar>
#define Reg register
#define RI Reg int
#define Con const
#define CI Con int&
#define I inline
#define W while
#define N 100000
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)<(y)?(x):(y))
#define Gmax(x,y) (x<(y)&&(x=(y)))
using namespace std;
int n;set<int> p,q;
struct Il {int x,y;I bool operator < (Con Il& o) Con {return x<o.x;}}s[N+5];
class FastIO
{
    private:
        #define FS 100000
        #define tc() (A==B&&(B=(A=FI)+fread(FI,1,FS,stdin),A==B)?EOF:*A++)
        #define tn (x<<3)+(x<<1)
        #define D isdigit(c=tc())
        char c,*A,*B,FI[FS];
    public:
        I FastIO() {A=B=FI;}
        Tp I void read(Ty& x) {x=0;W(!D);W(x=tn+(c&15),D);}
}F;
int main()
{
    RI i,j,t,ans=0;for(F.read(n),i=1;i<=n;++i) F.read(s[i].x),F.read(s[i].y);
    for(sort(s+1,s+n+1),i=1;i<=n;++i) q.insert(s[i].y);//排序，一开始默认所有线段在第二个集合
    for(i=1;i<=n;++i) q.erase(s[i].y),p.insert(s[i].y),t=0,//枚举一个区间的左端点最大值，把对应右端点移入第一个集合中
        Gmax(t,max(*--p.end()-s[i].x+1,0)+max(min(*p.begin(),*q.begin())-s[n].x+1,0)),//第一种情况
        Gmax(t,max(*p.begin()-s[i].x+1,0)+max(*q.begin()-s[n].x+1,0)),Gmax(ans,t);//第二种情况，更新ans
    return printf("%d",ans),0;
}


Compiler output:
a.cc:23:1: error: stray '\' in program
   23 | \(B\)：Two Contests（点此看题面）
      | ^
a.cc:23:4: error: stray '\' in program
   23 | \(B\)：Two Contests（点此看题面）
      |    ^
a.cc:25:14: error: stray '\' in program
   25 | 大致题意： 有\(n\)个区间，让你把它划分成非空的两部分，使得两部分区间交集大小之和最大。
      |              ^
a.cc:25:17: error: stray '\' in program
   25 | 大致题意： 有\(n\)个区间，让你把它划分成非空的两部分，使得两部分区间交集大小之和最大。
      |                 ^
a.cc:25:19: error: extended character 。 is not valid in an identifier
   25 | 大致题意： 有\(n\)个区间，让你把它划分成非空的两部分，使得两部分区间交集大小之和最大。
      |                   ^
a.cc:27:31: error: stray '\' in program
   27 | 首先，我们要知道，对于一些区间\([l_i,r_i]\)，它们的交集大小是\(max(min\{r_i\}-max\{l_i\}+1,0)\)。
      |                               ^
a.cc:27:42: error: stray '\' in program
   27 | 首先，我们要知道，对于一些区间\([l_i,r_i]\)，它们的交集大小是\(max(min\{r_i\}-max\{l_i\}+1,0)\)。
      |                                          ^
a.cc:27:62: error: stray '\' in program
   27 | 首先，我们要知道，对于一些区间\([l_i,r_i]\)，它们的交集大小是\(max(min\{r_i\}-max\{l_i\}+1,0)\)。
      |                                                              ^
a.cc:27:71: error: stray '\' in program
   27 | 首先，我们要知道，对于一些区间\([l_i,r_i]\)，它们的交集大小是\(max(min\{r_i\}-max\{l_i\}+1,0)\)。
      |                                                                       ^
a.cc:27:76: error: stray '\' in program
   27 | 首先，我们要知道，对于一些区间\([l_i,r_i]\)，它们的交集大小是\(max(min\{r_i\}-max\{l_i\}+1,0)\)。
      |                                                                            ^
a.cc:27:82: error: stray '\' in program
   27 | 首先，我们要知道，对于一些区间\([l_i,r_i]\)，它们的交集大小是\(max(min\{r_i\}-max\{l_i\}+1,0)\)。
      |                                                                                  ^
a.cc:27:87: error: stray '\' in program
   27 | 首先，我们要知道，对于一些区间\([l_i,r_i]\)，它们的交集大小是\(max(min\{r_i\}-max\{l_i\}+1,0)\)。
      |                                                                                       ^
a.cc:27:94: error: stray '\' in program
   27 | 首先，我们要知道，对于一些区间\([l_i,r_i]\)，它们的交集大小是\(max(min\{r_i\}-max\{l_i\}+1,0)\)。
      |                                                                                              ^
a.cc:27:96: error: extended character 。 is not valid in an identifier
   27 | 首先，我们要知道，对于一些区间\([l_i,r_i]\)，它们的交集大小是\(max(min\{r_i\}-max\{l_i\}+1,0)\)。
      |                                                                                                ^
a.cc:29:67: error: stray '\' in program
   29 | 因此，可以先将区间按左端点排序，然后枚举其中一个区间左端点最大值为\(l_i\)，则另一个区间左端点最大值为\(l_n\)。
      |                                                                   ^
a.cc:29:72: error: stray '\' in program
   29 | 因此，可以先将区间按左端点排序，然后枚举其中一个区间左端点最大值为\(l_i\)，则另一个区间左端点最大值为\(l_n\)。
      |                                                                        ^
a.cc:29:102: error: stray '\' in program
   29 | 因此，可以先将区间按左端点排序，然后枚举其中一个区间左端点最大值为\(l_i\)，则另一个区间左端点最大值为\(l_n\)。
      |                                                                                                      ^
a.cc:29:107: error: stray '\' in program
   29 | 因此，可以先将区间按左端点排序，然后枚举其中一个区间左端点最大值为\(l_i\)，则另一个区间左端点最大值为\(l_n\)。
      |                                                                                                           ^
a.cc:29:109: error: extended character 。 is not valid in an identifier
   29 | 因此，可以先将区间按左端点排序，然后枚举其中一个区间左端点最大值为\(l_i\)，则另一个区间左端点最大值为\(l_n\)。
      |                                                                                                             ^
a.cc:31:1: error: extended character 。 is not valid in an identifier
   31 | 而对于右端点，有两种可能性。
      | ^
a.cc:33:5: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |     ^
a.cc:33:8: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |        ^
a.cc:33:14: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |              ^
a.cc:33:30: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |                              ^
a.cc:33:33: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |                                 ^
a.cc:33:37: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |                                     ^
a.cc:33:46: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |                                              ^
a.cc:33:58: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |                                                          ^
a.cc:33:67: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |                                                                   ^
a.cc:33:73: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |                                                                         ^
a.cc:33:78: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |                                                                              ^
a.cc:33:84: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |                                                                                    ^
a.cc:33:94: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |                                                                                              ^
a.cc:33:97: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |                                                                                                 ^
a.cc:33:101: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |                                                                                                     ^
a.cc:33:105: error: stray '\' in program
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |                                                                                                         ^
a.cc:33:107: error: extended character 。 is not valid in an identifier
   33 | 设第\(1\sim i\)条线段中最小的\(r\)为\(r_{min}\)，最大的为\(r_{max}\)，第\(i+1\sim n\)中最小的\(r\)为\(Mn\)。
      |                                                                                                           ^
a.cc:35:27: error: stray '\' in program
   35 | 那么最优情况下，两个集合的\(min\{r_i\}\)要么分别是\(r_{min},Mn\)，要么分别是\(r_{max},min(r_{min},Mn)\)。
      |                           ^
a.cc:35:32: error: stray '\' in program
   35 | 那么最优情况下，两个集合的\(min\{r_i\}\)要么分别是\(r_{min},Mn\)，要么分别是\(r_{max},min(r_{min},Mn)\)。
      |                                ^
a.cc:35:37: error: stray '\' in program
   35 | 那么最优情况下，两个集合的\(min\{r_i\}\)要么分别是\(r_{min},Mn\)，要么分别是\(r_{max},min(r_{min},Mn)\)。
      |                                     ^
a.cc:35:39: error: stray '\' in program
   35 | 那么最优情况下，两个集合的\(min\{r_i\}\)要么分别是\(r_{min},Mn\)，要么分别是\(r_{max},min(r_{min},Mn)\)。
      |                                       ^
a.cc:35:51: error: stray '\' in program
   35 | 那么最优情况下，两个集合的\(min\{r_i\}\)要么分别是\(r_{min},Mn\)，要么分别是\(r_{max},min(r_{min},Mn)\)。
      |                                                   ^