Family Gathering at Christmas

时间限制: 1 Sec  内存限制: 128 MB
提交: 13  解决: 4
[提交] [状态] [讨论版] [命题人:admin]

题目描述

Every year, Alice’s family has a gathering at Christmas, at a family member’s place. The members would like to choose a host so that every member can reach the host’s place without spending too much time, where the time for traveling depends on the geographical distance between the two places and the way of transportation. For example, going to a place on foot usually takes longer time than by bicycle. Since a host has to spend much effort to get everything ready, the family decides not to have the gathering at one’s place so often. For members who are not the host, they have to prepare a dish for the party. However, all of them are too busy to cook on their own so they always go to the central city to buy a dish right before the party.
Alice suggests a way for her family to determine the gathering place. First, she associates each member with a weight, which quantifies the way of transportation. Then, the time needed for each non-host member m to reach the host is

wm · (dm + dh ),

where wm is the weight of the member, d m is the distance from the member’s place to the central city, and d h is the distance from the central city to the host’s place. Then she associates each member’s place with a key, which is the longest time needed for a non-host member to reach the place. To decide the host, she picks a small number k, and choose a place with the kth smallest key. Please develop an efficient algorithm to help Alice find the kth smallest key.

输入

The first line of the input is the number of instances to be tested. There are at most 10 instances. An instance consists of 3 lines. The first line contains two integers, n and k.
The second line contains n integers, w1 , . . . , wn , and the third line contains d1 , . . . , dn . Two consecutive integers in a line are separated by a space.

输出

The output for each instance is an integer, which is the kth smallest key.

样例输入

  1. 2
  2. 3 2
  3. 5 3 4
  4. 3 8 5
  5. 4 2
  6. 6 2 8 2
  7. 10 18 12 4

样例输出

  1. 40
  2. 132
    有的人用线段树做的,懂不起!
    AC代码:
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<algorithm>
  4. using namespace std;
  5. typedef struct{
  6. int su,wei;
  7. }my;
  8. int n,k;
  9. my f[];
  10. int comp(my x,my y)
  11. {
  12. if(x.wei<y.wei)
  13. return ;
  14. return ;
  15. }
  16. long long ans1,ans2,ans3,num,maxn,minn;
  17. int t1;
  18. int main()
  19. {
  20. int T;
  21. scanf("%d",&T);
  22. while(T--)
  23. {
  24. scanf("%d%d",&n,&k);
  25. for(int i=;i<=n;i++)
  26. scanf("%d",&f[i].su);
  27. for(int i=;i<=n;i++)
  28. scanf("%d",&f[i].wei);
  29. sort(f+,f+n+,comp);
  30. ans1=,t1=;
  31. for(int i=;i<=n;i++)
  32. if(i!=k)
  33. {
  34. if(ans1<1LL*f[i].su*(f[i].wei+f[k].wei))
  35. ans1=1LL*f[i].su*(f[i].wei+f[k].wei),t1=i;
  36. }
  37. if(t1>k)
  38. {
  39. ans2=;
  40. for(int i=;i<=n;i++)
  41. if(i!=t1)
  42. {
  43. if(ans2<1LL*f[i].su*(f[i].wei+f[t1].wei))
  44. ans2=1LL*f[i].su*(f[i].wei+f[t1].wei);
  45. }
  46. }
  47. else
  48. {
  49. ans2=5000000000LL;
  50. }
  51. if(k==)
  52. {
  53. ans3=;
  54. }
  55. else
  56. {
  57. ans3=;
  58. for(int i=;i<=n;i++)
  59. if(i!=k-)
  60. {
  61. if(ans3<1LL*f[i].su*(f[i].wei+f[k-].wei))
  62. ans3=1LL*f[i].su*(f[i].wei+f[k-].wei);
  63. }
  64. }
  65. num=ans1+ans2+ans3;
  66. minn=min(ans1,min(ans2,ans3));
  67. maxn=max(ans1,max(ans2,ans3));
  68. printf("%lld\n",num-minn-maxn);
  69. }
  70. return ;
  71. }
  1.  

