题目链接: http://codeforces.com/contest/839/problem/B
题目描述: 有K种人, 有N排的11, 1111, 11的座位, 要求不同种人不能坐在相邻的位置, 给你K种人每种人的人数, 问能不能安排的下?
解题思路: 首先我们先放不小于三个的,挨个遍历, 只能放4 或者 2 * 2, 先放4, 再放 2 * 2 如果这时候不够放了, 直接输出NO
然后就剩下一个的还有两个的, 我们先放两个的, 两个当然放在2是最优的, 然后再放4, 这时注意放4之后1的数量加加, 这样的话如果四个或者两个都没有的话可以拆成两个1
最后就只有一堆一个了, 我们先看1还有没有, 有就放1 ,没有放2, 再则放4, 同时1加加, 这样最后判一遍放没放完就行了
代码:
#include #include #include #include #include #include #include #include #include #include #include
View Code 思考: 代码写的巨丑, 昨天做的CF, 卡在B题一直出不来, 自己刚开始贪心4是对的, 但是后来应该有好多情况没有, 我多考虑造成结果错了, 还是没想清楚