Beautiful Walls
[1553] Beautiful Walls
- 时间限制: 1000 ms 内存限制: 65535 K
- 问题描述
- To simplify the building process, XadillaX built some template on the ground. The template is a very big wall and the height of each unit may be different.
8Mao and Hungar have to choose any part of this wall as their own wall.

The part(i, j) means the wall between unit(i) and unit(j) with their heights.
What Hungar thinks a beautiful wall is that the height of each unit is unique.
Now give you a wall-template, you should tell Hungar that how many ways he can choose to copy his own wall? - 输入
- This problem contains several cases, ends with EOF.
The first line of each case is one integer N (0 < N ≤ 100000) which indicates the side length (number of units) of the wall-template.
The second line contains N integers which indicate the height of each unit. (0 < height <= 100000) - 输出
- For each case, you should output the number of ways that Hungar can choose.
- 样例输入
5
3 4 5 5 2
3
1 2 3- 样例输出
9
6- 提示
无
- 来源
cjl
- 思路:尺取法,组合数学;
- 用尺取法取区间,在这个区间内所有的数都不同,那么可行方案数为Cn2,两个区间还会相交,所以还得减去重复算的,比如1 2 3 4 5 3 2 1
- 前一个区间为[1,5],后一个为[4,1];所以[4,5]相交,所以去重.那么关键是记录相交的地方,我们可以这样,记录上个区间的结束,然后根据尺取法可知道当前
- 区间的开头,这样就可以算出了。复杂O(n);
1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 #include<stdlib.h>
6 #include<math.h>
7 using namespace std;
8 typedef long long LL;
9 int uu[1000005];
10 int flag[1000005];
11 int yy[1000005];
12 int main(void)
13 { int i,j,k;
14 while(scanf("%d",&k)!=EOF)
15 { memset(flag,0,sizeof(flag));
16 memset(yy,0,sizeof(yy));
17 for(i=0;i<k;i++)
18 {
19 scanf("%d",&uu[i]);
20 }
21 LL ans=1;long long sum=0;int vv=0;
22 int l=0;int r=0;flag[uu[0]]=1;int kp=0;
23 while(l<=r+1&&r<k-1)
24 {
25 while(r<k-1)
26 {
27 r++;
28 if(flag[uu[r]]==1)
29 {LL yyk=0;
30 if(ans>0&&!yy[r-1])
31 {
32 yy[r-1]=1;
33 if(kp>l)
34 {
35 yyk=kp-l+1;
36 }
37 sum+=ans*(ans-1)/2;if(yyk>0)sum-=yyk*(yyk-1)/2;
38 kp=r-1;
39 }ans++;flag[uu[r]]++;break;
40 }
41 else if(!flag[uu[r]])
42 {
43 ans++;flag[uu[r]]++;
44 }
45 }
46 if(r==k-1&&flag[uu[r]]==1)
47 break;
48 else {flag[uu[r]]--;flag[uu[l]]--;ans-=2;r--;l++;}
49 }
50 if(ans>0){sum+=ans*(ans-1)/2;sum+=(LL)k;LL yyk=kp-l+1;if(yyk>0){sum-=yyk*(yyk-1)/2;}}
51 printf("%I64d\n",sum);
52 }
53 return 0;
54 }
Beautiful Walls的更多相关文章
- HDU 6187 Destroy Walls
Destroy Walls Long times ago, there are beautiful historic walls in the city. These walls divide the ...
- HDU 6187 Destroy Walls (思维,最大生成树)
HDU 6187 Destroy Walls (思维,最大生成树) Destroy Walls *Time Limit: 8000/4000 MS (Java/Others) Memory Limit ...
- 使用Beautiful Soup编写一个爬虫 系列随笔汇总
这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...
- 网络爬虫: 从allitebooks.com抓取书籍信息并从amazon.com抓取价格(1): 基础知识Beautiful Soup
开始学习网络数据挖掘方面的知识,首先从Beautiful Soup入手(Beautiful Soup是一个Python库,功能是从HTML和XML中解析数据),打算以三篇博文纪录学习Beautiful ...
- Python爬虫学习(11):Beautiful Soup的使用
之前我们从网页中提取重要信息主要是通过自己编写正则表达式完成的,但是如果你觉得正则表达式很好写的话,那你估计不是地球人了,而且很容易出问题.下边要介绍的Beautiful Soup就可以帮你简化这些操 ...
- 推荐一些python Beautiful Soup学习网址
前言:这几天忙着写分析报告,实在没精力去研究django,虽然抽时间去看了几遍中文文档,还是等实际实践后写几篇操作文章吧! 正文:以下是本人前段时间学习bs4库找的一些网址,在学习的可以参考下,有点多 ...
- 数位DP CF 55D Beautiful numbers
题目链接 题意:定义"beautiful number"为一个数n能整除所有数位上非0的数字 分析:即n是数位所有数字的最小公倍数的倍数.LCM(1到9)=2520.n满足是252 ...
- 错误 You are trying to run the Python 2 version of Beautiful Soup under Python 3. This will not work
Win 10 下python3.6 使用Beautiful Soup 4错误 You are trying to run the Python 2 version of Beautiful ...
- hihoCoder 1425 : What a Beautiful Lake(美丽滴湖)
hihoCoder #1425 : What a Beautiful Lake(美丽滴湖) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 ...
随机推荐
- 33、搜索旋转排序数组 | 算法(leetode,附思维导图 + 全部解法)300题
零 标题:算法(leetode,附思维导图 + 全部解法)300题之(33)搜索旋转排序数组 一 题目描述! 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 & ...
- Centos7服务器上RabbitMQ单机安装
一.背景 最近项目中用到了RabbitMQ,但是发现自己本地没有安装,此文记录一下本地RabbitMQ的安装过程.注意不同的系统安装方式略有不同,此处我们记录的是Centos7的安装方式. 二.安装方 ...
- 巩固javaweb第一天
巩固内容: 实例解析 <!DOCTYPE html> 声明为 HTML5 文档 <html> 元素是 HTML 页面的根元素 <head> 元素包含了文档的元(me ...
- Spark集群环境搭建——Hadoop集群环境搭建
Spark其实是Hadoop生态圈的一部分,需要用到Hadoop的HDFS.YARN等组件. 为了方便我们的使用,Spark官方已经为我们将Hadoop与scala组件集成到spark里的安装包,解压 ...
- 生产环境高可用centos7 安装配置RocketMQ-双主双从-同步双写(2m-2s-sync)
添加hosts信息[四台机器] vim /etc/hosts 192.168.119.130 rocketmq-nameserver1 192.168.119.130 rocketmq-master1 ...
- js 如何全部替代一个子串为另一个子串
更多描述: 假设有一个字符串 `hello. hello. hello. ` 需要替换为 `AAA`,即把 `hello. ` 替换为 `A` 如果需要全量替换字符串,可以使用 String.prot ...
- 爬虫系列:连接网站与解析 HTML
这篇文章是爬虫系列第三期,讲解使用 Python 连接到网站,并使用 BeautifulSoup 解析 HTML 页面. 在 Python 中我们使用 requests 库来访问目标网站,使用 Bea ...
- ORACLE profile含义,修改,新增
profiles文件是口令和资源限制的配置集合,包括CPU的时间.I/O的使用.空闲时间.连接时间.并发会话数量.密码策略等对于资源的使用profile可以做到控制会话级别或语句调用级别.oracle ...
- Xcode功能快捷键
隐藏xcode command+h退出xcode command+q关闭窗口 command+w关闭所有窗口 command+option+w关闭当前项目 command+control+w关闭当前文 ...
- 【Linux】【Services】【DNS】使用Bind搭建DNS服务
1. 简介 1.1. 实现的功能:DNS解析以及智能转发 1.2. 官方文档: 1.3. 基础概念:http://www.cnblogs.com/demonzk/p/6494968.html 2. 环 ...