当前位置:网站首页>Gym - 102219J Kitchen Plates(暴力或拓扑序列)
Gym - 102219J Kitchen Plates(暴力或拓扑序列)
2022-07-07 07:09:00 【moyangxian】
题意:略
题记:
做法一:拓扑排序。五个盘子相当于一个有五个点的有向图,A<B相当于A有一条边指向B。那么建图后做一遍基于BFS的拓扑排序即可。
时间复杂度O(5+5)
#include<bits/stdc++.h>
using namespace std;
const int N=10;
int head[N],tot;
int s[N];
vector<int>ans;
struct Edge{
int to,next;
}e[N];
void init(){
memset(head,-1,sizeof(head));
memset(s,0,sizeof(s));
tot=0;
}
void addedge(int u,int v){
e[tot].to=v;
e[tot].next=head[u];
head[u]=tot++;
}
bool topsort(){
queue<int>q;
for(int i=0;i<5;i++)
if(!s[i]){
q.push(i);
ans.push_back(i);
}
while(!q.empty()){
int u=q.front();
q.pop();
for(int i=head[u];~i;i=e[i].next){
int v=e[i].to;
if(--s[v]==0){
q.push(v);
ans.push_back(v);
}
}
}
return ans.size()==5;
}
int main(){
init();
for(int i=0;i<5;i++){
char u,v,op;
cin>>u>>op>>v;
if(op=='>') swap(u,v);
addedge(u-'A',v-'A');
s[v-'A']++;
}
if(!topsort()) cout<<"impossible"<<endl;
else{
for(int i=0;i<ans.size();i++)
cout<<(char)(ans[i]+'A');
cout<<endl;
}
return 0;
}
做法二:
暴力。next_permutation()算出"ABCDE"的全排列,然后查看排列是否符合题目条件即可。
时间复杂度O(5!)
#include<bits/stdc++.h>
using namespace std;
const int N=10;
char a[]={
'A','B','C','D','E'};
char s[5][3];
bool check(){
for(int i=0;i<5;i++){
int p1,p2;
for(int j=0;j<5;j++){
if(a[j]==s[i][0]) p1=j;
if(a[j]==s[i][2]) p2=j;
}
if(p1>p2) return false;
}
return true;
}
int main(){
for(int i=0;i<5;i++){
cin>>s[i];
if(s[i][1]=='>') swap(s[i][0],s[i][2]);
}
do{
if(check()) break;
}while(next_permutation(a,a+5));
if(check()) for(int i=0;i<5;i++) cout<<a[i];
else cout<<"impossible"<<endl;
return 0;
}
边栏推荐
- 信息安全实验二 :使用X-SCANNER扫描工具
- H5 web player easyplayer How does JS realize live video real-time recording?
- 小程序滑动、点击切换简洁UI
- 数据库多表关联查询问题
- C# Socke 服务器,客户端,UDP
- Liunx command
- 根据热门面试题分析Android事件分发机制(二)---事件冲突分析处理
- 如何成为一名高级数字 IC 设计工程师(5-2)理论篇:ULP 低功耗设计技术精讲(上)
- Nested (multi-level) childrn routes, query parameters, named routes, replace attribute, props configuration of routes, params parameters of routes
- How to use clipboard JS library implements copy and cut function
猜你喜欢
In fact, it's very simple. It teaches you to easily realize the cool data visualization big screen
Unity shader (learn more about vertex fragment shaders)
VSCode+mingw64+cmake
Netease cloud wechat applet
[4G/5G/6G专题基础-146]: 6G总体愿景与潜在关键技术白皮书解读-1-总体愿景
How to speed up video playback in browser
Vs2013 generate solutions super slow solutions
Where is the answer? action config/Interceptor/class/servlet
基础篇:带你从头到尾玩转注解
Sqlplus garbled code problem, find the solution
随机推荐
Lecture 1: stack containing min function
Network request process
数据建模中利用3σ剔除异常值进行数据清洗
Windows starts redis service
Database multi table Association query problem
Huawei hcip datacom core_ 03day
Difference between interface iterator and iteratable
大佬们,请问 MySQL-CDC 有什么办法将 upsert 消息转换为 append only 消
消费互联网的产业链其实是很短的,它仅仅承接平台上下游的对接和撮合的角色
第一讲:鸡蛋的硬度
Diffusion模型详解
IIS redirection redirection appears eurl axd
flinkcdc采集oracle在snapshot阶段一直失败,这个得怎么调整啊?
【BW16 应用篇】安信可BW16模组/开发板AT指令实现MQTT通讯
ComputeShader
Unity3d interface is embedded in WPF interface (mouse and keyboard can respond normally)
创建一个长度为6的int型数组,要求数组元素的值都在1-30之间,且是随机赋值。同时,要求元素的值各不相同。
flinkcdc 用sqlclient可以指定mysqlbinlog id执行任务吗
What is MD5
JS逆向教程第一发