摘要:
点击查看代码 /* 问题: 给定一个由整数组成的集合,集合中的整数各不相同,现在要将它分为两个子集合,使得这两个子集合的并为原集合,交为空集,同时在两个子集合的元素个数n1与n2 之差的绝对值|n1-n2|尽可能小的前提下,要求它们各自的元素之和S1与S2之差的绝对值|S1-S2|尽可能大。求这个| 阅读全文
摘要:
点击查看代码 #include<cstdio> #include<stdlib.h> //使用srand()和rand() #include<time.h> //使用time() #include<cmath> //使用round() #include<algorithm> //使用swap() u 阅读全文
摘要:
点击查看代码 #include<cstdio> #include<cmath> //使用fabs() #pragma warning(disable:4996) //注意:如果a和b是一个表达式,而不是一个变量,在宏定义中要给a和b单独加一个括号,保证其表达式内部的优先级不出错 const doub 阅读全文
摘要:
点击查看代码 #include<cstdio> #include<stdlib.h> //使用srand()和rand() #include<time.h> //使用time() #include<cmath> //使用round() #pragma warning(disable:4996) in 阅读全文
摘要:
点击查看代码 /* 给出N个闭区间[x,y],求最少需要确定多少个点,才能使每个闭区间中都至少存在一个点。例如对闭区间[1,4],[2,6],[5,7]来说,需要两个点1和5才能保证每个闭区间内都至少有一个点 输入样例: 3 1 4 2 6 5 7 //有3个闭区间:[1,4] [2,6] [5,7 阅读全文
摘要:
点击查看代码 /* 给出N个开区间(x,y),从中选择尽可能多的开区间,使得这些开区间两两没有交集 输入样例: 4 1 3 2 4 3 5 6 7 //4个区间:(1,3) (2,4) (3,5) (6,7) 输出样例: 3 //有3个不相交开区间:(1,3) (3,5) (6,7) 解题思路: 1 阅读全文
摘要:
点击查看代码 #include<cstdio> #include<queue> #pragma warning(disable:4996) using namespace std; const int maxn = 1000; //最多不超过1000个顶点 const int INF = 0x3ff 阅读全文
摘要:
点击查看代码 /* 输入样例: 6 10 0 1 4 0 4 1 0 5 2 1 2 1 1 5 3 2 3 6 2 5 5 3 4 5 3 5 4 4 5 3 输出样例: 11 */ #include<cstdio> #include<algorithm> #pragma warning(disa 阅读全文
摘要:
点击查看代码 #include<cstdio> #include<algorithm> #pragma warning(disable:4996) using namespace std; //kruskal算法伪代码 int kruskal() { 设最小生成树的边权之和为ans、最小生成树的当前 阅读全文
摘要:
点击查看代码 /* 输入样例: 6 10 0 1 4 0 4 1 0 5 2 1 2 6 1 5 3 2 3 6 2 5 5 3 4 4 3 5 5 4 5 3 输出样例: 15 */ #include<cstdio> #include<algorithm> #pragma warning(disa 阅读全文