2013年8月6日
摘要: 题目链接。分析:说这题是状态压缩dp,其实不是,怎么说呢,题目数据太水了,所以就过了。手动输入n=20的情况,超时。正解是网络流,不太会。A这题时有个细节错了,是dp[i][j]还是dp[i][q[j]]? 答案是dp[i][j],因为q[j]必定会超(感谢CZ学长提示)。AC代码如下:#include #include #include #include #include #include using namespace std;const int maxn = 20000;int q[maxn], dp[21][maxn], G[21][21];int main() { int n;... 阅读全文
posted @ 2013-08-06 22:28 Still_Raining 阅读(565) 评论(0) 推荐(0) 编辑
摘要: 题目链接。题目大意:给很多木棍,两端被涂了颜色。任意两根木棍的相同颜色处可以拼接在一起,问有没有可能将所有的木棍都连起来,成一条直线?分析:考点,欧拉道路。将一根木棍看成一条边,两端的颜色看成两个点,问题成了,能否从无向图的一个结点出发走出一条道路,每条边恰好经过一次。求法:如果一个无向图是连通的,且最多有两个奇点(奇点指的是度数是奇数的点),则一定存在欧拉道路。是否连通可以通过并查集来求。#include #include #include #include #include #include using namespace std;const int maxn = 500000+10+10 阅读全文
posted @ 2013-08-06 09:53 Still_Raining 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 看《C程序设计语言》(英文版)学到的两个用法。 两个很简单的宏用法。 #的用法: if, however, a parameter name is preceded by a # in the replacement text, the combination will be expanded into a quoted string with the parameter replaced by the actual argument.#include #define dprint(expr) printf(#expr " = %g\n", expr);int main() 阅读全文
posted @ 2013-08-06 09:20 Still_Raining 阅读(348) 评论(0) 推荐(0) 编辑