题目 洛谷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\)奶牛"愿意为了见面行走的英里数"表示成一个函数:

\[g(x,y)=(2019201913 \times min(x,y)+2019201949 \times max(x,y))\mod 2019201997
\]

同时我们定义

\[f(i)=min(g(i,j))\quad 1\leq j\leq n,i\ne j
\]

那么显然答案是所有\(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 贪心的更多相关文章

  1. HDU 5335——Walk Out——————【贪心】

    Walk Out Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...

  2. hdu 5335 Walk Out 搜索+贪心

    Walk Out Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total S ...

  3. hdu_1009 贪心

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  4. 越狱Season 1-Episode 1: the pilot

    the pilot: 美国电视剧新剧开播都会有一个试播来测试观众对新剧的接受程度,以此来决定是否再继续播下去,也可以说是一个开端,第一集,试播 -Tattoo Artist: That's it. t ...

  5. F# 之旅(下)

    写在前面的话 学习 F# 一定要去体会函数式编程的特点,推荐一下阮一峰的日志<函数式编程入门教程>. 在这篇文章中 递归函数 记录和可区分联合类型 模式匹配 可选类型 度量单位 类和接口 ...

  6. 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 ...

  7. NCE3

    Lesson1  A puma at large Pumas are large, cat-like animals which are found in America. When reports ...

  8. POJ1326问题描述

    Description Mileage program of ACM (Airline of Charming Merlion) is really nice for the travelers fl ...

  9. Fast-paced Multiplayer

    http://www.gabrielgambetta.com/fpm1.html —————————————————————————————————————————————————————— Fast ...

随机推荐

  1. 前后端分离-crud&svn

    前后端分离-crud&svn 1. 跨域 1.1 什么是跨域 请求方与服务方的源不同,即跨域,包括: 1. 协议不同 2. 域名不同 3. 端口不同 1.2 跨域不一定存在跨域问题 什么情况下 ...

  2. MySQL基础篇(02):从五个维度出发,审视表结构设计

    本文源码:GitHub·点这里 || GitEE·点这里 一.数据场景 1.表结构简介 任何工具类的东西都是为了解决某个场景下的问题,比如Redis缓存系统热点数据,ClickHouse解决海量数据的 ...

  3. 二、继续学习(主要参考Python编程从入门到实践)

    操作列表 具体内容如下: # 操作列表 # 使用for循环遍历整个列表. # 使用for循环处理数据是一种对数据集执行整体操作的不错的方式. magicians = ['alice', 'david' ...

  4. 论文阅读笔记(十八)【ITIP2019】:Dynamic Graph Co-Matching for Unsupervised Video-Based Person Re-Identification

    论文阅读笔记(十七)ICCV2017的扩刊(会议论文[传送门]) 改进部分: (1)惩罚函数:原本由两部分组成的惩罚函数,改为只包含 Sequence Cost 函数: (2)对重新权重改进: ① P ...

  5. BFS和队列

    深度优先搜索(DFS)和广度优先搜索(BFS)是基本的暴力技术,常用于解决图.树的遍历问题. 首先考虑算法思路.以老鼠走迷宫为例: (1):一只老鼠走迷宫.它在每个路口都选择先走右边,直到碰壁无法继续 ...

  6. 使用VS中自带的一键打包功能将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理

    本章将和大家简单分享下如何使用VS中自带的一键打包功能将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理. 一.注册并登录NuGet平台 NuGet官网:http ...

  7. web渗透漏洞靶场收集

    最近将自己遇到过或者知道的web靶场链接奉上 0X01 DVWA 推荐新手首选靶场,配置简单,需下载phpstudy和靶场文件包,简单部署之后即可访问. 包含了常见的web漏洞(php的),每个漏洞分 ...

  8. P1041 传染病控制【暴搜】

    P1041 传染病控制 提交 10.78k 通过 3.74k 时间限制 1.00s 内存限制 125.00MB 题目提供者CCF_NOI 难度提高+/省选- 历史分数100 提交记录 查看题解 标签 ...

  9. 06-SV随机化

    1.受约束的随机测试法(CRT) 随着设计变得越来越大,要产生一个完整的激励集来测试设计的功能变得越来越困难.解决的办法是采用受约束的随机测试法自动产生测试集.CRT环境比定向测试的环境复杂,不仅需要 ...

  10. 利用GRC进行安全研究和审计 – 将无线电信号转换为数据包(转)

    0x00 介绍 InGuardians作为一家从事信息安全研究和咨询的公司,自创立以来不但关注着web应用的渗透测试,网络取证,嵌入式设备等领域也致力于无线网络的评估方法上面的研究.在期间无线网络评估 ...