摘要:
problemn个村庄,m条公路,建设每条公路需要时间t求多少时间后任意村庄通车solution最小生成树模板注意特判,无法连通输出-1codes#include#includeusing namespace std;struct side{ int u, v, w;... 阅读全文
摘要:
problem一个长度为N的正整数数列A[i]将其分成M段,并要求每段连续求每段和最大值(M段各自的和中最大的那个)最小(某种方案下最小)。solution二分每段和的最大值mid。 如果存在一种划分方案使得每段和为mid成立,就去找更小的。反之找更大的。!!!第4个... 阅读全文
摘要:
problem给定一张图,求其最小生成树中的边数和权值最大的边solution裸的Kruskalcodes#include#includeusing namespace std;const int maxn = 10010;struct Edge{int u, v, ... 阅读全文
摘要:
problemn个建筑需要抢修第i个建筑需要T1时间抢修,必须在T2时间之前抢修完毕求最多能抢修多少建筑solution先按照 t2 从小到大排列(对于每一个建筑,我们肯定等它快到限制的时候再修复它。)对于一个建筑,如果能修理就修理;如果不能修,就比较他和前面修理了的... 阅读全文
摘要:
problem猜数字游戏,求最优情况下猜的次数solution。。。。都被我猜中了啊哈哈哈哈。。。。。。。codes#includeusing namespace std;int n;int main(){ scanf("%d",&n); if (n==2... 阅读全文
摘要:
problem给出正整数n和k计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值solutionk (n−k)∗k(n−k)∗k。k = i,对答案贡献为0。k > i,贡献为∑ (k - ⌊k/i⌋*i) ,⌊... 阅读全文
摘要:
problem把一个数n进行拆分拆分出来大于一的数两两不等,使得拆出来的数可以组成[1, n]间的所有数求最少拆成多少个数。n using namespace std;int main(){ int n,ans=0; cin>>n; while(n)n>... 阅读全文
摘要:
problem给你一个n个数的数列找出其中出现超过n/2次的数solution1、既然众数出现了超过了n/2次,那么任意删除序列中的两个不同的数,众数在新序列中出现的次数也一定会超过n/2次。2、所以我们就维护一个计数。碰到自己就累加,反之去掉,为0时就用当前读入更新... 阅读全文
摘要:
problem给出一个数n求“1的约数个数” + “2的约数个数” + …… + “n的约数个数”。solution不难发现:约数1出现的个数就是n/1(有n个数都是1的倍数),约数2出现的个数就是n/2。所以其实我们直接把n/i累计起来就是答案了codes#incl... 阅读全文