[USACO19OPEN]I Would Walk 500 Miles 贪心
题目 洛谷P5425(点击可跳转)
题目描述
Farmer John想要将他的编号为 \(1 \ldots N\)的 N N 头奶牛( \(N \leq 7500\) )分为非空的 \(K\) 组( $2 \leq K \leq N $ ),使得任意两头来自不同组的奶牛都需要走一定的距离才能相遇。奶牛$ x $ 和奶牛$y $ (其中$ 1 \leq x<y \leq N $ )愿意为了见面走 \((2019201913x+2019201949y) \mod 2019201997\) 英里。
给定一个将 $ N$ 头奶牛分为$ K$ 个非空小组的分组方案,令 \(M\) 为任意两头来自不同组的奶牛愿意为了见面行走的英里数的最小值。为了测试奶牛们相互之间的忠诚度,Farmer John想要将 \(N\) 头奶牛以最佳的方式分为 \(K\)组,使得$M $尽可能大。
输入输出格式
输入格式:
输入仅有一行,包含 $ N$ 和$ K $,用空格分隔。
输出格式:
输出最优的$M $。
输入输出样例
输入样例#1:
3 2
输出样例#1:
2019201769
说明
在这个例子中,奶牛\(1\)和奶牛\(2\)愿意为了见面走\(2019201817\)英里。奶牛\(2\)和奶牛\(3\)愿意走\(2019201685\)英里。奶牛\(1\)和奶牛\(3\)愿意走\(2019201769\)英里。所以,将奶牛\(1\)单独分为一组,奶牛\(2\)和奶牛\(3\)分为一组, $M=min(2019201817,2019201769)=2019201769 $ (这是我们在这个问题中能够达到的最佳结果)。
思路
我们可以把\(x\)奶牛与\(y\)奶牛"愿意为了见面行走的英里数"表示成一个函数:
\]
同时我们定义
\]
那么显然答案是所有\(f(i)\)值由大到小排序的第\(k-1\)个,对应的情况是\(f(i)\)值由大到小排序的第\(1\)个动物到第\(k-1\)个动物每一个自成一组,剩下的所有动物成一组,共\(k\)组.
代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define SIZE 7505
#define INF 0x7FFFFFFF
const long long P1=2019201913;
const long long P2=2019201949;
const long long Mod=2019201997;
inline int Fx(long long u,long long v){return (int)((P1*u+P2*v)%Mod);}
int n,k,x[SIZE];
int main()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)x[i]=INF;
for(int u=1;u<=n;u++)
for(int v=u+1;v<=n;v++)
{
int Tem=Fx(u,v);
x[u]=min(x[u],Tem);
x[v]=min(x[v],Tem);
}
sort(x+1,x+1+n);
printf("%d\n",x[n-(k-2)]);
return 0;
}
[USACO19OPEN]I Would Walk 500 Miles 贪心的更多相关文章
- HDU 5335——Walk Out——————【贪心】
Walk Out Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- hdu 5335 Walk Out 搜索+贪心
Walk Out Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total S ...
- hdu_1009 贪心
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- 越狱Season 1-Episode 1: the pilot
the pilot: 美国电视剧新剧开播都会有一个试播来测试观众对新剧的接受程度,以此来决定是否再继续播下去,也可以说是一个开端,第一集,试播 -Tattoo Artist: That's it. t ...
- F# 之旅(下)
写在前面的话 学习 F# 一定要去体会函数式编程的特点,推荐一下阮一峰的日志<函数式编程入门教程>. 在这篇文章中 递归函数 记录和可区分联合类型 模式匹配 可选类型 度量单位 类和接口 ...
- Deep Introduction to Go Interfaces.
Standard Interface Intro Go’s interfaces are one of it’s best features, but they’re also one of the ...
- NCE3
Lesson1 A puma at large Pumas are large, cat-like animals which are found in America. When reports ...
- POJ1326问题描述
Description Mileage program of ACM (Airline of Charming Merlion) is really nice for the travelers fl ...
- Fast-paced Multiplayer
http://www.gabrielgambetta.com/fpm1.html —————————————————————————————————————————————————————— Fast ...
随机推荐
- 小Z的袜子(hose) HYSBZ - 2038 莫队+分块
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll>pl ...
- 1.python数据类型详解
python数据类型分类 1).数值型:整数型(int).浮点型(float).布尔型(bool 取值:True.False) 2).容器类型 : 字符串型(str).列表(list).元祖(tupl ...
- Django基础一Web框架的本质
我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求, ...
- composer封装dd函数
1.安装composer,本人用的phpstudy,打开php扩展php_openssl 2.切换到www目录下 cmd 命令 composer 第一个就是我们要找的 3.运行composer req ...
- android中的常用布局管理器(三)
接上篇博客 (5)TableLayout 表格布局管理器 在android中,线性布局和表格布局用的是最多的. 在很多的输出操作中,往往会使用表格的形式对显示的数据进行排版,tablelayo ...
- TC SRM556 OldBridges
题意 有一个包含\(n\)个点的图,点的编号分别为\(0\)到\(n-1\).有若干双向边连接两个点,有些边可以经过无限次,有些边最多只能经过(双向)两次.Alice计划从\(a1\)到\(a2\)进 ...
- TTradmin v2.1 【2019年12月12日更新】简单好用的临时远程协助软件
TTradmin 是一款免端口映射可直接穿透任何内网,基于VNC核心的即时远程协助软件.在使用的时候只需要保证“协助端”和“被协助端”使用同一个验证码即可实现安全便捷的远程控制,不需要进入路由 ...
- Python_3
""" Function_1: 寻找水仙花数. 水仙花数也被称为超完全数字不变数.自恋数.自幂数.阿姆斯特朗数, 它是一个3位数,该数字每个位上数字的立方之和正好等于它本 ...
- webservice之Http传输错误问题
1.背景:调用第三方webservice服务,正常调用,但是最近由于第三方更换远程调用地址,并且发布服务器(A)是通过代理的方式请求真实服务器地址(B),于是本以为很简单的将客户端调用地址修改为发布地 ...
- 解决NahimicSvc32.exe与bilibili直播姬的音频不兼容的问题
某次测试哔哩哔哩直播姬的时候发现系统声音采集异常的错误 NahimicSvc32.exe是NahimicService下的程序,奇怪的是我的本本所有硬件没有一个微星有关系,怎么就装上了微星的服务程序? ...