【Usaco2016 FEB】Fenced In

【USACO题库】2.3.2 Cow Pedigrees奶牛家谱 题解 题目描述 农民约翰准备购买一群新奶牛。 在这个新的奶牛群中, 每一个母亲奶牛都生两小奶牛。这些奶牛间的关系可以用二叉树来表示。这些二叉树总共有N个节点(3 树的高度等于K(1 有多少不同的家谱结构? 如果一个家谱的树结构不同于另一个的, 那么这两个家谱就是不同的。输出可能的家谱树的个数除以9901的余数。 INPUT FORMAT 第1行: 两个空格分开的整数, N和K。 SAMP 阅读详情

首先,大膜htn
然后,分析一下。
实际上,画个图,一下就可以找出规律了。
我们可以先处理出每一段门的费用,再排序,根据题目的特殊性,可以知道整个一行或一列的费用都可以很方便的表示出来。
根据最小生成树的思想,每次可以找出最小的费用,显然将那一整行都连通一定是最优的。然后进一步分析,又可以看到一个问题。每次打开的时候,如果本来就有连通的,就不用打开了。这个问题很容易可以解决,因为我们每一次都是开的一行或一列的门,可以找出规律:第一次开横行或者竖行的门,肯定是所有的门都要开的。我们再来考虑横行,如果不是第一次开,并且有些竖行已经被打开了,那么我们就只需要开本来要开的数减去竖行行数加上一的门的数量了。竖行也是一样。于是这题就解决了
上代码

#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;

const int maxn = 25000 + 10;

int ys[maxn], xs[maxn], right, up, numx, numy;

void Readin(){
    scanf("%d %d %d %d", &right, &up, &numx, &numy);
    for(int i = 1; i <= numx; i ++)
        scanf("%d", &xs[i]);
    sort(xs + 1, xs + numx + 1);
    xs[++ numx] = right;
    for(int i = numx; i >= 1; i --)
        xs[i] = xs[i] - xs[i - 1];
    sort(xs + 1, xs + numx + 1);
    for(int i = 1; i <= numy; i ++)
        scanf("%d", &ys[i]);
    sort(ys + 1, ys + numy + 1);
    ys[++ numy] = up;
    for(int i = numy; i >= 1; i --)
        ys[i] = ys[i] - ys[i - 1];
    sort(ys + 1, ys + numy + 1);
}

void Solve(){
    int cnt = 0, pointerx = 1, pointery = 1, countx = 0, county = 0;
    ll ans = 0;
    bool havex = 0, havey = 0;
    while(cnt < numx * numy - 1){
        if(xs[pointerx] < ys[pointery]){
            if(!havey || !havex){
                cnt += numy - 1;
                ans += 1ll * (numy - 1) * xs[pointerx];
            }
            else{
                cnt += numy - countx;
                ans += 1ll * (numy - countx) * xs[pointerx];
            }
            havey = 1;
            county ++;
            pointerx ++;
        }
        else{
            if(!havex || !havey){
                cnt += numx - 1;
                ans += 1ll * (numx - 1) * ys[pointery];
            }
            else{
                cnt += numx - county;
                ans += 1ll * (numx - county) * ys[pointery];
            }
            havex = 1;
            countx ++;
            pointery ++;
        }
    }
    printf("%I64d", ans);
}

void Check(){
    for(int i = 1; i <= numx; i ++)
        printf("%d ", xs[i]);
    printf("\n");
    for(int i = 1; i <= numy; i ++)
        printf("%d ", ys[i]);
    printf("\n");
}

int main(){
    freopen("fencedin.in", "r", stdin);
    freopen("fencedin.out", "w", stdout);
    Readin();

//  Check();

    Solve();
    return 0;
}

相关推荐

Flowable高级篇 -6.8.0 最全表结构说明-主要表结构字段注释

flowable 28张表 详细

billzhen的博客 1万+

打卡信奥刷题(1245)用C++实现信奥 P2759 奇怪的函数

使得xx达到或超过n位数字的最小正整数x是多少?

Loge谈信奥--一个专注于信奥人的博客 5401

lgv20刷twrp_LG港版v20 root

这是LG港版v20 root,整理了一下有关LG港版v20的官方固件包了,有没有需要的呢,这里把固件包整理一下也是方便大家以后好下载了,因此有一些机友还是不知道在哪里下载官方的rom包,在这里说的固件rom包也就是原版的系统包了,大家可以放心的使用,这些系统包也都是支持线刷的,大家下载下来解压出来根据里面的相关教程来操作就可以了,很简单的,如果你也需要的话就一起来看看吧。软件提示注意!! 此过程会...

weixin_33212263的博客 5387

USACO 2016 US Open Contest总结

比赛链接 T1 Splitting the Field 题目链接 题目大意:平面上有一些点,问用一个矩形把他们都框起来比用两个矩形都框起来花费面积要大多少(矩形可以使一条线)。 思路:考虑一个矩形变成两个矩形,要么是竖着切一刀要么是横着切一刀。所以我们统计一个点左边和一个点右边最高最远的点在哪里,枚举求出答案即可。 #include &lt;iostream&gt; #include...

szh_0808的博客 426

从USB相机标定到Aruco码精准定位:基于aruco-ros的机器人视觉实践

本文详细介绍了基于aruco-ros的机器人视觉实践,从USB相机标定到Aruco码精准定位的全流程。通过实战案例和优化技巧,展示了Aruco码在机器人导航中的高精度位姿识别能力,帮助开发者快速实现毫米级视觉定位系统。

weixin_27310417的博客 487

HP DL380G9 iLO降级Degrated及存储失败storage Failed报错如何解决?

HP DL380G9 iLO降级(Degrated)及存储失败(storage Failed)报错如何处理? ©Lander Zhang 专注外企按需IT基础架构运维服务,IT Helpdesk 实战培训践行者https://blog.51cto.com/lander 2018/09/7 7:30 问题描述 某沙特公司搭建的虚拟化环境中有一台ESXi主机报Storage Fialed警告但是仍...

weixin_34226182的博客 4849

usaco2016open silver1 reduce

Sliver1农夫约翰的N(5头牛被定在了平面内的不同的位置。他想用栅栏(平行于x和y轴)围住所有的牛。他想这个栅栏尽可能小(牛在边界上也被视作围住)。他因为牛奶产量低而感到经费紧张,所以他想卖掉三头牛再围起剩下的牛。请算出栅栏围出的最小面积。输入:第一行输入n剩下2-n+1行,输入每头牛的位置。输出:最小面积。示例input:61 17 810 98 124 10050 7output:12==

lkb 的小屋 510

我的AI学习 ai维护工具之langfuse

as_type: Optional[Literal[‘generation’]] = None, # 将记录定义为 Observation (LLM 调用)transform_to_string: Optional[Callable[[Iterable], str]] = None # 将输出转为 string。要用LangFuse的云服务,首先要在LangFuse官网上注册,注册完后将页面拉倒最后,点免费的SignUp,API文档:https://api.reference.langfuse.com/

liubaobin的博客 4095

USACO——Closing the farm

题目背景 USACO 2016 US Open Contest, Silver Problem 3 题目描述 FJ 和他的奶牛们正在计划离开小镇做一次长的旅行,同时 FJ 想临时地关掉他的农场以节省一些金钱。 这个农场一共有被用 M 条双向道路连接的 N 个谷仓(1≤N,M≤3000)。为了关闭整个农场,FJ 计划每一次关闭掉一个谷仓。当一个谷仓被关闭了,所有的连接到这个

McDonnell_Douglas的博客 653

OpenClaw对接本地大模型:Llama3/Qwen/ChatGLM全适配,完全私有化部署

OpenClaw对接本地大模型,是企业级AI智能体落地的必经之路——它不仅解决了数据隐私和合规问题,还能大幅降低成本、提升响应速度、实现定制化。这篇文章我给大家完整拆解了两套部署方案:Ollama(新手首选,5分钟搞定)和vLLM(生产环境首选,高性能),覆盖了Llama3/Qwen/ChatGLM三大主流模型,还有真实的落地案例、高级优化、踩坑避坑指南,看完你就能零代码完成完全私有化的部署。从零开发自定义工具,给OpenClaw添加专属业务能力;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 809

2.STM32F407ZGT6 学习笔记-移植 FreeRTOS

1. 在工程下建议FreeRTOS文件夹 2. 在FreeRTOS文件夹下建立 src 和 port 文件夹 (src用于存放freertos源码,port文件夹存放内存和接口相关的文件) 3. 复制freertos/source文件夹下所有c文件复制到刚刚建立的freertos/src目录下 4. 复制FreeRTOSv9.0.0\FreeRTOS\Source\portablex下的MemMang和RVDS文件夹复制到刚刚建立的port问价夹下 5. 将FreeRTOSv9.0.0\FreeRTOS

Car12 1233

2023.7.6

枚举

2303_78962162的博客 262

ZYNQ PS-PL数据交互方式总结

一,中断 二,IO方式:MIO EMIO GPIO 三,BRAM或FIFO或EMIF (1)通过BRAM实现PL/PS之间交互 PS 的配置如下图所示。使能 M_AXI_GP0 口,将 FCLK_CLK0 设为 100MHz,使能 PL 至 PS 的中断。 AXI BRAM Controller IP 核连接 PS 的 M_AXI_GP0 口和 BRAM,完成 AXI 接口至 BRAM 接口的转换。 添加BRAM,将BRAM设置为双口RAM,将PORTA与AXI B...

wangjie36的博客 1万+

【Usaco2016 FEB】Fenced In 题解

题目Farmer John has realized that many of his cows are strangely agoraphobic (being fearful of large open spaces). To try and make them less afraid of grazing, he partitions his large field into a number

恐怖如斯 1022

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

USACO 2016 Feb Fenced In 最小生成树

Farmer John has realized that many of his cows are strangely agoraphobic (being fearful of large open spaces). To try and make them less afraid of grazing, he partitions his large field into a numbe

black_miracle的博客 518

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

打卡信奥刷题(3001)用C++实现信奥题 P6171 [USACO16FEB] Fenced In G

摘要: 题目描述了一个矩形牧场被水平和垂直栅栏分割成若干区域的问题。Farmer John需要通过拆除部分栅栏使所有区域连通,且要求拆除的栅栏总长度最短。解法采用Kruskal最小生成树算法,将栅栏视为边,区域视为节点,按长度排序后逐步连接不连通的区域。输入包含栅栏位置,输出拆除栅栏的最小总长度。示例代码使用并查集实现Kruskal算法,处理最多2000个栅栏的大规模数据,确保结果正确性和高效性。

Loge谈信奥--一个专注于信奥人的博客 318

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

angryA (USACO 2016 JAN Bronze)

在正文之前先说点题外话。 寒假以来,由于自身的种种原因,我在OI方面没有用功,既没有刷题也没有进行总结,甚至连题库和博客都没有登录过,在此要认真检讨。而且今天的创新班也让我发现自己开始出现的一些弊病:心态方面,方法和习惯等等。为什么自己开始出现这些问题?如何解决?还是要靠良好的心态为基础。希望新的学期里戒骄戒躁,坚持刷题和写博客,日积月累慢慢进步。毕竟身边厉害的同学和学长很多,自己没有任何借口来偷

lkb 的小屋 577

美国血统(模板 二叉树)

描述 农夫约翰非常认真地对待他的奶牛们的血统。然而他不是一个真正优秀的记帐员。他把他的奶牛们的家谱作成二叉树,并且把二叉树以更线性 的”树的中序遍历“和”树的前序遍历“的符号加以记录而不是用图形的方法。 你的任务是在被给予奶牛家谱的”树中序遍历“和”树前序遍历“的符号后,创建奶牛家谱的”树的后序遍历“的符号。每一头奶牛的姓名被 译为一个唯一的字母。(你可能已经知道你可以在知道树的两种遍历以后可以经常地重建这棵树。)显然,这里的树不会有多余26个的顶点。 这是在样例输入和样例输出中的树的图形表达方式:

无知的渣渣的博客 685

【最小生成树】[USACO 2016 February Contest, Gold]Fenced In

题目大意 农夫FJ的奶牛们有空旷恐惧症,所以,FJ打算在他的农场围上篱笆。他的农场是一个矩形区域。左上角的坐标是(0,0),右下角的坐标是(A,B),FJ修建了n(0<=n<=2000)个竖直的篱笆,其横坐标分别为a1,a2,a3,……,an,其中0 分析 可以轻易地看出这道题是要求最小生成树,处理出连通块之间栅栏的长度然后做最小生成树即可。 但是这样会Ti...

weixin_30588827的博客 200

[USACO16FEB]围栏Fenced In Platinum

题目:洛谷P3141。 题目大意:有一个方形区域,被分成若干区域。现在要去掉若干条围栏,使得所有区域连通,求最少去掉多少长度的围栏。 解题思路:贪心。建议画图思考。 先对围栏位置进行排序,然后相邻两条求差,再对差排序。 可以知道,每次取的是最短的一条围栏,结果一定是最优的(横向和竖向也要最短的优先),所以直接整行整列删即可。 但是全删了就会造成浪费,如果两个块已经连通,则不需要...

141

American Heritage USACO 3.4 (二叉树前序中序求后序)

就是根据二叉树的中序,前序,求后序,我想法是先求出二叉树再后序出来。开始感觉想起来很混乱,后来拿笔在纸上写一写就清楚很多了 这题不是很难,思路要清晰即可 1 /* 2 3 ID: hubiao cave 4 5 PROG: heritage 6 7 LANG: C++ 8 9 */ 10 11 12 13 14 #include&...

weixin_30781775的博客 133

USACO刷题之路,开始了

几天前,重新开始刷题了。 重新刷题有几个原因: 1、曾经的OI经历,如今除了悟性高些、知识多些,大多已经遗忘。不希望真的让之前的OI水平就这么丢了。 2、越来越觉得,刷题真的是一件很开心的事情。大学中,很少有东西能够挑战自己的思维了,也不知以后会不会有很多。OI题,真的好宝贵! 3、不舍。喜欢竞赛、喜欢竞赛题,现在我可以确定地说,这将是我一生的爱好。 之所以选择USACO,是因为这个题库...

weixin_30421809的博客 373

洛谷 P3137 [USACO16FEB]圆形谷仓Circular Barn

贪心

sdfzrlt的博客 1554

【USACO】2016 Open 262144

262144 Description Bessie likes downloading games to play on her cell phone, even though she does find the small touch screen rather cumbersome to use with her large hooves. She is particularly intrig

Bobby_Z的博客 722

【最小生成树】【并查集】[USACO2016 金组]Fenced In

题目描述 Farmer John has realized that many of his cows are strangely agoraphobic (being fearful of large open spaces). To try and make them less afraid of grazing, he partitions his large fiel...

weixin_30329623的博客 201

近期刷USACO金组简化版解题报告

近期刷USACO的金组试题,以下推荐几道并给出大体思路,仅供参考: PKU 3169:比较基础的一个差分约束。很值得看看,Bellman-Ford算法的应用很巧妙,用SPFA解决也可以。 PKU 2455:比较经典的二分网络流。一类图上路径转化为网络流的方法。 PKU 2228:DP,需要滚动,仔细考虑有环的处理情况 PKU 3167:非常好的一道KMP的题目,要仔

天空の行者 1326
上一篇: 【Usaco2016 FEB】Load Balancing【线段树 + 二分】
下一篇: 【Usaco2015 JAN】Moovie Mooving【DP】(发现自己有点不会写二分啊)
YoDReAMfY
博客等级 码龄11年 2粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值