Family Gathering at Christmas(思维题)的更多相关文章

  1. zoj 3778 Talented Chef(思维题)

    题目 题意:一个人可以在一分钟同时进行m道菜的一个步骤,共有n道菜,每道菜各有xi个步骤,求做完的最短时间. 思路:一道很水的思维题, 根本不需要去 考虑模拟过程 以及先做那道菜(比赛的时候就是这么考 ...

  2. cf A. Inna and Pink Pony(思维题)

    题目:http://codeforces.com/contest/374/problem/A 题意:求到达边界的最小步数.. 刚开始以为是 bfs,不过数据10^6太大了,肯定不是... 一个思维题, ...

  3. ZOJ 3829 贪心 思维题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...

  4. 洛谷P4643 [国家集训队]阿狸和桃子的游戏(思维题+贪心)

    思维题,好题 把每条边的边权平分到这条边的两个顶点上,之后就是个sb贪心了 正确性证明: 如果一条边的两个顶点被一个人选了,一整条边的贡献就凑齐了 如果分别被两个人选了,一作差就抵消了,相当于谁都没有 ...

  5. C. Nice Garland Codeforces Round #535 (Div. 3) 思维题

    C. Nice Garland time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  6. PJ考试可能会用到的数学思维题选讲-自学教程-自学笔记

    PJ考试可能会用到的数学思维题选讲 by Pleiades_Antares 是学弟学妹的讲义--然后一部分题目是我弄的一部分来源于洛谷用户@ 普及组的一些数学思维题,所以可能有点菜咯别怪我 OI中的数 ...

  7. UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)

    UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There W ...

  8. HDU 1029 Ignatius and the Princess IV / HYSBZ(BZOJ) 2456 mode(思维题,~~排序?~~)

    HDU 1029 Ignatius and the Princess IV (思维题,排序?) Description "OK, you are not too bad, em... But ...

  9. cf796c 树形,思维题

    一开始以为是个树形dp,特地去学了..结果是个思维题 /* 树结构,设最大点权值为Max,则答案必在在区间[Max,Max+2] 证明ans <= Max+2 任取一个点作为根节点,那么去掉这个 ...

随机推荐

  1. shell脚本学习(1)

    格式: #!/bin/bash                              :标志一个shell脚本 #Filename:first_shell.sh          :文件名称 #a ...

  2. java——sleep()和wait()

    1.所属类不同sleep()属于Thread而wait()属于Object 2.sleep()没有释放当前锁,wait()则释放了当前锁 3.sleep(0)的目的是使当前线程释放cpu,其他线程可以 ...

  3. Android中的时间格式的校验

    public class MainActivity extends Activity implements OnClickListener{ private Button btn1; private ...

  4. PCB的版本控制

    http://club.szlcsc.com/article/details_1783_1.html 转载自:http://www.amobbs.com/thread-5606014-1-1.html ...

  5. javascript 例外处理Try{}catch(e){}

    程序开发中,编程人员经常要面对的是如何编写代码来响应错误事件的发生,即例外处理(exception handlers).如果例外处理代码设计得周全,那么最终呈现给用户的就将是一个友好的界面.否则,就会 ...

  6. [转]Jquery Mobile dialog的生命周期

    本文转自:http://www.cnblogs.com/jackhuclan/archive/2012/04/05/2432972.html JQuery Mobile对htm5的移动开发绝对是个好用 ...

  7. Murano Weekly Meeting 2016.08.02

    Meeting time: 2016.August.02 1:00~2:00 Chairperson:  Valerii Kovalchuk, from Mirantis Meeting summar ...

  8. HDU 4512——吉哥系列故事——完美队形I——————【LCIS应用】

    吉哥系列故事——完美队形I Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  9. 位运算(2)——Number of 1 Bits

    Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know ...

  10. JavaScript 对象继承 OOP (三)

      对象继承 A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法.这对于代码的复用是非常有用的. JavaScript 语言的继承不通过 class (es6 中的class 不过是 ...