摘要: 该题还不错~。 题意:给定N、K、P,使得可以分解成N = n1^P + … nk^P的形式,如果可以,输出sum(ni)最大的划分,如果sum一样,输出序列较大的那个。否则输出Impossible。 dfs枚举,为了防止超时,这里要预先将从1开始的i^p的值存储在factor数组中,直到i^p>n 阅读全文
posted @ 2016-11-30 19:28 辰曦~文若 阅读(983) 评论(0) 推荐(-1)
摘要: 题意:有n个人,每个人有k个爱好,如果两个人有某个爱好相同,他们就处于同一个集合。问总共有多少个集合,以及每个集合有多少人,并按从大到小输出。 很明显,采用并查集。vis[k]标记爱好k第一次出现的人的编号,如果为0则表示未出现。 当前第i个人若也存在爱好k,则只要将i与vis[k]两个人合并即可。 阅读全文
posted @ 2016-11-30 18:52 辰曦~文若 阅读(1176) 评论(0) 推荐(0)
摘要: #include #include #include #include using namespace std; /* 对于第i个数字(i=0~n-1),它每组出现的次数为n-i,出现在前i+1个组中 */ const int maxn=100000+5; double num[maxn]; int main() { int n; scanf("%d",&n); ... 阅读全文
posted @ 2016-11-30 18:43 辰曦~文若 阅读(263) 评论(0) 推荐(1)
摘要: 统计树的最小层数以及位于该层数上的叶子节点个数即可。 代码里建树我用了邻接链表的存储方式——链式前向星,不了解的可以参考,非常好用: http://www.cnblogs.com/chenxiwenruo/p/4513754.html #include <iostream> #include <cs 阅读全文
posted @ 2016-11-30 18:40 辰曦~文若 阅读(315) 评论(0) 推荐(0)
摘要: 题意:给定N,以及N个数。找出满足m*n=N且m>=n且m-n最小的m、n值,建立大小为m*n矩阵,将N个数从大到下顺时针填入矩阵中。 #include <iostream> #include <cstdio> #include <algorithm> #include <string.h> #in 阅读全文
posted @ 2016-11-30 18:35 辰曦~文若 阅读(282) 评论(0) 推荐(0)
摘要: 就是把输入给的左孩子右孩子互换一下,然后输出层次遍历和中序遍历。 #include <iostream> #include <algorithm> #include <cstring> #include <string.h> #include <cstdio> #include <queue> us 阅读全文
posted @ 2016-11-30 18:31 辰曦~文若 阅读(246) 评论(0) 推荐(0)