1.Splitting the Field

http://usaco.org/index.php?page=viewproblem2&cpid=645

给二维坐标系中的n个点,求ans=用一个矩形覆盖所有点所用矩形面积-用两个矩形覆盖所有点所用两个矩形的最小面积和,而且两个矩形不能重合(边重合也不行)

枚举两个矩形的分割线,也就是把所有点分成两个部分,枚举分割点;先预处理每个点之前和之后的最大,最低高度

#include<algorithm>
#include<cstdio>
#include<iostream>
#include<cstring>
#define N 50015
#define down(i,r,l) for(int i=r;i>=l;i--)
#define rep(i,l,r) for(int i=l;i<=r;i++)
using namespace std;
typedef long long ll;
int l[N],r[N],l1[N],r1[N],n;
ll zs,ans;
struct node{int x,y;}s[N];
bool cmp(node x,node y) {return x.x==y.x?x.y<y.y:x.x<y.x;}
void getans() {
ll now;
sort(s+,s++n,cmp);
memset(l,,(n+)<<); memset(l1,,(n+)<<); memset(r,,(n+)<<); memset(r1,,(n+)<<);
rep(i,,n) l[i]=min(l[i-],s[i].y),r[i]=max(r[i-],s[i].y);
down(i,n,) l1[i]=min(l1[i+],s[i].y),r1[i]=max(r1[i+],s[i].y);
rep(i,,n) {
now=(ll)(s[i-].x-s[].x) * (ll)(r[i-]-l[i-]) + (ll)(s[n].x-s[i].x) * (ll)(r1[i]-l1[i]);
ans=min(ans,now);
}
}
int main ()
{
int miny,minx,maxx,maxy;
miny=minx=,maxy=maxx=;
scanf("%d",&n); rep(i,,n)
{
scanf("%d%d",&s[i].x,&s[i].y),miny=min(miny,s[i].y),maxy=max(maxy,s[i].y);;
maxx=max(maxx,s[i].x); minx=min(minx,s[i].x);
}
ans=(ll)(maxy-miny)*(ll)(maxx-minx),zs=ans;
getans();
rep(i,,n) swap(s[i].x,s[i].y);
getans();
printf("%lld\n",zs-ans);
}

2.Closing the Farm

http://usaco.org/index.php?page=viewproblem2&cpid=646

离线+并查集

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#define N 200020
#include<vector>
using namespace std;
int n,m,a[N],f[N];
bool vis[N],ok[N];
vector<int>G[N];
int find(int x){return x==f[x]?x:f[x]=find(f[x]);}
int main()
{
scanf("%d%d",&n,&m);
for(int i=,a,b;i<=m;i++)
{
scanf("%d%d",&a,&b);
G[a].push_back(b);
G[b].push_back(a);
}
for(int i=;i<=n;i++)
scanf("%d",&a[i]),f[i]=i;
int cnt=;
for(int i=n;i;i--)
{
int u=a[i];
cnt++;vis[u]=;
for(int j=;j<G[u].size();j++)
{
int v=G[u][j];
if(!vis[v])continue;
int fa=find(u),fb=find(v);
if(fa!=fb)
{
if(fa>fb)swap(fa,fb);
f[fb]=fa;
cnt--;
}
}
if(cnt==)ok[i]=;
}
for(int i=;i<=n;i++)
if(ok[i])printf("YES\n");
else printf("NO\n");
}

3.248

http://usaco.org/index.php?page=viewproblem2&cpid=647#

给定一个长度为n的序列,初始元素值为1到40之间的整数,每次操作可以将两个相邻的并且大小相同
的正整数替换成一个比原数大1的正整数。要求最大化最终数列中的最大值。
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int maxn=3e5+;
int n,ans,a,f[][maxn];
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&a);
f[a][i]=i+;
}
for(int i=;i<=;i++)
for(int j=;j<=n;j++)
{
if(!f[i][j])f[i][j]=f[i-][f[i-][j]];
if(f[i][j])ans=max(i,ans);
}
printf("%d",ans);
return ;
}

USACO 2016 US Open Contest, Gold解题报告的更多相关文章

  1. USACO 2016 February Contest, Gold解题报告

    1.Circular Barn   http://www.usaco.org/index.php?page=viewproblem2&cpid=621 贪心 #include <cstd ...

  2. USACO 2016 January Contest, Gold解题报告

    1.Angry Cows http://www.usaco.org/index.php?page=viewproblem2&cpid=597 dp题+vector数组运用 将从左向右与从右向左 ...

  3. 【二分+拓扑排序】Milking Order @USACO 2018 US Open Contest, Gold/upc_exam_6348

    目录 Milking Order @USACO 2018 US Open Contest, Gold/upc_exam_6348 PROBLEM 题目描述 输入 输出 样例输入 样例输出 提示 MEA ...

  4. USACO Section1.4 Mother's Milk 解题报告

    milk3解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...

  5. USACO Section1.2 Name That Number 解题报告

    namenum解题报告 —— icedream61 博客园(转载请注明出处)-------------------------------------------------------------- ...

  6. USACO Section1.1 Friday the Thirteenth 解题报告

    friday解题报告 —— icedream61 博客园(转载请注明出处) -------------------------------------------------------------- ...

  7. USACO Section1.3 Ski Course Design 解题报告

    skidesign解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------ ...

  8. USACO Section 1.3 Prime Cryptarithm 解题报告

    题目 题目描述 牛式的定义,我们首先需要看下面这个算式结构: * * * x * * ------- * * * <-- partial product 1 * * * <-- parti ...

  9. 【LeetCode】544. Output Contest Matches 解题报告 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 日期 题目地址:https://leetcode ...

随机推荐

  1. crontab 定时执行脚本出错,但手动执行脚本正常

    原因: crontab 没有去读环境变量,需要再脚本中手动引入环境变量,可以用source 也可以用export 写死环境变量. 为了定时监控Linux系统CPU.内存.负载的使用情况,写了个Shel ...

  2. omnibus gitlab-ce安装

    架构 关闭防火墙 [root@gitlab ~]# systemctl stop firewalld [root@gitlab ~]# systemctl disable firewalld 关闭SE ...

  3. Python学习札记(三十九) 面向对象编程 Object Oriented Program 10

    参考:使用枚举类 NOTE #!/usr/bin/env python3 from enum import Enum def main(): Mouth = Enum('Mouth', ('Jan', ...

  4. Symmetric Tree,对称树

    问题描述: Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). ...

  5. python 列表元素的筛选

    color = ['Red', 'Green', 'White', 'Black', 'Pink', 'Yellow'] color = [x ,,)] print(color)

  6. iframe与父页面传值

    最近做的项目中用到了不少iframe,而且需要实现: 从父页面获取iframe中某个元素的值或则从iframe页面获取其父页面上某个元素的值. 在网上查询了相关东西,后总结如下: (1)父页面获取if ...

  7. eclipse下maven springMVC 整合 mybatis

    参考文档:http://blog.csdn.net/zhshulin/article/details/37956105   1.搭建maven工程,具体参见我另一篇博客:http://www.cnbl ...

  8. domain---Node.js 异步异常的处理与domain模块解析

    var domain = require('domain'); app.use(function (req, res, next) { var reqDomain = domain.create(); ...

  9. 雷林鹏分享:JSP 简介

    JSP 简介 什么是Java Server Pages? JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开 ...

  10. 2243: [SDOI2011]染色 树链剖分+线段树染色

    给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段), 如“112221”由3段组 ...