1.題目描述:
成績10
開啟時間
2023年05月16日 星期二 08:00
折扣0.8
折扣時間
2023年06月1日 星期四 23:55
允許遲交
否關閉時間
2023年06月7日 星期三 23:55 輸入
輸入偏序集
£>,a
中的元素數不超過
20個,分別用單個小寫的英文本母表示。
輸入的第一行給出
a中的各個元素,兩個相鄰的元素之間用逗號隔開。
輸入的第二行給出偏序關係
£,用有序對的形式給出(只給出哈斯圖中的滿足覆蓋的兩個元素形成的有序對),如
,等等,兩個相鄰的有序對之間用逗號隔開。
輸出 輸出
a的極小元與極大元。
輸出的第一行給出各個極小元,兩個相鄰元素之間用逗號隔開,輸出的元素要求按照英文本母的自然順序排列輸出。
輸出的第二行給出各個極大元,兩個相鄰元素之間用逗號隔開,輸出的元素要求按照英文本母的自然順序排列輸出。
測試輸入
期待的輸出
時間限制
記憶體限制
額外程序
測試用例 1
以文字方式顯示
a,b,c,d↵,↵
以文字方式顯示
a,c↵
b,d↵ 1秒
64m0
3.解題思路:
直接統計每個點的入度和出度就好了,如果入度為0則肯定是極小元,出度為0肯定是極大元。不過考慮到給出字母不按字典序的,因此考慮用map對映一下。
4.ac**:
#include #define inf 0x3f3f3f3f
#define maxn 100100
#define lson root << 1
#define rson root << 1 | 1
#define lent (t[root].r - t[root].l + 1)
#define lenl (t[lson].r - t[lson].l + 1)
#define lenr (t[rson].r - t[rson].l + 1)
#define n 1111
#define eps 1e-6
#define pi acos(-1.0)
#define e exp(1.0)
using namespace std;
const int mod = 1e9 + 7;
typedef long long ll;
typedef unsigned long long ull;
mapvis;
mapmp;
int in[26], out[26];
int main()
ch = getchar();
} while (ch != '\n');
bool first = 1;
ch = getchar();
do else
}ch = getchar();
} while (ch != '\n' && ch != eof);
first = 1;
for (int i = 0; i < cnt; i++)
if (!in[i])
else
printf(",%c", mp[i]);
} puts("");
first = 1;
for (int i = 0; i < cnt; i++)
if (!out[i])
else
printf(",%c", mp[i]);
} puts("");
#ifndef online_judge
long _end_time = clock();
printf("time = %ld ms.", _end_time - _begin_time);
#endif
return 0;
}
求偏序集中的極大元與極小元
輸入 輸入偏序集 a 中的元素數不超過 20個,分別用單個小寫的英文本母表示。輸入的第一行給出 a中的各個元素,兩個相鄰的元素之間用逗號隔開。輸入的第二行給出偏序關係 用有序對的形式給出 只給出哈斯圖中的滿足覆蓋的兩個元素形成的有序對 如 等等,兩個相鄰的有序對之間用逗號隔開。輸出 輸出a的極小元與...
求偏序集中的極大元與極小元
輸入 輸入偏序集 a 中的元素數不超過 20個,分別用單個小寫的英文本母表示。輸入的第一行給出 a中的各個元素,兩個相鄰的元素之間用逗號隔開。輸入的第二行給出偏序關係 用有序對的形式給出 只給出哈斯圖中的滿足覆蓋的兩個元素形成的有序對 如 等等,兩個相鄰的有序對之間用逗號隔開。輸出 輸出 a的極小元...
最大元最小元上確界 偏序集中的特殊元素
若 x x b x y 則y為b的上界 若 x x b y x 則y為b的下界 令c 則c中最小元就是b上確界 令c 則c中最小元就是b上確界 理解 最大元 x x b x y 由定義知道,x必須是b中的任何的乙個元素,也同時y必須和x有關係,也就是說y必須和b內的任何乙個元素有關係,如果都有x y...