cf441 f组合数。。单调指针
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组合数。。单调指针的更多相关文章
- STL函数static void (* set_malloc_handler(void (*f)()))()与函数指针解析
在C++ STL的SGI实现版本中,一级空间配置器class __malloc_alloc_template中有一个静态函数的实现如下: static void (*set_malloc_handle ...
- hdu 4045 2011北京赛区网络赛F 组合数+斯特林数 ***
插板法基础知识 斯特林数见百科 #include<iostream> #include<cmath> #include<cstdio> #include<cs ...
- [bzoj1071]组队[单调指针乱搞]
这道题也很感人,主要改了比较久的时间... bzoj第一页的题,居然只过了五百多个人,(我是第512,orzliyicheng是513) 代码不长,但是细节搞了很久,主要sort写错了,晕... 首先 ...
- 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\} ...
- C语言 第八章 函数、指针与宏
一.函数 函数是一个包含完成一定功能的执行代码段.我们可以把函数看成一个"黑盒子", 你只要将数据送进去就能得到结果, 而函数内部究竟是如何工作的的, 外部程序是不知道的.外部程序 ...
- c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针
1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...
- c/c++: c++继承 内存分布 虚表 虚指针 (转)
http://www.cnblogs.com/DylanWind/archive/2009/01/12/1373919.html 前部分原创,转载请注明出处,谢谢! class Base { pu ...
- 浅谈C++的this指针
之所以写这篇文章,主要是为了回答网友 zhancaihua123同学的下面几个问题: father* p=new son;p->disp(...);father是父类,son是子类.disp是一 ...
- 联合与枚举 、 高级指针 、 C语言标准库(一)
1 输入一个整数,求春夏秋冬 1.1 问题 在实际应用中,有的变量只有几种可能取值.如人的性别只有两种可能取值,星期只有七种可能取值.在 C 语言中对这样取值比较特殊的变量可以定义为枚举类型.所谓枚举 ...
随机推荐
- 简单日历dom
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title> ...
- Android Studio buildGrade文件注解
apply plugin: 'com.android.application' //指定用的那个插件,android App插件打包得到.apk文件 //com ...
- SpringBoot整合全局异常处理&SpringBoot整合定时任务Task&SpringBoot整合异步任务
============整合全局异常=========== 1.整合web访问的全局异常 如果不做全局异常处理直接访问如果报错,页面会报错500错误,对于界面的显示非常不友好,因此需要做处理. 全局异 ...
- 目标检测----ImageAI使用
1.开源项目 github地址 https://github.com/OlafenwaMoses/ImageAI 2.目标检测(Object Detection)入门概要 3.Pycharm中无法 ...
- Linux7系列阅读
1.[Centos7]hostnamectl 设置主机名 https://blog.csdn.net/dream361/article/details/56833248 2.ip addr https ...
- Java中通过脚本引擎调用js函数
import java.io.*; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.scri ...
- Python写一个京东抢券脚本
最近看到京东图书每天有优惠券发放,满200减100,诱惑还是蛮大的.反正自己抢不到,想着写个脚本试试. 几个关键步骤 获取优惠券的url 直接审查元素 获取cookie 通过本地代理,比如BurpSu ...
- CF1100F Ivan and Burgers
题目地址:CF1100F Ivan and Burgers 一道有难度的线性基题,看了题解才会做 预处理两个数组: \(p_{r,i}\) 表示满足下列条件的最大的 \(l\) :线性基第 \(i\) ...
- Mac 远程桌面 ubuntu16.04 unity
待解决问题: 使用 vnc 远程桌面 ubunt16.04的自带桌面 unity 尝试方法 : 查看了各种方法, 基本都是曲线救国, 安装 gnome 或者 xfce4等其他桌面系统, 而我只想用好看 ...
- Go语言模拟实现简单的区块链
一.创建项目 按照Go语言最佳实践的思路, 在工作空间下的src目录下创建 github.com/hangzhou-huxin/blokcchain目录作为我们的项目目录,然后用GoLand工具选中这 ...