浏览器

结论popcnt(x^y)popcnt(x)+popcnt(y)的奇偶性相同。

然后就是popcnt为奇数的乘为偶数的。预处理一下\(2^{16}\)次方以内的popcnt,直接\(O(1)\)算就行。

大师

就是求有多少个等差子序列。

方程很好写,\(f[i]\)表示以\(i\)结尾的等差子序列个数,\(f[i] = \sum_{j=1}^i f[j]*[a[i]-a[j]=d]\),枚举一下公差就行了。这里要注意公差可能有正有负,不要一起枚举(我就在这错的)

#include <algorithm>
#include <cstdio>
#include <cstring> typedef long long ll; const int N = 1010;
const ll ha = 998244353;
const int M = 40010; ll s[M], f[N], a[N], n, ans, mx; void calc(ll d) {
memset(s, 0, sizeof s);
for (int i = 1; i <= n; ++i) {
f[i] = (1 + s[a[i]]) % ha;
if (a[i] + d >= 0 && a[i] + d <= mx) (s[a[i] + d] += f[i]) %= ha;
(ans += f[i]) %= ha;
}
} int main() {
n = read();
for (int i = 1; i <= n; ++i) a[i] = read(), mx = std::max(mx, a[i]);
for (int i = -mx; i <= mx; ++i) {
calc(i);
}
ans = ans - mx * 2 * n % ha + ha;
ans %= ha;
printf("%lld\n", ans);
return 0;
}

礼物

冲突就是一个子集关系。而子集关系又是偏序的。“偏序集最小反链覆盖等于最长链”。所以建一个子集关系的DAG跑一个最长路就行了。然后就是有一个虚点的技巧,每个集合只与比它少一个元素的集合连边,这样点数是\(O(2^k)\)的,边数是\(O(k2^k)\)的。跑最长路的时候真点是\(1\)虚点是\(0\)就行了。

#include <algorithm>
#include <cstdio> const int N = (1 << 21);
const int M = N * 21; int hd[N], to[M], nxt[M], w[N], cnt;
int f[N], rd[N], rn[N], tot[N];
int n, k, a[N]; inline void adde(int x, int y) {
cnt++;
to[cnt] = y;
nxt[cnt] = hd[x];
hd[x] = cnt;
} int main() {
n = read();
k = read();
for (int i = 1; i <= n; ++i) {
a[i] = read();
w[a[i]] = f[a[i]] = 1;
}
for (int i = (1 << k) - 1; i >= 0; --i) {
for (int j = 0; j <= k; ++j)
if (i >> j & 1) {
adde(i, i ^ (1 << j));
}
}
int ans = 0;
for (int i = (1 << k) - 1; i >= 0; --i) {
for (int j = hd[i]; j; j = nxt[j]) {
f[to[j]] = std::max(f[to[j]], f[i] + w[to[j]]);
}
ans = std::max(ans, f[i]);
}
puts("1");
printf("%d\n", ans);
for (int i = 1; i <= n; ++i) {
rn[i] = rd[f[a[i]]];
rd[f[a[i]]] = i;
tot[f[a[i]]]++;
}
for (int i = 1; i <= ans; ++i) {
printf("%d ", tot[i]);
for (int j = rd[i]; j; j = rn[j]) printf("%d ", a[j]);
puts("");
}
return 0;
}

口袋里的纸飞机

咕。

最新文章

  1. [LeetCode] Remove Duplicates from Sorted List 移除有序链表中的重复项
  2. HTTP中的摘要认证机制
  3. LintCode A + B Problem
  4. 长链非编码RNA(lncRNA)
  5. Spring中使用Jcaptcha实现校验码验证
  6. UI进阶 科大讯飞(2) 语音合成(文字转换成语音)
  7. 学点bootstrap
  8. WCF消息交换模式之双工通讯(Duplex)
  9. Qt错误:类中使用Q_OBJECT宏导致undefined reference to vtable for &quot;xxx::xxx&quot;错误的原因和解决方法
  10. losbyday Linux下的强大工具之一akw(转),Shell必备
  11. Android 调用jepg库进行图片压缩,保持图片不失真
  12. R语言安装加载包
  13. 三、如何使用QtDesigner
  14. 关于web资金系统提现安全保护,防止极快的重复并发请求导致重复提现的解决思路
  15. kali自定义分辨率(1920*1080)
  16. HOG特征(Histogram of Gradient)学习总结
  17. MVC开发模式的数据运行流程
  18. Nginx+FastCGI运行原理(一)
  19. 在虚拟机里面安装Linux操作系统
  20. SpringMVC -- 梗概--源码--贰--静态资源的访问问题

热门文章

  1. android 华为、魅族手机无法打印 Log 日志的问题
  2. 软件模拟spi的注意事项
  3. 阿里妈妈的iconfont的引用问题
  4. Nginx虚拟主机配置(20200202)
  5. junit 常用注解 + junit 断言详解
  6. redis的一些常见面试题
  7. ng-指令
  8. tensor数据基操----索引与切片
  9. TamperMonkey 使用指南以及脚本推荐
  10. 手写mybatis框架笔记