比赛 |
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;
}