• 问题 C: LH 找妹子


    题目描述

    LH的妹子们排成了1排。

    每个妹子有一个颜值ai。由于LH不想让妹子的颜值差距过大,并且他想找出尽可能多的妹子,所以他想找出一段连续的妹子,使得这段妹子最大的颜值减去这段妹子最小的颜值≤k,并且妹子的数量尽可能多。

    请聪明的你帮帮LH来找妹子吧。

    输入

    第一行给出2个正整数n,k,表示LH有n个妹子,LH希望找出的妹子最大的颜值减去这些妹子最小的颜值≤k。 第二行输入n个正整数 ai。表示LH的n个妹子的颜值。

    输出

    输出一行一个整数表示LH能找到的妹子的数量的最大值。

    样例输入 Copy

    4 2
    1 4 2 3
    

    样例输出 Copy

    3
    

    提示

    对于30%的数据,n≤100。
    对于50%的数据,n≤1000
    对于另外20%的数据,ai≤ai+1。
    对于100%的数据,n≤100000,ai≤109,k≤109。

    向某位大佬要的multiset+二分查找代码:

    1. #include
    2. using namespace std;
    3. const int maxn=1e5+5;
    4. typedef long long ll;
    5. ll n,arr[maxn],k,mp[maxn],cnt;
    6. multisetst;
    7. int main()
    8. {
    9. cin>>n>>k;
    10. for(int i=0;i
    11. {
    12. cin>>arr[i];
    13. }
    14. ll maxx=-1e9,minx=1e9+5;
    15. int ans=0;
    16. int j=0;
    17. for(int i=0;i
    18. {
    19. maxx=max(maxx,arr[i]);
    20. minx=min(minx,arr[i]);
    21. st.insert(arr[i]);
    22. while(maxx-minx>k)
    23. {
    24. multiset::iterator it =st.lower_bound(arr[j]);
    25. st.erase(it);
    26. if(st.size())
    27. {
    28. minx=*st.begin();
    29. it=st.end();
    30. it--;
    31. maxx=*it;
    32. }
    33. else
    34. {
    35. maxx=-1e9;
    36. minx=1e9+5;
    37. }
    38. j++;
    39. }
    40. int len=st.size();
    41. ans=max(ans,len);
    42. }
    43. cout<
    44. return 0;
    45. }

     我写的是小根堆大根堆双指针,但是不知道为什么是对的qwq

    1. #include
    2. using namespace std;
    3. typedef long long ll;
    4. typedef double db;
    5. const int N=1e5+5;
    6. ll a[N],n,k,mmmax=0,mmax,mmin;
    7. struct node
    8. {
    9. int w,now;
    10. friend bool operator < (node a, node b)
    11. {
    12. return a.w>b.w;//这里注意符号要为'>'
    13. }
    14. };
    15. struct nodes
    16. {
    17. int w,now;
    18. friend bool operator < (nodes a, nodes b)
    19. {
    20. return a.w//这里注意符号要为'>'
    21. }
    22. };
    23. priority_queueqd;//大
    24. priority_queueqx;//小
    25. ll l=0,r=0;
    26. int main()
    27. {
    28. cin>>n>>k;
    29. for(ll i=0; i<=n-1; i++)
    30. {
    31. cin>>a[i];
    32. }
    33. qd.push((nodes)
    34. {
    35. a[0],0
    36. });
    37. qx.push((node)
    38. {
    39. a[0],0
    40. });
    41. while(r
    42. {
    43. while(qx.top().now
    44. {
    45. qx.pop();
    46. }
    47. while(qd.top().now
    48. {
    49. qd.pop();
    50. };
    51. mmax=qd.top().w;
    52. mmin=qx.top().w;
    53. if(mmax-mmin>k)
    54. {
    55. l++;
    56. }
    57. else
    58. {
    59. mmmax=max(mmmax,r-l+1);
    60. if(r++ ==n-1)
    61. {
    62. break;
    63. }
    64. qd.push((nodes)
    65. {
    66. a[r],r
    67. });
    68. qx.push((node)
    69. {
    70. a[r],r
    71. });
    72. }
    73. }
    74. cout<
    75. return 0;
    76. }

  • 相关阅读:
    11在SpringMVC中响应到浏览器的数据格式,@ResponseBody注解和@RestController复合注解的功能详解
    Vue 如何监听 localstorage的变化
    haskell 基本布局和组成元素
    小学生python练习3--跳伞防鸟小游戏
    (三十一)大数据实战——一键式DolphinScheduler高可用工作流任务调度系统部署安装
    CommunityToolkit.Mvvm8.1 MVVM工具包安装引用指南(1)
    Portainer-docker可视化工具
    html5 web前端 localStorage的存储,读取,删除
    A. The Enchanted Forest(思维)
    Vue记录(下篇)
  • 原文地址:https://blog.csdn.net/m0_61949623/article/details/126267872