题目链接:https://vjudge.net/contest/147632#overview

  A题,状态压缩一下然后暴力即可。

  B题,水题,略过。

  C题,有负数,前缀和不是单调的,因此不能用尺取法。做法是枚举左端点i,然后在[i,n]这个范围内用线段树查找最左边的pre>=S+pre[i-1]的点,更新答案即可(和上次的巴比伦&&圣杯类似)。代码如下:

 #include <stdio.h>
#include <algorithm>
#include <string.h>
#include <vector>
#include <map>
#include <queue>
#include <set>
#include <iostream>
#define t_mid (l+r>>1)
#define ls (o<<1)
#define rs (o<<1|1)
#define lson ls,l,t_mid
#define rson rs,t_mid+1,r
using namespace std;
const int N = + ;
typedef long long ll;
typedef pair<int,int> pii; ll pre[N];
int n,S;
ll c[N<<];
void up(int o) {c[o] = max(c[ls], c[rs]);}
void build(int o,int l,int r)
{
if(l == r)
{
c[o] = pre[l];
return ;
}
build(lson);
build(rson);
up(o);
}
int Find(int o,int l,int r,int ql,int qr,ll f)
{
if(l == r)
{
if(pre[l] >= f) return l;
else return -;
}
int ans = -;
if(qr <= t_mid)
{
if(c[ls] >= f) return Find(lson,ql,qr,f);
}
else if(ql > t_mid)
{
if(c[rs] >= f) return Find(rson,ql,qr,f);
}
else
{
if(c[ls] >= f) ans = Find(lson,ql,t_mid,f);
if(ans == - && c[rs] >= f) ans = Find(rson,t_mid+,qr,f);
}
return ans;
}
void solve()
{
int ans = -;
for(int i=;i<=n;i++)
{
int now = Find(,,n,i,n,pre[i-]+S);
if(now != -)
{
if(ans == -) ans = now-i+;
else ans = min(ans, now-i+);
}
}
printf("%d\n",ans);
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&S);
for(int i=;i<=n;i++)
{
int t;
scanf("%d",&t);
pre[i] = pre[i-] + t;
}
build(,,n);
solve();
}
}

  D题,比赛时手推了个O(n)的公式被卡- -,O(n/2)能过。做法是枚举i,在i*i的正方形内,如果i是奇数,那么里面最多有i个满足的矩形,i是偶数,则不存在。然后这样的个数有(a-i+1)*(b-i+1)个。枚举i求个和即可。当然预处理前缀和能O(1)解决。顺便记一下,前n项平方和是n(n+1)(2n+1)/6,奇数项的平方和为

 1*1+3*3+5*5+...+(2n-1)*(2n-1) = 1/3*n*(2n-1)(2n+1)。代码如下:
 #include <stdio.h>
#include <algorithm>
#include <string.h>
#include <vector>
#include <map>
#include <queue>
#include <set>
#include <iostream>
using namespace std;
const int N = + ;
typedef long long ll;
typedef pair<int,int> pii; int main()
{
ll a,b;
while(scanf("%lld%lld",&a,&b) == )
{
if(a == && b == ) break;
ll ans = ;
if(a > b) swap(a,b);
for(int i=;i<=a;i+=) ans += (ll)i*(a-i+)*(b-i+);
printf("%lld\n",ans);
}
return ;
}

  E题,暴力枚举再组合数即可。

2017 ZSTU寒假排位赛 #2的更多相关文章

  1. 2017 ZSTU寒假排位赛 #7

    题目链接:https://vjudge.net/contest/149498#overview. A题,水题,直接按照题意模拟一下即可. B题,我用的是线段树.大力用的差分标记(上次听zy说过,下次再 ...

  2. 2017 ZSTU寒假排位赛 #1

    题目链接:https://vjudge.net/contest/147102#overview. A题:给出一堆的点,要找出两条垂直的直线,一条与x轴呈45度.-->使得所有的点到任意一条直线的 ...

  3. 2017 ZSTU寒假排位赛 #8

    题目链接:https://vjudge.net/contest/149845#overview. A题,水题. B题,给出 p个 第一个人的区间 和 q个第二个人的区间,问[l,r]中有多少个整数满足 ...

  4. 2017 ZSTU寒假排位赛 #6

    题目链接:https://vjudge.net/contest/149212#overview. A题,水题,略过. B题,水题,读清题意即可. C题,数学题,如果把x表示成x=nb+m,则k=n/m ...

  5. 2017 ZSTU寒假排位赛 #5

    题目链接:https://vjudge.net/contest/148901#overview. A题,排序以后xjbg即可. B题,弄个数组记录当前列是不是删除以及当前行是不是已经大于下一行然后乱搞 ...

  6. 2017 ZSTU寒假排位赛 #4

    题目链接:https://vjudge.net/contest/148543#overview. A题:n个罪犯,每个人有一个犯罪值,现在要从里面选出连续的c个人,每个人的犯罪值都不能超过t,问选法的 ...

  7. 2017 ZSTU寒假排位赛 #3

    题目链接:https://vjudge.net/contest/147974#overview. A题,费用流,不会..跳过了. B题,给一个图,问至少添加几条边能成为强连通图.显然缩点,要使得成为一 ...

  8. Codeforces Round #341 (Div. 2)

    在家都变的懒惰了,好久没写题解了,补补CF 模拟 A - Wet Shark and Odd and Even #include <bits/stdc++.h> typedef long ...

  9. 2017杭电ACM集训队单人排位赛 - 6

    2017杭电ACM集训队单人排位赛 - 6 排名 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 59 1 X X 1 1 X X 0 1 ...

随机推荐

  1. 使用RPM包安装、配置和拆卸MySQL

    通过rpm包安装.配置及卸载mysql的详细过程. 以MySQL-server-4.0.14-0.i386.rpm为例,放在/usr/src目录下 cd /usr/src rpm -ivh MySQL ...

  2. CentOS-Desktop版service network restart报错

    出错情况: [root@localhost]# service network restart正在关闭接口 eth0: 设备状态:3 (断开连接)                            ...

  3. jq实现点击按钮后倒计时,多用于手机验证

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. mvc ChildActionOnly + ActionName的用法

    ChildActionOnly的目的主要就是让这个Action不通过直接在地址栏输入地址来访问,而是需要通过RenderAction来调用它. <a href="javascript: ...

  5. cakephp , the subquery (2)

    Cakephp 框架帮我们做了很多的工作,的确省了我们很多工作,提高了效率. 但是,碰到一些比较复杂的查询时,还是有些问题,官方的cookbook api 有说明一些详细的用法,但感觉还是不太够,有些 ...

  6. UIApearance

    转载自:http://www.cocoachina.com/ios/20150723/12671.html 文章开头先援引一下Mattt Thompson大神在UIApearance里的一句话吧: 1 ...

  7. PAT (Advanced Level) 1071. Speech Patterns (25)

    简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  8. Python大神成长之路: 第一次学习记录

    一.Python发展史 二.Python2 or 3 博主选择了Python3. 从官网下载Python  www.python.org Windows安装python3.5.python2.7.安装 ...

  9. Bootstrap环境及屏幕适配-(一)

    一.环境搭建 1.目录结构 需要引用的文件有, jquery.js.bootstrap.min.js 和 bootstrap.min.css 文件,下面看下在线的文档Hello Word <!D ...

  10. js MD5加密后的字符串

    js MD5加密后的字符串 <script language="JavaScript"> /************************************** ...