CF 1250 B. The Feast and the Bus (思维+尺取)CF86A Reflection (思维)

简介: 【6月更文挑战第13天】

链接

题意:

某公司的员工们要庆祝今天的第$256$天!该公司有$n$名员工和$k$个团队,每个员工仅属于$1$个团队,每个团队至少有$1$名员工。团队编号从$1$到$k$。现在给出$n$个数字:$t_1,t_2,……t_n$表示第$i$个员工属于第$t_i$ 个团队。该公司雇佣了一辆班车,这辆班车将会往返多次承载员工去参加宴会,每一次可以承载$1$个团队或者$2$个团队,且每一个团队不能分离,必须在同一次车上。这辆车可以承载$s$个员工,$s$可以为任意值,假设通过$r$次运输,所有的员工都到达宴会目的地了,该公司需要支付$sr$元(只有$1$辆班车)。现在要你计算$rs$的最小值。

$(n<=2e5,k<=8000)$

分析:

首先我们看两个属性 车的最大容量和车的数量,我们看他们的范围,因为我们想枚举这两个属性中的其中一个,来求答案。

  • 车数量:首先看数据范围为 $[\frac{k+1}{2},k]$ 左端点是都一个车放两组,右端点是一个车放一组。两个极端情况,然后再内层循环去取者k个数,复杂度还是$O(n^2)$抱着侥幸心理交了一下,T44.没错还是太大了 。毕竟是8000*8000.
    //枚举方式 : 车数量:
    void check(int i)
    {
         
      bool flag = 0;
      ll sum = 0;
      priority_queue<ll, vector<ll>, greater<ll> > mx;
      for(int j = k; j >= 1; j--)
      {
         
          if(flag == 0)
          {
         
              mx.push(b[j]);
          }
          else
          {
         
              ll top = mx.top();
              mx.pop();
              sum = max(top + b[j], sum);
          }
          if(mx.size() == i) flag = 1;
      }
      while(!mx.empty())
      {
         
          sum = max(sum, mx.top());
          mx.pop();
      }
      ans = min(sum * i, ans);
    }
    
  • 然后看按照车的最大容量数据范围是, 最小就是最大的那组 $b[k]$(排序后最后一个).最大为,两两结对最后两个结对也就是:$b[k]+b[k-1]$,这样再在内层循环放k个物品(我们可以用尺取去放),这样复杂度外层的 其实是 平均下来就是[n/k]但是不准,但是可以过。然后内层枚举的是k。

虽然枚举车的最大容量可以过但是不知道怎么就出问题了,尺取代码中的$l,r$设成ll就T,改成int就能过,有巨巨懂的话可以解释下吗?万分感谢。

///苟利国家生死以,岂因祸福避趋之。
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 8000 + 7;
ll n, k;
ll b[maxn];
ll ans=1e18;

//枚举方式: 车的最大容量
void check(ll x)
{
   
    ll tmp = 0;
    int l = 1, r = k;
    while(l <= r) ///尺取
    {
   
        tmp++;
        if(l == r) break;
        if(b[l] + b[r] <= x) l++, r--;
        else r--;
    }
    ans = min(tmp * x, ans);
}

int main()
{
   
    cin>>n>>k;
    for(int i = 1; i <= n; i++)
    {
   
        ll x;
        scanf("%lld",&x);
        b[x]++;
    }
    sort(b + 1, b + 1 + k);
    for(ll i = b[k]; i <= b[k] + b[k - 1]; i++)
    {
   
        check(i);
    }
    cout<<ans;
    return 0;
}

链接

题意:

定义一个数的“Reflecion number”,是用9减去它的每一个数位后,再去掉前导0而形成的数,如192的“Reflecion number”是807(9-1=8,9-9=0,9-2=7)。

再定义一个数的“Weight”,它等于这个数自身乘以这个数的“Reflecion number”。

输入l和r${1<=l<=r<=10^9}$,输出l到r的数中"Weight"的最大值。

分析:

首先我们先看他们乘积发现他们的关系,
一个数x 的Re number 数是什么? 手模一个数 897 ,他的Re NUM为 (9-8)(9-9)(9-7)发现是102他与原数的关系是897+102=999,那么我们就可以直接通过求出其位数然后这么多9减去原数就是原数的Re number,然后我们就可以直接求出结果。

