e没学过做不出来。。

处理合法的区间很麻烦,但是处理非合法的区间很容易

答案就是所有的取法-不合法的区间

这题一定要双边界推进处理!!!!

一开始用单边界向右推进,结果后来发现错了,拿样例1就可以证明

所以先预处理出左边界和右边界

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
using namespace std;
int L[];
int R[];
int pos[];
int a[];
int main()
{
int n;
while(~scanf("%d",&n))
{
memset(L,,sizeof(L));
memset(R,,sizeof(R));
memset(pos,,sizeof(pos));
map<int,int>last;
for(int i=;i<=n;i++)scanf("%d",&a[i]);
for(int i=;i<=n;i++)
{
L[i]=last[a[i]];
for(int j=;j<=;j++)
{
if((a[i]&(<<j))==)
{
L[i]=max(L[i],pos[j]);
}
}
for(int j=;j<=;j++)
{
if((a[i]&(<<j))>)pos[j]=i;
}
last[a[i]]=i;
}
for(int j=;j<=;j++)pos[j]=n+;
for(int i=n;i>=;i--)
{
R[i]=n+;
for(int j=;j<=;j++)
{
if((a[i]&(<<j))==)
{
R[i]=min(R[i],pos[j]);
}
}
for(int j=;j<=;j++)
{
if((a[i]&(<<j))>)pos[j]=i;
}
}
__int64 output=1ll*n*(n+)/;
for(int i=;i<=n;i++)
{
__int64 temp1=i-L[i];
__int64 temp2=R[i]-i;
output-=temp1*temp2;
}
printf("%I64d\n",output);
}
}

cf441 f组合数。。单调指针的更多相关文章

  1. STL函数static void (* set_malloc_handler(void (*f)()))()与函数指针解析

    在C++ STL的SGI实现版本中,一级空间配置器class __malloc_alloc_template中有一个静态函数的实现如下: static void (*set_malloc_handle ...

  2. hdu 4045 2011北京赛区网络赛F 组合数+斯特林数 ***

    插板法基础知识 斯特林数见百科 #include<iostream> #include<cmath> #include<cstdio> #include<cs ...

  3. [bzoj1071]组队[单调指针乱搞]

    这道题也很感人,主要改了比较久的时间... bzoj第一页的题,居然只过了五百多个人,(我是第512,orzliyicheng是513) 代码不长,但是细节搞了很久,主要sort写错了,晕... 首先 ...

  4. DUT Star Weekly Contest #3 Problem F Solution

    题目链接 问题转化 \[a_i+a_j+(i-j)^2=a_i+i^2+a_j+j^2-2ij\] 令 \(b_i=a_i+i^2\) , 问题化为: 求 \[\max \{b_i+b_j-2ij\} ...

  5. C语言 第八章 函数、指针与宏

    一.函数 函数是一个包含完成一定功能的执行代码段.我们可以把函数看成一个"黑盒子", 你只要将数据送进去就能得到结果, 而函数内部究竟是如何工作的的, 外部程序是不知道的.外部程序 ...

  6. c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针

    1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...

  7. c/c++: c++继承 内存分布 虚表 虚指针 (转)

    http://www.cnblogs.com/DylanWind/archive/2009/01/12/1373919.html 前部分原创,转载请注明出处,谢谢! class Base  {  pu ...

  8. 浅谈C++的this指针

    之所以写这篇文章,主要是为了回答网友 zhancaihua123同学的下面几个问题: father* p=new son;p->disp(...);father是父类,son是子类.disp是一 ...

  9. 联合与枚举 、 高级指针 、 C语言标准库(一)

    1 输入一个整数,求春夏秋冬 1.1 问题 在实际应用中,有的变量只有几种可能取值.如人的性别只有两种可能取值,星期只有七种可能取值.在 C 语言中对这样取值比较特殊的变量可以定义为枚举类型.所谓枚举 ...

随机推荐

  1. 关于java11 - 应该知道的

    Local Variable Type Inference# HTTP Client# Collections# Streams# Optionals# Strings# InputStreams# ...

  2. Delphi线程定时器TThreadedTimer及用法--还有TThreadList用法可以locklist

    Delphi线程定时器 - -人生如歌- - 博客园http://www.cnblogs.com/zhengwei0113/p/4192010.html (* 自己编写的线程计时器,没有采用消息机制, ...

  3. Java-Servlet--《12-WEB应用中的普通Java程序如何读取资源文件.mp4》 有疑问

    \第五天-servlet开发和ServletConfig与ServletContext对象\12-WEB应用中的普通Java程序如何读取资源文件.mp4; 多层时,DAO为了得到资源文件中的配置参数: ...

  4. Hibernate学习(三)

    Hibernate的查询方法(五种) 一.OID查询:按主键查询 --get( ) --load( ) 二.对象导航查询:通过已经查询到的联系人,得到起关联的对象 三.SQL查询 四.HQL查询(** ...

  5. GridView item设置点击背景

    GridView item设置点击背景 android:listSelector="@android:color/transparent"

  6. DAC杂谈一

    DAC种类: 有权电阻网络DAC 输出电压变化范围为:0~-(2^n-1)/2^n*Vref 当位数很高时,每个电阻都有很高精度是十分困难的. 倒T型电阻网络DAC(比如AD7520 10bit 已停 ...

  7. ajax-hook

    // ==UserScript== // @name ajax hook 调试 // @namespace http://tampermonkey.net/ // @version 0.1 // @d ...

  8. PEP 530 -- 异步推导式

    PEP 530 -- 异步推导式 摘要 PEP 492和PEP 525使用async/await语法引入了协程.PEP 530建议添加list,set,dict推导式和生成器推导式的异步版本. 理论和 ...

  9. Light OJ 1102

    题意: 给你一个数 N , 求分成 K 个数 (可以为 0 ) 的种数: 思路: 类似 在K个抽屉放入 N 个苹果, 不为0, 就是 在 n-1 个空隙中选 m-1个: 为 0, 就可以先在 K 个抽 ...

  10. 接口签名进行key排序,并MD5加密

    import org.apache.commons.codec.digest.DigestUtils; import java.io.UnsupportedEncodingException; imp ...