jzoj3518【NOIP2013模拟11.6A组】进化序列
来源:互联网 发布:linux ntp 开机启动 编辑:程序博客网 时间:2024/05/30 23:44
3518. 【NOIP2013模拟11.6A组】进化序列
Description
Abathur采集了一系列Primal Zerg 的基因样本,这些基因构成了一个完整的进化链。为了方便,我们用A0,A1…An-1 这n 个正整数描述它们。
一个基因Ax 可以进化为序列中在它之后的基因Ay。这个进化的复杂度,等于Ax | Ax+1…| Ay的值,其中| 是二进制或运算。
Abathur 认为复杂度小于M 的进化的被认为是温和的。它希望计算出温和的进化的对数。
Input
第一行包含两个整数n,m。
接下来一行包含A0,A1…An-1 这n 个正整数,描述这n 个基因。
Output
第一行包含一个整数,表示温和的进化的对数。
分析:设头指针i和尾指针j,每次或第j个数,如果大于等于m,ans+=j-i-1,并把第i个数“减”掉,i后移一位。
代码
#include <cstdio>#define maxn 100007using namespace std;int a[maxn][35],m[35],f[35];bool fl[35];int num,n,x;long long ans;void changem(int x){ int p=1; while (x>0) { m[p]=x%2; x/=2; p++; }}void change(int x,int i){ int p=1; while (x>0) { a[i][p]=x%2; x/=2; p++; }}void add(int x){ for (int i=1;i<=32;i++) if (a[x][i]==1) { f[i]++; }}bool check(){ for (int i=32;i>=1;i--) { if (f[i]==0&&m[i]==1) return true; if (f[i]>0&&m[i]==0) return false; } return false;}void sub(int x){ for (int i=1;i<=32;i++) if (a[x][i]==1) f[i]--;}int main(){ freopen("evolve.in","r",stdin); freopen("evolve.out","w",stdout); scanf("%d%d",&n,&x); changem(x); for (int i=1;i<=n;i++) { scanf("%d",&x); change(x,i); } int i=1,j=1; while (j<=n) { add(j); while (check()) { if (j>=n) break; j++; add(j); } if (!check()) { sub(j); sub(i); ans+=j-i-1; i++; j--; } j++; } for (int k=i;k<=n;k++) ans+=n-k; printf("%lld",ans); fclose(stdin);fclose(stdout);}
阅读全文
0 0
- jzoj3518【NOIP2013模拟11.6A组】进化序列
- jzoj. 3518. 【NOIP2013模拟11.6A组】进化序列(evolve)
- JZOJsenior3518.【NOIP2013模拟11.6A组】进化序列
- JZOJ 3518. 【NOIP2013模拟11.6A组】进化序列(evolve)
- 进化序列 jzoj3518 倍增
- Jzoj3518 进化序列
- 高中OJ3516. 【NOIP2013模拟11.6A组】摧毁巴士站
- 【NOIP2013模拟11.6A组】灵能矩阵(pylon)
- 【NOIP2013模拟11.5A组】游戏节目
- 【NOIP2013模拟11.4A组】游乐场
- 【NOIP2013模拟11.4A组】积木(brick)
- 【NOIP2013模拟11.7A组】不等式(solve)
- jzoj. 3519. 【NOIP2013模拟11.6A组】灵能矩阵(pylon)
- JZOJ 3506. 【NOIP2013模拟11.4A组】善良的精灵
- JZOJ 3506. 【NOIP2013模拟11.4A组】善良的精灵
- 3523. 【NOIP2013模拟11.7A组】JIH的玩偶(tree)
- 高中3523. 【NOIP2013模拟11.7A组】JIH的玩偶
- 3523. 【NOIP2013模拟11.7A组】JIH的玩偶(tree)
- bzoj1119 [POI2009]SLO 置换
- jzoj1279 解题 (dp)
- 每日英语阅读(八)
- 高中3523. 【NOIP2013模拟11.7A组】JIH的玩偶
- 微信小程序-获得微信用户识别码(OPENID) C#
- jzoj3518【NOIP2013模拟11.6A组】进化序列
- python3 requests库实现多图片爬取
- 【正一专栏】评《我的前半生》——我们需要怎样的价值观
- 3927. 【NOIP2014模拟11.6】可见点数 (Standard IO)
- JavaScript跨域总结与解决办法
- Android基础篇——聊聊Android系统
- Golang教程:(十四)字符串
- Python3之操作系统
- 【工具使用】visual studio code常用快捷键