[关闭]
@yang12138 2018-07-02T06:19:06.000000Z 字数 503 阅读 901

Atcoder Regular100 C

未分类


给定长度为的数组,定义:


这里的是按位或运算.

先声明一个结论:
表示的二进制表示的的个数.


那么可以这样计算,令

正确性显然,时间复杂度是

示例代码:

  1. for(int k=1;k<(1<<n);k++){
  2. int max=0,sec=0;
  3. for(int i=k;i>=0;i--){
  4. i&=k;
  5. if(A[i]>max){
  6. sec=max,max=A[i];
  7. }
  8. else if(A[i]>sec){
  9. sec=A[i];
  10. }
  11. B[k]=max(B[k-1],max+sec);
  12. }
  13. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注