首页 > 其他分享 >洛谷题单指南-贪心-P1223 排队接水

洛谷题单指南-贪心-P1223 排队接水

时间:2024-02-22 16:33:05浏览次数:24  
标签:p2 pp int 洛谷题 等待时间 P1223 ti tj 贪心

原题链接:https://www.luogu.com.cn/problem/P1223

题意解读:第i个人接水时,后面的n-i个人就要等待,要使平均等待时间最短,即总等待时间最短,贪心法解题。

解题思路:

设一共n个人,第i人的接水时间为ti

总等待时间为:t1*(n-1)+t2*(n-2)+...+tn

直观上,贪心策略应该是让接水时间短的人在前,后面人等待的总体时间较少

证明(反证法):

假设1-n个人中,只有两个人:第i个,第j个,i<j,ti>tj,即i在j前面,但i的接水时间比j长

这两个人导致的等待时间为time1 = ti*(n-i) + tj*(n-j)

而把i,j位置交换后导致的等待时间为time2 = tj*(n-i) + ti*(n-j) 

time1 - time2 = (ti-tj)*(n-i) - (ti-tj)*(n-j) = (ti-tj) * (j-i) > 0

显然前者时间更长,要获得更短等待时间,接水时间短的应该在前。

100分代码:

#include <bits/stdc++.h>
using namespace std;

const int N = 1005;

struct person
{
    int id, t;
} pp[N];

bool cmp(person p1, person p2)
{
    if(p1.t != p2.t) return p1.t < p2.t;
    return p1.id < p2.id;
}

int n;
double all;

int main()
{
    scanf("%d", &n);
    for(int i = 1; i <= n; i++) cin >> pp[i].t, pp[i].id = i;

    sort(pp + 1, pp + n + 1, cmp);

    for(int i = 1; i <= n; i++)
    {
        all += pp[i].t * (n - i);
    }

    for(int i = 1; i <= n; i++) printf("%d ", pp[i].id);
    printf("\n%.2lf", all / n);

    return 0;
}

 

标签:p2,pp,int,洛谷题,等待时间,P1223,ti,tj,贪心
From: https://www.cnblogs.com/jcwy/p/18027637

相关文章

  • 洛谷题单指南-递推与递归-P1498 南蛮图腾
    原题链接:https://www.luogu.com.cn/problem/P1498题意解读:观察样例,可以发现,当n=1时,得到最基础的图案:/\/__\当n=2时,将基础图案向下复制两个,并排,然后将之前的图案移到居中的位置/\/__\/\/\/__\/__\当n=3时,再将n=2时的图案向下复制两个,并排,然后将之前的图......
  • 洛谷题单指南-递推与递归-P1228 地毯填补问题
    原题链接:https://www.luogu.com.cn/problem/P1228题意解读:用4种毯子铺满2^k*2^k的区域,留出一个公主位置,输出所有毯子拐角的坐标以及哪种毯子,看起来有点无从下手,可以从k=1,k=2,k=3入手去依次考虑,找到规律,用分治法解决。解题思路:1、当k=1时,即2*2的区域,对于任意一个位置是公主,都......
  • 洛谷题单指南-递推与递归-P1010 [NOIP1998 普及组] 幂次方
    原题链接:https://www.luogu.com.cn/problem/P1010题意解读:输出一个正整数的2的幂次方表示,需要用到二进制数学知识,将整数拆解成2的次幂之和,幂次方也要进行拆解,因此容易想到通过递归处理。解题思路:先看样例,给定整数137,要拆解成2的幂次方之和,先考虑i使得刚好137>=2^i时,i取7,因此2......
  • 洛谷题单指南-递推与递归-P1259 黑白棋子的移动
    原题链接:https://www.luogu.com.cn/problem/P1259题意解读:要打印最终的状态,关键在找到一些变化的规律,直接的暴力搜索复杂度太高。解题思路:从样例出发ooooooo*******--oooooo--******o*oooooo******--o*ooooo--*****o*o*ooooo*****--o*o*oooo--****o*o*o*oooo****--o*o*o*ooo--......
  • 洛谷题单指南-递推与递归-P3612 [USACO17JAN] Secret Cow Code S
    原题链接:https://www.luogu.com.cn/problem/P3612题意解读:字符串加长的时候,是先把最后一个字符接上,再拼接其余字符,注意不是翻转,要找第n个字符,就要看字符串加长几次后长度能超过n,然后在加长后的字符串中找第n个字符。解题思路:如果直接通过模拟法,字符串长度太长,且要找的第n个数......
  • 洛谷题单指南-递推与递归-P1990 覆盖墙壁
    原题链接:https://www.luogu.com.cn/problem/P1990题意解读:用两种可旋转的形状铺满N*2的区域,求方案数,可以使用递推。解题思路:步骤1、设f[i]表示铺满i*2的区域的方案数根据要求,i*2区域最后一列有4种可能的铺法:如果采用图1铺法,则有f[i]=f[i-1]如果采用图2铺法,则有f[i]=f......
  • 洛谷题单指南-递推与递归-P1164 小A点菜
    原题链接:https://www.luogu.com.cn/problem/P1164题意解读:要求正好把钱花完,并且统计不同的点菜方案数,本质上是一个背包问题,给定背包体积,要求物品正好装满背包的方案数。解题思路:1、最直观的解法是暴搜:DFS枚举每一道菜,有点或者不点两种选择,并且累加上已花费的总金额递归前,判断......
  • 【持续更新中】【解题报告】你非得用贪心解深搜题吗?——搜索题迷惑解法大赏
    寒假THOI集训部分深搜题目(另类)题解今日推歌:《カブってこうぜぇfeat.可不》-タケノコ少年特别可爱的一个歌,,,Before集训时候做题做出的怪异解法和迷惑大赏,真实有用的成分低于迷惑成分除了深搜以后(可能)还会有广搜题本篇没有任何以贪心为正解的题,也(几乎)没有以正解(搜索)做出来......
  • 【算法】007_前缀树和贪心算法
    1.前缀树一个字符串类型的数组arr1,另一个字符串类型的数组arr2.arr2中有哪些字符,是arr1中出现的?arr2中有哪些字符是作为arr1中某个字符串前缀出现的?arr2中有哪些字符是作为arr1中某个字符串前缀出现的?pass:表示当前这个结点被经过的次数end:这个结点作为结尾的次数例如......
  • 洛谷题单指南-递推与递归-P2437 蜜蜂路线
    原题链接:https://www.luogu.com.cn/problem/P2437题意解读:根据题目要求,只能从标号小的蜂房爬到标号大的相邻蜂房,即每次要么爬到+1的蜂房,要么爬到+2的蜂房,本质上是一个斐波那契数列问题,和数楼梯问题一样。解题思路:要求从m号蜂房到n号蜂房的路径,即走n-m级楼梯的方案,n最大1000,同样......