主页
搜索
最近更新
数据统计
申请密钥
批量保存
开发版网站(新前端)
系统公告
1
/
1
请查看完所有公告
题解:P8838 [传智杯 #3 决赛] 面试
最后更新于 2025-08-28 09:05:38
作者
koukou
分类
题解
题解
P8838
复制 Markdown
查看原文
转到新前端
删除文章
更新内容
注意到数据范围很小,于是考虑直接搜索。 字典序最小意味着越靠前的指令应尽可能用编号较小的服务器,这也就确定了我们的搜索顺序,接着直接枚举就好了,找到第一个答案就直接输出。 代码: ``` #include<bits/stdc++.h> using namespace std; const int N = 10 + 1; int n, m; int a[N], b[N], u[N], f[N]; void dfs(int k) { if(k > n) { for(int i = 1; i <= k - 1; i++) { cout << f[i] << " "; } exit(0);//直接输出 } for(int i = 1; i <= n; i++) { if(u[i]) continue;//如果已经被选过了 if(b[k] <= a[i]) { u[i] = 1;//标记一下 f[k] = i;//记录答案 dfs(k + 1); u[i] = 0;//回溯 } } return; } int main() { cin >> n >> m; for(int i = 1; i <= n; i++) { cin >> a[i]; } for(int i = 1; i <= m; i++) { cin >> b[i]; } dfs(1); cout << -1; return 0; } ```
正在渲染内容...
点赞
0
收藏
0