T1 荒诞
题目大意
求(1^2+2^2+...+n^2)
题目分析
水过。
T2 失意
题目大意
给定(n)个线段,从中取出(m)个线段使得这些线段交集最长,求最长长度以及一个任意的合法方案。
题目分析
求交集的长度很简单,就是(max(0,r_{min}-l_{max}))。那么我们将所有线段按左端点排序。枚举当前左端点(i),将左端点小于(i)的线段的右端点放入堆中。如果当前堆的大小(>m)就弹出堆中右端点最小的。当前最优答案就是堆中右端点最小值-(i)。
T3 孤独
题目分析
容斥。但是在计算子集贡献的时候需要换一种快速的写法
for(int j=0;j<n;j++){
for(int i=1;i<(1<<n);i++)if(i&(1<<j))cnt[i^(1<<j)]+=cnt[i];
}