感觉这个题挺好的。给定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相关推荐

  1. mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string

    mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from strin ...

  2. 解题报告:POJ 3281 Dining(最大流 / “三分图”建图)

    B.POJ 3281 DiningDiningDining(最大流/建图模板)[省选/NOI- ] 有 F 种食物和 D 种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一 种食物和一种饮料.现 ...

  3. AutoCAD WS API发布【转】

    最近几个月里我们了解到,用户最大的需求之一就是希望我们面向开发者开放API,使之能够在自己的应用程序中利用AutoCAD WS的web功能和移动功能. 这些API依靠的是基于 WebDAV协议的行业标 ...

  4. Happy WS 之 控制台 -- Happy Console (一)

    为什么80%的码农都做不了架构师?>>>    Webit Script 是啥? ==>http://www.oschina.net/p/webit-script OK 先上效 ...

  5. [WS]使用Axis发布简单的Web服务

    使用Axis,要发布一个Web服务非常简单,简直不能再简单了,尽管看起来过程和相关代码有些长.我这个帖子里用到了这些软件:Axis 1.1.Eclipse 2.1和Eclipse的Tomcat插件2. ...

  6. 警告: Could not load driverClass com.mysql.cj.jdbc.Driver

    警告: Could not load driverClass com.mysql.cj.jdbc.Driver 解决办法:检查每个配置值最后是否有空格,把鼠标放在配置值最后,如果前面有空格,去掉即可. ...

  7. WS Security 认证方式详解

    本文参考文档如下: MSDN 官方详解 : http://www.microsoft.com/china/MSDN/library/WebServices/WebServices/HowASP.NET ...

  8. WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[WS标准篇]

    元数据实际上是服务终结点的描述,终结点由地址(Address).绑定(Binding)和契约(Contract)经典的ABC三要素组成.认真阅读过<WCF技术剖析(卷1)>的读者相对会对这 ...

  9. mysql 时差查了13小时_Mysql 时间差了 14 或 13 小时 com.mysql.cj.jdbc.Driver

    解决办法 serverTimezone=CTT spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasour ...

最新文章

  1. ubuntu16创建开机启动服务
  2. 做科研不得不学习的知识和技术的摇篮
  3. 自学问题 zx yl
  4. SAP 电商云 UI 如何知道当前的 breakpoint 是 xl - extremely large?
  5. Java 8可选:如何使用它
  6. c/c++整理--析构函数
  7. VMware为全球数字化基础架构提供原生安全
  8. Golang math/rand 源码剖析避坑指南
  9. 利用人工智能“解锁”世界音乐
  10. (转载)将h.264视频流封装成flv格式文件(二.开始动手)http://blog.csdn.net/yeyumin89/article/details/7932431...
  11. win98/win95
  12. 大土狗书屋好书推荐--《史蒂夫·乔布斯传》
  13. 美国大学计算机理论专业phd,揭秘美国大学计算机专业PHD申请难度
  14. 教育技术学就业方向_教育技术学专业就业方向与就业前景
  15. bat怎么发起网络请求_批处理命令教程之网络入侵
  16. Win10 2004 64位版本 无线网卡AX200刷成Killer AX1650x
  17. 护眼灯频闪是什么意思?无频闪护眼灯哪个好
  18. H5游戏定制开发要点全解析
  19. 计算机网络——哈工大李全龙
  20. 攻防世界-MISC之如来十三掌

热门文章

  1. 2022山东省安全员C证考试模拟100题模拟考试平台操作
  2. DPDK系列(二)——性能提升
  3. CSS float 浮动属性介绍
  4. 杏子语录(2019年11月)
  5. Java版数独算法实现
  6. 网购秒杀系统案例分析
  7. UI设计是什么?UI设计师的工作内容有哪些?了解一下
  8. hmcl离线模式可以联机吗_我的世界hmcl离线模式怎么联机
  9. shell各种截取*(要你想要的)
  10. linux usleep 函数,Linux 高精確的時序(sleep, usleep,nanosleep)