USACO 2014 US Open Fair Photography /// 技巧

题目大意:

给定n头奶牛 给定n头奶头所在位置和品种 品种只有G H两种

求一段区间的长度 要求区间内包含的品种满足各品种的数量相同

将一个品种的值设为1 另一个设为-1

假设 i<j 而 1~i的奶牛前缀和 与 1~j的奶牛前缀和 相等

说明 i+1~j 的奶牛总和为0 即两种奶牛的数量相同

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f
#define mem(i,j) memset(i,j,sizeof(i))
#define inc(i,l,r) for(int i=l;i<=r;i++)
#define dec(i,r,l) for(int i=r;i>=l;i--)
#define gcd(i,j) __gcd(i,j);
const int N=1e5+5;
const int mod=1e9+7;
const double eps=1e-8;

int n;
struct NODE { int x,t; }a[N];
bool cmp(NODE p,NODE q) { return p.x<q.x; }
int last[N<<1];

int main()
{
    while(~scanf("%lld",&n)) {
        inc(i,1,n) {
            scanf("%d",&a[i].x);
            char c; scanf(" %c",&c);
            if(c==‘G‘) a[i].t=1;
            else a[i].t=-1;
        }
        sort(a+1,a+1+n,cmp);
        mem(last,0); last[N]=a[1].x;
        int sum=N, ans=0;
        inc(i,1,n) {
            sum+=a[i].t; int t=ans;
            if(last[sum]==0) last[sum]=a[i+1].x;
            else ans=max(ans,a[i].x-last[sum]);
        }
        inc(i,1,n) {
            int j=i;
            while(j<=n && a[j].t==a[i].t) j++;
            j--; ans=max(ans,a[j].x-a[i].x);
            i=j;
        } // 只包含一个品种的情况
        printf("%d\n",ans);
    }

    return 0;
}

原文地址:https://www.cnblogs.com/zquzjx/p/10548914.html

时间: 2024-10-17 19:16:26

USACO 2014 US Open Fair Photography /// 技巧的相关文章

USACO翻译:USACO 2014 DEC Silver三题

USACO 2014 DEC SILVER 一.题目概览 中文题目名称 回程 奶牛IDs 搬家 英文题目名称 piggyback cowids relocate 可执行文件名 piggyback cowids relocate 输入文件名 piggyback.in cowids.in relocate.in 输出文件名 piggyback.out cowids.out relocate.out 每个测试点时限 1秒 1秒 1秒 测试点数目 10 10 10 每个测试点分值 10 10 10 比较

USACO翻译:USACO 2014 JAN三题(2)

USACO 2014 JAN 一.题目概览 中文题目名称 队伍平衡 滑雪录像 滑雪场建设 英文题目名称 bteams recording skicourse 可执行文件名 bteams recording skicourse 输入文件名 bteams.in recording.in skicourse.in 输出文件名 bteams.out recording.out skicourse.out 每个测试点时限 1秒 1秒 1秒 测试点数目 10 10 10 每个测试点分值 10 10 10 比

USACO翻译:USACO 2014 MARCH Silver三题

USACO 2014 MARCH 一.题目概览 中文题目名称 农田灌溉 懒牛 牛叫 英文题目名称 irrigation lazy mooomoo 可执行文件名 irrigation lazy mooomoo 输入文件名 irrigation.in lazy.in mooomoo.in 输出文件名 irrigation.out lazy.out mooomoo.out 每个测试点时限 1秒 1秒 1秒 测试点数目 10 10 10 每个测试点分值 10 10 10 比较方式 全文比较 全文比较 全

BZOJ3540: [Usaco2014 Open]Fair Photography

3540: [Usaco2014 Open]Fair Photography Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 72  Solved: 29[Submit][Status] Description FJ's N cows (2 <= N <= 100,000) are standing at various positions along a long one-dimensional fence. The ith cow is sta

2014四川造价工程师考试技巧,题型题量,高分在手

赶考在线总结了以下十点知识点记忆技巧:1. 建设项目总投资包括固定资产投资(又叫工程造价)和流动资产投资(又叫流动资金). 2. 固定资产投资包括:设备工器具购置费(设备购置费.工器具及生产家具购置费).建筑安装工程费(直接费.间接费.利润.税金).工程建设其他费(土地使用费.与项目建设有关的费用.与未来企业生产经营有关的费用).预备费(基本预备费.涨价预备费).建设期贷款利息.固定资产投资方向调节税. 3. 基本预备费=(设备工器具购置费+建筑安装工程费+工程建设其他费)*基本预备费率 4.

bzoj 3540: [Usaco2014 Open]Fair Photography

3540: [Usaco2014 Open]Fair Photography Description FJ's N cows (2 <= N <= 100,000) are standing at various positions along a long one-dimensional fence. The ith cow is standing at position x_i (an integer in the range 0...1,000,000,000) and is eithe

USACO翻译:USACO 2014 US Open 三题

USACO 2014 US Open 一.题目概览 中文题目名称 牧场装饰 里程表 牛像展览 英文题目名称 decorate odometer fairphoto 可执行文件名 decorate odometer fairphoto 输入文件名 decorate.in odometer.in fairphoto.in 输出文件名 decorate.out odometer.out fairphoto.out 每个测试点时限 1秒 1秒 1秒 测试点数目 10 10 10 每个测试点分值 10 1

USACO 2014 US Open Dueling GPS&#39;s /// SPFA

题目大意: 给定n个点m条边的有向图 有两个GPS 分别认为 A[i]到B[i] 的一条边的花费是P[i].Q[i] 当当前走的边不是GPS认为的最短路上的边就会被警告 即两个GPS都不认为是最短路上的边时 会被警告两次 求从点1走到点n被警告次数最少是多少次 https://blog.csdn.net/oakley_/article/details/52510465 按P[i]反向建图 再从n跑最短路到1 然后遍历所有的边判断将不是最短路的边C[i]+1 Q[i]也同样 最后按C[i]从1跑最

[BZOJ3535][Usaco2014 Open]Fair Photography

试题描述 FJ's N cows (1 <= N <= 100,000) are standing at various positions along a long one-dimensional fence. The ith cow is standing at position x_i (an integer in the range 0...1,000,000,000) and has breed b_i (an integer in the range 1..8). No two c