奶牛

安慰奶牛 最小生成树kruskal 图解 C++

谁说我不能喝 提交于 2019-11-28 08:14:55
如果对最小生成树的Kruskal有了解可以只看黄色字体部分 , 斜体字方便小白加强理解 , 能懂的省时间的可以不看 。 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路。道路被用来连接N个牧场,牧场被连续地编号为1到N。每一个牧场都是一个奶牛的家。FJ计划除去P条道路中尽可能多的道路,但是还要保持牧场之间 的连通性。你首先要决定那些道路是需要保留的N-1条道路。第j条双向道路连接了牧场Sj和Ej(1 <= Sj <= N; 1 <= Ej <= N; Sj != Ej),而且走完它需要Lj的时间。没有两个牧场是被一条以上的道路所连接 (最后没有形成环) 。奶牛们非常伤心,因为她们的交通系统被削减了。你需要到每一个奶牛的住处去安慰她们。每次你到达第i个牧场的时候(即使你已经到过),你必须花去Ci的时间和奶牛交谈。你每个晚上都会在同一个牧场(这是供你选择的)过夜,直到奶牛们都从悲伤中缓过神来。在早上 起来和晚上回去睡觉的时候,你都需要和在你睡觉的牧场的奶牛交谈一次。这样你才能完成你的交谈任务。假设Farmer John采纳了你的建议,请计算出使所有奶牛都被安慰的最少时间。 输入格式 第1行包含两个整数N和P。 接下来N行,每行包含一个整数Ci。 接下来P行,每行包含三个整数Sj, Ej和Lj。 输出格式 输出一个整数, 所需要的总时间

HDU 6470:Count(矩阵快速幂)

情到浓时终转凉″ 提交于 2019-11-27 18:55:14
Count Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1187 Accepted Submission(s): 433 Problem Description Farmer John有n头奶牛. 某天奶牛想要数一数有多少头奶牛,以一种特殊的方式: 第一头奶牛为1号,第二头奶牛为2号,第三头奶牛之后,假如当前奶牛是第n头,那么他的编号就是2倍的第n-2头奶牛的编号加上第n-1头奶牛的编号再加上自己当前的n的三次方为自己的编号. 现在Farmer John想知道,第n头奶牛的编号是多少,估计答案会很大,你只要输出答案对于123456789取模. Input 第一行输入一个T,表示有T组样例 接下来T行,每行有一个正整数n,表示有n头奶牛 (n>=3) 其中,T=10^4,n<=10^18 Output 共T行,每行一个正整数表示所求的答案 Sample Input 5 3 6 9 12 15 Sample Output 31 700 7486 64651 527023 思路 给出递推式:f[i]=f[i-1]+2*f[i-2]+n^3 可以构造矩阵: 来源: https://www.cnblogs.com/Friends-A

C Cow XOR 奶牛异或

老子叫甜甜 提交于 2019-11-27 02:42:43
时间限制 : 10000 MS 空间限制 : 65536 KB 问题描述 农民约翰在喂奶牛的时候被另一个问题卡住了。他的所有N(1 <= N <= 100,000)个奶牛在他面前排成一行(按序号1..N的顺序),按照它们的社会等级排序。奶牛#1有最高的社会等级,奶牛#N最低。每个奶牛同时被指定了一个不唯一的附加值,这个数在0..2^21 - 1的范围内。 帮助农民约翰找出应该从哪一头奶牛开始喂,使得从这头奶牛开始的一个连续的子序列上,奶牛的附加值的异或最大。 如果有多个这样的子序列,选择结尾的奶牛社会等级最高的。如果还不唯一,选择最短的。 输入格式 第1行:一个单独的整数N。 第2到N + 1行:N个0..2^21 - 1之间的整数,代表每头奶牛的被赋予的数。第j行描述了社会等级j - 1的奶牛。 输出格式 第 1 行: 3个空格隔开的整数,分别为:最大的异或值,序列的起始位置、终止位置。 时限0.5秒 样例输入 5 1 0 5 4 2 样例输出 6 4 5 提示 最大异或值为6,从第4个开始喂,到第5个结束。 4 异或 2 = 6 (100) 异或 (010) = (110) 【分析】 【标程】 来源: https://www.cnblogs.com/Limbo-To-Heaven/p/11338947.html

【单间栈】向右看齐Look Up

