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 语言中对这样取值比较特殊的变量可以定义为枚举类型.所谓枚举 ...
随机推荐
- 【blog】推荐一个博客系统后台管理模板 - pinghsu
pinghsu https://github.com/chakhsu/pinghsu
- PLSql的使用
1.安装 plsqldeveloper和数据库驱动-ODAC 2.在数据库驱动ODAC中添加 Oracle客户端的网络服务名配置文件tnsnames.ora 路径为: 3.汉化 直接运行Languag ...
- mysql 原理 ~ DDL之mdl锁
一 简介: MDL锁 二 具体 1 MDL锁 1 增删查改 申请MDL读锁 2 ddl语句 1. 拿MDL写锁 2. 降级成MDL读锁 3. 真正做DDL ...
- layer兼容性问题
一.Layer 弹出层在ie8错乱的解决办法 弹出层在火狐.谷歌.360极速模式.IE6下都能100%面积正常显示,但在IE8和360的兼容模式下只显示弹出层下半部分或右半部分的内容,在主页面加上: ...
- CentOS 7 配置Maven
https://blog.csdn.net/wangyang163wy/article/details/75530872 CentOS 7 配置MavenMaven是一个高效的软件项目管理工具,通过M ...
- android checkBox setTextColor无效
代码中动态设置checkBox的文字选中背景和未选中背景,用如下代码: checkView.setTextColor(getResources().getColor(R.color.item_colo ...
- kali linux 安装virtualbox报错(rc=-1908)
解决步骤: apt-get install dkms # 如何安装了dkms就跳过这步 apt-get install linux-headers-`uname -r` # 这个符号是TAB上方的符号 ...
- Spring Aware接口
实现aware接口的bean必须在spring的xml文件中注册,由spring的IOC容器管理 1-ApplicationContextAware接口 可以获取spring的IOC容器 2-Bean ...
- translate.py
#!/usr/bin/python # -*- coding: UTF-8 -*- import xlrd import xlwt from xlutils.copy import copy impo ...
- 【转】Linux中profile、bashrc、bash_profile之间的区别和联系
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登陆时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置. 英文描述为: # /etc/pr ...