3281. CJ and WS
感觉这个题挺好的。给定N个数,这N个数是从1到N的互不相同的数。现在给一个数K,求在这个数列中包含K的连续数列中长度是奇数并且K是中间的数的个数。
比如
7 4
5 7 2 4 3 1 6,那么满足的数列有4个:4; 5,7,2,4,3; 2,4,3; 5,7,2,4,3,1,6
思路:因为数列中所有数都在1到N之间,所以所有的数和K的关系无非是大于K或者小于K(除了K),而满足条件的数列一定满足大于K的数
和小于K的数的个数相等。我们不妨再开一个数组b[i],记原数组为a[i],如果a[i] > K,b[i] = 1; a[i] < K,b[i] = -1;我们从K分别向左右拓展对b数列求和,
然后只要满足左边某个位置加右边某个位置的sum和等于0就对应一个满足条件的数列。乍一想还是要平方的算法才能算出来,但是其实我们可以
对左边的数进行标记,比如用map记录,然后用O(n)的复杂度扫一遍右边就好了。 还是上边的例子,对应的b数组为1,1,-1,0,-1,-1,1;然后求完和
是1,0,-1,0,-1,-2,-1;我们对1,0,-1进行标记,然后扫右边的时候只要发现-1,0,1就证明可以对应一个满足条件的数列。但是记住要累加,单独的0要单
独加一次。
#include <cstdio>
#include <cstring>
#include <map>
#define MAXN 100002
using namespace std;
int a[MAXN],b[MAXN],key,N;
int main()
{
int pos,ans;
while(scanf("%d%d",&N,&key) != EOF){
memset(b,0,sizeof(b));
for(int i = 1;i <= N; ++i){
scanf("%d",&a[i]);
if(a[i] == key){
pos = i;
continue;
}
if(a[i] > key) b[i] = 1;
else if(a[i] < key) b[i] = -1;
}
map<int,int>f; f.clear();
ans = 1;
for(int i = pos-1;i >= 1; --i){
b[i] += b[i+1];
if(b[i] == 0) ans ++;
f[-1*b[i]] ++;
}
for(int i = pos+1;i <= N; ++i){
b[i] += b[i-1];
if(b[i] == 0) ans++;
if(f.find(b[i]) != f.end())
ans += f[b[i]];
}
printf("%d/n",ans);
}
}
3281. CJ and WS相关推荐
- mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string
mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from strin ...
- 解题报告:POJ 3281 Dining(最大流 / “三分图”建图)
B.POJ 3281 DiningDiningDining(最大流/建图模板)[省选/NOI- ] 有 F 种食物和 D 种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一 种食物和一种饮料.现 ...
- AutoCAD WS API发布【转】
最近几个月里我们了解到,用户最大的需求之一就是希望我们面向开发者开放API,使之能够在自己的应用程序中利用AutoCAD WS的web功能和移动功能. 这些API依靠的是基于 WebDAV协议的行业标 ...
- Happy WS 之 控制台 -- Happy Console (一)
为什么80%的码农都做不了架构师?>>> Webit Script 是啥? ==>http://www.oschina.net/p/webit-script OK 先上效 ...
- [WS]使用Axis发布简单的Web服务
使用Axis,要发布一个Web服务非常简单,简直不能再简单了,尽管看起来过程和相关代码有些长.我这个帖子里用到了这些软件:Axis 1.1.Eclipse 2.1和Eclipse的Tomcat插件2. ...
- 警告: Could not load driverClass com.mysql.cj.jdbc.Driver
警告: Could not load driverClass com.mysql.cj.jdbc.Driver 解决办法:检查每个配置值最后是否有空格,把鼠标放在配置值最后,如果前面有空格,去掉即可. ...
- WS Security 认证方式详解
本文参考文档如下: MSDN 官方详解 : http://www.microsoft.com/china/MSDN/library/WebServices/WebServices/HowASP.NET ...
- WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[WS标准篇]
元数据实际上是服务终结点的描述,终结点由地址(Address).绑定(Binding)和契约(Contract)经典的ABC三要素组成.认真阅读过<WCF技术剖析(卷1)>的读者相对会对这 ...
- mysql 时差查了13小时_Mysql 时间差了 14 或 13 小时 com.mysql.cj.jdbc.Driver
解决办法 serverTimezone=CTT spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasour ...
最新文章
- ubuntu16创建开机启动服务
- 做科研不得不学习的知识和技术的摇篮
- 自学问题 zx yl
- SAP 电商云 UI 如何知道当前的 breakpoint 是 xl - extremely large?
- Java 8可选:如何使用它
- c/c++整理--析构函数
- VMware为全球数字化基础架构提供原生安全
- Golang math/rand 源码剖析避坑指南
- 利用人工智能“解锁”世界音乐
- (转载)将h.264视频流封装成flv格式文件(二.开始动手)http://blog.csdn.net/yeyumin89/article/details/7932431...
- win98/win95
- 大土狗书屋好书推荐--《史蒂夫·乔布斯传》
- 美国大学计算机理论专业phd,揭秘美国大学计算机专业PHD申请难度
- 教育技术学就业方向_教育技术学专业就业方向与就业前景
- bat怎么发起网络请求_批处理命令教程之网络入侵
- Win10 2004 64位版本 无线网卡AX200刷成Killer AX1650x
- 护眼灯频闪是什么意思?无频闪护眼灯哪个好
- H5游戏定制开发要点全解析
- 计算机网络——哈工大李全龙
- 攻防世界-MISC之如来十三掌