我现在就感觉我这人现在真的没有dp的意识
其实真写起来也不难,但是把就是练的少思维跟不上,dp从根本上就是一种状态的提炼和聚集。

按照题解的意思来,dp[i][j]表示二进制第i位的值为j(0,1)的组合有多少,然后滚动数组

今天补完之后感觉,除了fft,我懒得抄板子就不补了,其他三题,代码难度都不大。爆零也就算买个教训,希望7.8codem好好打

#include<cmath>
#include<map>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<set>
#include<vector>
#include<queue>
#include<stack>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = 1e5+5;
const int INF = 0x3f3f3f3f;
const int MOD = 998244353;
#define MP(x, y) make_pair(x, y) int a[N];
int dp[2][35][2];
int two[N];
void gadd(int &a, int b) {
a += b;
if(a >= MOD) a -= MOD;
}
int main() {
int n;
two[0] = 1;
for(int i = 1; i < N; ++i) {
two[i] = 1ll*two[i-1] *2 %MOD;
}
// printf("%d\n", two[1]);
while(~scanf("%d", &n)) {
memset(dp, 0, sizeof(dp)); for(int i = 1; i <= n; ++i) scanf("%d", &a[i]);
int fl = 0;
ll ans = 0; for(int i = 1; i <= n; ++i) {
for(int j = 30; j >= 0; --j) {
int tt = a[i]>>j&1;
if(!tt) continue;
else {
ans = (ans + 1ll* two[n-i] * (1+dp[fl][j][0]) ) % MOD;
break;
}
}
// printf("%d\n", ans);
for(int j = 0; j <= 30; ++j) {
gadd(dp[fl^1][j][0], dp[fl][j][0]);
gadd(dp[fl^1][j][1], dp[fl][j][1]);
}
for(int j = 0; j <= 30; ++j) {
int tt = a[i]>>j & 1;
gadd(dp[fl ^ 1][j][tt], 1);
gadd(dp[fl ^ 1][j][tt^1], dp[fl][j][1]);
gadd(dp[fl ^ 1][j][tt^0], dp[fl][j][0]);
}
fl ^= 1;
memset(dp[fl ^ 1], 0, sizeof(dp[fl ^ 1]));
}
printf("%lld\n", ans);
}
return 0;
}

hihocoder Challenge 29 A.序列的值的更多相关文章

  1. hihocoder Challenge 29 D. 不上升序列

    这场爆零比赛题目还是要补的 这道题据说是出烂掉的原题,我找了下 CF13.C/ CF371 div1 C,一模一样 我服这群原题大佬 为 当时,使 不严格递增的最小步数,那么 Otherwise 显然 ...

  2. hihocoder Challenge 29 B.快速乘法

    这题的题解和我写的有一拼,异常简洁,爆炸. 这题思路dp 表示的是讨论到第位,并比原数的前n位多了 显然j只能取0,1,毕竟2进制嘛 之后转移就好了,注意下面两个重要状态 #include <c ...

  3. Oracle 序列(查询序列的值,修改序列的值)

    1.序列的语法形式 create sequence 序列名 increment by n start with n maxvalue n | nomaxvalue minvalue n | nomin ...

  4. 【HIHOCODER 1526】 序列的值(二进制DP)

    时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个长度为 n 的序列 a[1..n],定义函数 f(b[1..m]) 的值为在 [0,m-1] 内满足如下条件的 i ...

  5. hihocoder 1526 序列的值

    题面在这里! 好久没做题啦,养生一下qwq 推一推贡献就会发现这TM就是一个水题啊! #include<bits/stdc++.h> #define ll long long using ...

  6. Swift - 29 - 参数的默认值

    // 参数设置了默认值之后, 在调用的时候, 可以写这个参数 // 在参数前面添加"_", 表示取消外部参数名, 但还是建议使用苹果默认格式 func sayHello(nickN ...

  7. Oracle 序列 CACHE 值必须小于 CYCLE 值的解决方法

    之前创建sequence时碰到一个问题, 当我使用了cache时总是提示CACHE 值必须小于 CYCLE 值,查了下文档,找到这么一个公式 文档的大概意思是cache的值必须要小于通过这个公式计算得 ...

  8. hihocoder #1529 : 不上升序列

    Description 给定一个长度为 n 的非负整数序列 a[1..n]. 你每次可以花费 1 的代价给某个 a[i] 加1或者减1. 求最少需要多少代价能将这个序列变成一个不上升序列. Solut ...

  9. hihoCoder挑战赛29

    多打打不同的比赛,找经验啊 题目4 : 不上升序列 时间限制:40000ms 单点时限:2000ms 内存限制:256MB 描述 给定一个长度为 n 的非负整数序列 a[1..n]. 你每次可以花费 ...

随机推荐

  1. SSD trim及4k对齐

    trim可以帮助减小SSD的写放大WA问题,删除文件后不仅仅是将文件标记为删除,而是在SSD空闲的时候统一进行删除. Linux下的trim支持叫discard,修改fstab文件,在挂载参数中加上d ...

  2. JDBC为什么要使用PreparedStatement而不是Statement

    PreparedStatement是什么? PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatemen ...

  3. 在Android上编写模块化项目(翻译)

    来源博客:Wang Jie's Blog 本文链接:http://blog.wangjiegulu.com/2018/02/13/writing_a_modular_project_on_androi ...

  4. Navicat的使用

    Navicat的使用 navicat作为一种数据库的操作工具,在工作中使用的频率很高.相比phpMyAdmin而言,无论是从界面操作的易用性上,还是外观上,抑或是IP的配置上都有着很大的突出优势.ph ...

  5. 解决nginx [error] open() "usr/local/nginx/logs/nginx.pid" failed错误

    重新启动服务器,访问web服务发现无法浏览啦!登陆服务器之 后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/us ...

  6. docker 报错:x509: certificate has expired or is not yet valid

    环境:centos 7 程序:docker 下载镜像报错: # docker pull centos Pulling repository centos FATA[0004] Get https:// ...

  7. java 中对对象的调用

    java程序设计语言对对象采用的不是引用的调用,实际上对象引用进行的是值得传递.(from:核心卷1  page:123)

  8. Linux服务器上安装MySql数据库(默认安装,密码为空),首次使用需要修改密码

    1,在/etc/my.cnf末尾  加入skip-grant-tables,保存,跳过身份验证. 2,重启MySql,使刚才修改的配置生效. 3,终端输入mysql,然后再输入use mysql; 4 ...

  9. Mysql取随机数据效率测试(400W条中读取100条)

    测试数据表的创建在文章:http://www.cnblogs.com/wt645631686/p/6868192.html 先看一下我的SQL方案 SELECT * FROM `emp` WHERE ...

  10. xadmin与admin设置

    xadmin : 导入xadmin pip install xadmin 路由设置: import xadmin urlpatterns = [ url(r'^xadmin/', xadmin.sit ...