题目链接:https://codeforces.com/contests/1156
A. Inscribed Figures
题目大意:假设1代表圆形,2代表正三角形,3代表正方形,那么如例一所示2 1 3就代表正三角形内接圆形,同时内接圆的内部再内接正方形。那么现在所需要求的就是通过不断内接图形最终有多少个交点,如果在这个过程中内接的图形与之有边重合则 Infinite
解题思路:分别画出1 2 3 、1 3 2、2 1 3、2 3 1、3 1 2、3 2 1,就可以得出规律如下
- 1中内接2或者2中内接1,则有3个交点
- 1中内接3或者3中内切1,则有4个交点
- 2和3相连一定存在边重合的现象,所以2和3之间一定要有1,否则 Infinite
- 特殊情况 3 1 2,存在重合点,需要特别判断
查看代码:https://github.com/UNICKCHENG/code/blob/master/codeforces/1156A_Inscribed%20Figures.cpp
B. Ugly Pairs
题目大意:给定由小写字母组成的字符串,现在规定按照26字母表中相邻的字母不能在字符串中的位置也相邻,需要对字符串中各个字符的位置重新,问重新排列后是否可以达到题目要求,如果可以的话,输出排列后的结果(结果不唯一),否则的话,输出“No answer“
解题思路:把字符串各个字母出现的次数存进num[26]数组中,然后根据num[26]将26字母表中偶数位的字母存进字符串s1中,再将26字母表中奇数位的字母存进字符串s2中,最后的组合有s1+s2或者s2+s1,而这样的组合一定满足题目要求
查看代码:https://github.com/UNICKCHENG/code/blob/master/codeforces/1156B_Ugly%20Pairs.cpp
C. Match Points
题目大意:给定n个数,要求在这n个数中找到两两匹配的数,匹配的条件为
-
- 已经参与匹配的数不可再次参与匹配
- 两个匹配的数字差的绝对值不小于z
问由n个数组成的序列中,最多可以组成多少对这样的匹配数
解题思路:先从小到大排序,再用尺选法进行匹配,时间复杂度为O(nlogn)
查看代码:https://github.com/UNICKCHENG/code/blob/master/codeforces/1156C_Match%20Points.cpp
D. 0-1-Tree
E. Special Segments of Permutation
F. Card Bag
G. Optimizer