℡╲_俬逩灬. 提交于 2019-11-27 02:33:17
向右看齐Look Up 题目 约翰的N(1≤N≤10^5)头奶牛站成一排,奶牛i的身高是Hi(l≤Hi≤1,000,000).现在,每只奶牛都在向右看齐.对于奶牛i,如果奶牛j满足i<j且Hi<Hj,我们可以说奶牛i可以仰望奶牛j. 求出每只奶牛离她最近的仰望对象. 输入 第 1 行输入 N,之后每行输入一个身高 H_i。 输出 共 N 行,按顺序每行输出一只奶牛的最近仰望对象,如果没有仰望对象,输出 0。 输入样例 6 3 2 6 1 1 2 输出样例 3 3 0 6 6 0 说明 【输入说明】6 头奶牛的身高分别为 3, 2, 6, 1, 1, 2. 【输出说明】奶牛#1,#2 仰望奶牛#3,奶牛#4,#5 仰望奶牛#6,奶牛#3 和#6 没有仰望对象。 数据范围 对于 20%的数据: 1≤N≤10; 对于 50%的数据: 1≤N≤1,000; 对于 100%的数据:1≤N≤100,000;1≤H_i≤1,000,000; 解题思路 其实这道题就是一道单间栈,先把第一个奶牛给扔进去,然后再判断是否有比它大的,如果有大的就出栈,比它小的就把它指向栈里的奶牛然后重复执行即可. 程序如下 # include <iostream> # include <algorithm> # include <cstdio> # include <cstring> using namespace

【POJ - 3176】牛保龄球 (简单dp)

走远了吗. 提交于 2019-11-26 20:45:06
牛保龄球 直接中文了 Descriptions 奶牛打保龄球时不使用实际的保龄球。它们各自取一个数字(在0..99范围内),然后排成一个标准的保龄球状三角形,如下所示: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 然后其他奶牛从其尖端开始穿过三角形并“向下”移动到两个对角相邻的奶牛中的一个,直到到达“底部”行。奶牛的得分是沿途参观的奶牛数量的总和。得分最高的母牛赢得了那个框架。 给定具有N(1 <= N <= 350)行的三角形,确定可实现的最高可能总和。 input 第1行:单个整数,N 第2行...N + 1:行i + 1包含i个以空格分隔的整数,表示三角形的第i行。 output 第1行:使用遍历规则可实现的最大总和 样本输入 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 样本输出 30 Hint 7 * 3 8 * 8 1 0 * 2 7 4 4 * 4 5 2 6 5 如上所示,通过穿越奶牛可以实现最高分。 题目链接 https://vjudge.net/problem/POJ-3176 杨辉三角形 从下往上找,从两者选一个最大的去和上面的那个数相加,最后就能得出最大值 AC代码 #include <iostream> #include <cstdio> #include <fstream> #include <algorithm>

Layout POJ - 3169

旧时模样 提交于 2019-11-26 13:45:34
题目链接: https://vjudge.net/problem/POJ-3169 题意:有一些奶牛,有些奶牛相互喜欢,他们之间的距离必须小于等于一个K。 有些奶牛相互讨厌,他们之间的距离必须大于等于一个K。问1号奶牛个n号奶牛最远能相距多少距离, 如果无法正常排队,输出 “ -1 ”,如果距离可以无限输出 “ -2 ”。 思路:第一次做差分约束问题,看过一些人的解释,这里写出自己的理解。 题目问的是” 1号奶牛个n号奶牛最远能相距多少距离 “,如果两个奶牛相互喜欢,那么为了满足题意, 我们可以把他们之间的距离变成他们之间能接受的最大距离,注意,这里有一种情况: ①|x - y| <= k1 ②|y - z| <= k2 ①②得出,③|x - z| <= k1 + k2 ④|x - z| <= k3 为了满足三头奶牛的要求,我们需要得出一个满足①②④的一个相互距离,那么我们需要选min(k1 + k2 , k3)。 这样才能满足三头奶牛的要求。 如果相互讨厌: ①|x - y| >= k1 --> |y - x| <= -k1 ②|y - z| >= k2 -->|z - y| <= -k2 ①②得出,③|x - z| <= k1 + k2 --> |z - x| <= -(k1 + k2) ④|x - z| <= k3 --> |z - x| <= -k3