BZOJ 1303 【CQOI2009】中位数图
baidu了一下bzoj水题列表。。。找到这道题。
题目大意:给定一个数t,在给定的一段包含1-n的序列中找出多少个长度为奇数子序列的中位数为t。

第一眼没看数据范围,于是开心的打了一个O(n^3)的循环,TLE....
想了想,子序列中必须包含t,所以子序列中其他数的个数必定为偶数,所以子序列中有t以及n个大于t的数和n个小于t的数(n为偶数);
因为是1-n的排列,所以也不会出现多个t的情况。。
于是发现了一个很神奇的思路,对于序列里任何一个数,把小于t的数定义为-1,等于t的数定义为0,大于t的数定义为1,所以只要求出有多少长度为奇数的子序列和为零。。
于是开心地写了一波前缀和,样例一直没过,后来发现sum【0】没算进去,于是直接在sum【1】塞了一个0,其他往后面一位移。。
然而枚举的时候脑子有病打了个二重循环,继续TLE....
后来不知道怎么搞,走了一圈回来突然发现可以用桶排的思想,找出t在序列中的位置k,枚举1-k-1,用一个数组a记录sum数组1-k-1中出现的次数且位置为奇数,数组b记录sum数组1-k-1中出现的次数且位置为偶数,然后再一重循环j枚举k-n,
看j为偶数和a【sum【j】】是否为大于零,如果是加到ans里面,当j为奇数和b【sum【j】】是否大于零,如果是加到ans里面。。 (tips:奇-偶=奇,偶-奇=奇,所以要分成两个情况处理,使序列长度为奇数);
于是又开心的交了一波 。。 Wrong Answer。。。
于是一直卡Wrong Answer。。。
第二天才发现数据范围100000然而我看错开的是10000,内心崩溃。。。 改了一下交上去就A了。。。
下面是代码,其实只有十几行:
var
n,x,t,i,j,k,ans:longint;
sum,a,b:..],注意开到-
begin
readln(n,t);
sum[]:=; //前缀和数组强行塞0;
inc(N); //sum数组有n+个数据,为了方便循环直接把n+
to n do begin
read(x); //读入
if x=t then k:=i; //找出中位数在序列中的位置
;
sum[i]:=sum[i-]+x; //前缀和
end;
do //从0枚举
= then inc(a[sum[i]])
else inc(b[sum[i]]); //桶排思想
for i:=k to n do
= then begin
inc(ans,b[sum[i]])
end
else begin
inc(ans,a[sum[i]]);
end; //枚举答案
write(ans); //输出答案
end.
BZOJ继a+b后ac的第二题,哈哈哈。。。
BZOJ 1303 【CQOI2009】中位数图的更多相关文章
- BZOJ 1303 CQOI2009 中位数图 水题
1303: [CQOI2009]中位数图 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2340 Solved: 1464[Submit][Statu ...
- BZOJ 1303: [CQOI2009]中位数图【前缀和】
1303: [CQOI2009]中位数图 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2737 Solved: 1698[Submit][Statu ...
- bzoj 1303: [CQOI2009]中位数图 数学
1303: [CQOI2009]中位数图 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...
- [BZOJ 1303] [CQOI2009] 中位数图 【0.0】
题目链接:BZOJ - 1303 题目分析 首先,找到 b 的位置 Pos, 然后将数列中小于 b 的值赋为 -1 ,大于 b 的值赋为 1 . 从 b 向左扩展,不断算 Sum[i, b - 1] ...
- bzoj 1303: [CQOI2009]中位数图
题目链接 给n个数,一个值b, 统计所有以b为中位数的序列的个数.序列长度为奇数.数字在1-n之间, 每个数只出现一次. 如果一个数大于b, 那么将他赋值为1, 小于b赋值为-1, 记录数组中b出现的 ...
- BZOJ 1303: [CQOI2009]中位数图 【水题】
给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. Input 第一行为两个正整数n和b ,第二行为1~n 的排列. Out ...
- BZOJ 1303: [CQOI2009]中位数图 问题转化_扫描_思维
将比 b 大的设成 1,比 b 小的设成 -1,开个桶左右扫描一下,乘法原理乘一乘就好了. 虽然一眼切,不过这个基于中位数的转化还是相当重要的.middle 那个主席树的题也需要该做法 Code: # ...
- BZOJ 1303: [CQOI2009]中位数图(思路题)
传送门 解题思路 比较好想的思路题.首先肯定要把原序列转化一下,大于\(k\)的变成\(1\),小于\(k\)的变成\(-1\),然后求一个前缀和,还要用\(cnt[]\)记录一下前缀和每个数出现了几 ...
- 【BZOJ】1303: [CQOI2009]中位数图(特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=1303 依旧是题解流,,,不看题解没法活,,,第一眼就是瞎搞,然后就是暴力,显然TLE..题解啊题解. ...
- 1303: [CQOI2009]中位数图
早起一AC,整天萌萌哒. Problem: 1303 User: forgot93 Language: C++ Result: Accepted Time:56 ms Memory:2108 kb * ...
随机推荐
- PLAN: step one
1. 熟悉Unix/Linux Shell和常见的命令行 (start : 7.9 - end: 7.12) 1.文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/ ...
- 关于CSS reset的思考
关于CSS reset的思考 在现在的网站设计中使用reset.css用重置整个站点的标签的CSS属性的做法很常见,但有时候我们已经为了reset而reset,我们经常看到这样的reset代码 div ...
- ASP.NET MVC实现剪切板功能
前言 关于复制粘贴的功能,好像不用劳师动众的写后端代码,JS就可以,但正如大家所知道的,兼容性问题,当然这么通用的功能怎么可能没有一个通用的方案呢,于是便找到了一款jquery插件 jquery.cl ...
- SQLSERVER利用FOR XML PATH实现分组拼接字符串
首先看一下数据结构表 IF(OBJECT_ID('tempdb..#tProduct')IS NOT NULL) DROP TABLE #tProduct SELECT * INTO #tProduc ...
- IOS7学习之路八(iOS 禁止屏幕旋转的方法)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { retu ...
- 5款最好用的开源Web快速开发工具
1.Aptana Studio Aptana是一个用于HTML,CSS和JavaScript的网站开发工具.目前在社区里有成千上万的人在开发Aptana的插件. Apatana Studio官网:ht ...
- 桥接模式及C++实现 C++设计模式-AbstractFactory抽象工厂模式
桥接模式及C++实现 桥接模式 先说说桥接模式的定义:将抽象化(Abstraction)与实现化(Implementation)分离,使得二者可以独立地变化. 桥接模式号称设计模式中最难理解的模式之一 ...
- linux 高精度定时器例子
//author:DriverMonkey //phone:13410905075 //mail:bookworepeng@Hotmail.com //qq:196568501 #include &l ...
- oracle存储过程异常捕获
在oracle中捕获异常,通过 //sql执行 exception when others then dbms_output.putline('exception'); 其中others表示捕获未命名 ...
- javaSocket与C通信
前段时间写了个web端与C服务端之间的通信不过用的是短连接 非堵塞的方式,一直想使用长连接,使tomcat启动的时候就和C服务端进行通信,但是一直没找到方法希望je的朋友能给点思路.先来看我现在的具体 ...