(萌新)D - 小A的线段(easy version):已知m<10,数量较小,可以直接暴力状态压缩(即每条线段只有两种状态:选或不选,所以对于m条线段最多就有2的m次方种可能)我们可以令0为不选,1为选,则所有线段的选择情况可以用01字符串来表示,这与二进制的表达方式相同,于是我们可以将1到2的m次方的数以二进制表示就可以囊括所有的选择情况,以下为代码部分:

#include<iostream>
using namespace std;
bool change(int q,int a[][2],int n,int m)       //二进制状态压缩状态
{
    int k=m-1;           //二进制逆向排序
    int s[n];
    bool f=true;
    for(int i=0;i<n;i++)          //初始化数组
        s[i]=0;
    while(q>0)              //状态压缩
    {
        if(q&1)
        {
            for(int j=a[k][0];j<=a[k][1];j++)       //标记点
                s[j-1]++;
        }
        q>>=1;
        k--;
    }
    for(int i=0;i<n;i++)
        if(s[i]<2)
            f=false;
    return f;
}
int main()
{
    int n,m,ans=0;
    cin>>n>>m;
    int a[m][2];
    for(int i=0;i<m;i++)
        cin>>a[i][0]>>a[i][1];
    int mm=1<<m;
    for(int i=1;i<mm;i++)
    {
        if(change(i,a,n,m))
        {
            ans++;
            ans%=998244353;
        }
    }
    cout<<ans<<endl;
    return 0;
}