比赛 20251001国庆欢乐赛1 评测结果 WEEEEEMEEE
题目名称 国旗计划 最终得分 0
用户昵称 wdsjl 运行时间 2.292 s
代码语言 C++ 内存使用 60.17 MiB
提交时间 2025-10-01 11:50:33
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int N,M;
struct S{int c,d;vector<int>t;}s[15];
bool a(const vector<bool>&v){for(int i=1;i<=M;++i)if(!v[i])return 0;return 1;}
int dfs(int i,vector<bool>v,int c){
    if(a(v))return c;
    if(i>N)return 1e9;
    int r=dfs(i+1,v,c);
    vector<bool>u=v;
    for(int x:s[i].t)u[x]=1;
    r=min(r,dfs(i+1,u,c+1));
    return r;
}
int main(){
    freopen("flagplan.in","r",stdin);
    freopen("flagplan.out","w",stdout);
    cin>>N>>M;
    for(int i=1;i<=N;++i){
        int c,d;cin>>c>>d;
        s[i].c=c;s[i].d=d;
        if(c<=d)for(int j=c;j<=d;++j)s[i].t.push_back(j);
        else{for(int j=c;j<=M;++j)s[i].t.push_back(j);
             for(int j=1;j<=d;++j)s[i].t.push_back(j);}
    }
    for(int i=1;i<=N;++i){
        vector<bool>v(M+1,0);
        for(int x:s[i].t)v[x]=1;
        int ans=dfs(1,v,1);
        cout<<ans<<(i==N?"\n":" ");
    }
    return 0;
}