然后我们看看其具有的性质,我们发现答案不是最小的那个数,就是最大的那个数,要不就是5000...中间这个数,然后我们发现我们要先整出最优的一位数。后面就叠加。

///苟利国家生死以,岂因祸福避趋之。
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 2e5 + 7;
const int mod = 1e9 + 7;
const double pi = 3.14159265358979;


ll l,r;
ll g(ll x)///求函数
{
   
    ll t = 1;
    while (t <= x) t*=10;
    return (t-1-x)*x;
}

int main()
{
      
    cin >> l >> r;
    ll res = max(g(l),g(r));    
    ll t = 5;
    for(int i=0;i<=9;i++)
    {
   
        if (l <= t && t <= r)
            res = max(res,g(t));
        t*=10;
    }
    cout << res << endl;
    return 0;
}
目录
相关文章
|
6月前
|
监控 供应链 前端开发
如何开发ERP(离散制造-MTO)系统中的财务管理板块(附架构图+流程图+代码参考)
本文详解离散制造MTO企业ERP系统中财务管理模块的搭建,聚焦应收账款与应付账款管理,涵盖核心功能、业务流程、开发技巧及Python代码示例,助力企业实现财务数据准确、实时可控,提升现金流管理能力。
|
12月前
|
缓存 NoSQL Java
G1原理—9.如何优化G1中的MGC
本文主要探讨了因大对象导致频繁Mixed GC的问题及其优化方案。通过一个电商平台缓存更新的案例,分析了商品信息大量写入缓存时引发的GC问题,包括Redis锁等待、大对象分配及RegionSize调整不当等原因。文章详细介绍了Mixed GC的优化策略,分为避免策略(如调整RegionSize和新生代大小)与提速策略(如提升分配与回收速度),并深入解析了相关参数(如InitiatingHeapOccupancyPercent、G1ReservePercent等)的作用与调优方法,为解决类似性能问题提供了全面指导。
361 15
G1原理—9.如何优化G1中的MGC
|
9月前
|
监控 Android开发
【autojs版】哈罗抢单脚本,顺风车抢单辅助,全自动插件
这是一款基于Android无障碍服务开发的脚本工具,无需ROOT即可实现界面元素监控与事件模拟,适用于学习和参考。核心功能包括:通过图像识别检测订单气泡、控件监听逻辑、悬浮窗配置、动态列表渲染及状态提示UI。示例代码展示了如何使用无障碍服务监控订单列表,并通过悬浮窗进行参数配置与状态显示。仅供技术交流,请勿用于违规场景。
|
设计模式 网络协议 Java
04.里式替换原则介绍
里式替换原则(LSP)是面向对象设计的重要原则之一,确保子类可以无缝替换父类而不破坏程序功能。本文详细介绍了LSP的定义、背景、理解方法及应用场景,通过电商支付和鸟类飞行案例展示了如何遵循LSP,并分析了其优缺点。LSP强调子类应保持父类的行为一致性,有助于提高代码的可扩展性、可维护性和可重用性,但也可能导致过度设计。最后,对比了LSP与多态的区别,明确了LSP作为设计原则的重要性。
489 4
「Mac畅玩鸿蒙与硬件26」UI互动应用篇3 - 倒计时和提醒功能实现
本篇将带领你实现一个倒计时和提醒功能的应用,用户可以设置倒计时时间并开始计时。当倒计时结束时,应用会显示提醒。该项目涉及时间控制、状态管理和用户交互,是学习鸿蒙应用开发的绝佳实践项目。
495 2
「Mac畅玩鸿蒙与硬件26」UI互动应用篇3 - 倒计时和提醒功能实现
|
算法 决策智能 Python
Python中解决TSP的方法
旅行商问题(TSP)是寻找最短路径,使旅行商能访问每个城市一次并返回起点的经典优化问题。本文介绍使用Python的`ortools`库解决TSP的方法,通过定义城市间的距离矩阵,调用库函数计算最优路径,并打印结果。此方法适用于小规模问题,对于大规模或特定需求,需深入了解算法原理及定制策略。
493 15
|
存储 分布式计算 Hadoop
Hadoop格式化前检查集群状态
【7月更文挑战第22天】
306 14
|
存储 缓存 Kubernetes
在k8S中,数据持久化的方式有哪些?
在k8S中,数据持久化的方式有哪些?

热门文章

最新文章