BZOJ 3969 Low Power 解题报告

我们首先将所有电池排序,那么我们可以找到一组最优方案,使得一台机器的能量之差是相邻两电池的能量之差。

然后我们就二分这个答案,从前往后贪心地选这个数对,然后看是否所有的数对都是满足条件的。

假设这个数对是 i - 1, i,并且是第 j 个数对,那么我们称满足条件为:

2nk - i + 2 >= 2k(n - j + 1)

意思就是能拿出足够多的电池来组成机器人。

然后注意特判:如果不能选出足够多的数对就返回 false,我在这里 WA 到死。。。

毕竟 Gromah 太弱,只会做水题。

 1 #include <cmath>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <iostream>
 5 #include <algorithm>
 6 using namespace std;
 7 #define N 1000000 + 5
 8   
 9 int n, k, size, Max, A[N];
10   
11 inline int getint()
12 {
13     char ch = '\n';
14     for (; ch > '9' || ch < '0'; ch = getchar()) ;
15     int res = ch - '0';
16     for (ch = getchar(); ch >= '0' && ch <= '9'; ch = getchar())
17         res = (res << 3) + (res << 1) + ch - '0';
18     return res;
19 }
20   
21 inline bool Judge(int m)
22 {
23     int cnt = n;
24     for (int i = 2; cnt && i <= size; i ++)
25         if (A[i] - A[i - 1] <= m)
26         {
27             if (size - i + 2 < 2 * cnt * k) return 0;
28             cnt --, i ++;
29         }
30     return !cnt;
31 }
32   
33 int main()
34 {
35     #ifndef ONLINE_JUDGE
36         freopen("3969.in", "r", stdin);
37         freopen("3969.out", "w", stdout);
38     #endif
39       
40     n = getint(), k = getint();
41     size = (n * k) << 1;
42     for (int i = 1; i <= size; i ++)
43     {
44         A[i] = getint();
45         Max = max(Max, A[i]);
46     }
47     sort(A + 1, A + size + 1);
48     int l = A[2] - A[1], r = Max;
49     while (l < r)
50     {
51         int mid = (l + r) >> 1;
52         if (Judge(mid)) r = mid;
53             else l = mid + 1;
54     }
55     printf("%d\n", l);
56       
57     #ifndef ONLINE_JUDGE
58         fclose(stdin);
59         fclose(stdout);
60     #endif
61     return 0;
62 }

 

转载于:https://www.cnblogs.com/gromah/p/4424005.html

内容概要:本文主要介绍了鸿蒙原生应用开发过程中可能遇到的内存问题以及相应的解决方案。针对这些问题,华为提供的 DevEco Studio 包含了性能分析工具 DevEco Profiler,提供两种场景化的分析模板——Snapshot Insight 和 Allocation Insight,支持实时监控、ArkTS 和 Native 内存的深度分析。这使得开发者能够有效识别、定界定位并优化内存问题,大幅提升应用的稳定性和性能。此外,文章还介绍了 DevEco Studio 强大的模拟器功能,该模拟器能仿真各类设备及场景,包括GPS定位、导航和低电量管理,极大提高了开发效率和测试灵活性。最后,文中详细列出了常见的快捷键,并给出了保持 DevEco Studio 与 Android Studio 快捷键同步的方法。 适合人群:专注于鸿蒙生态系统内的应用开发的技术人员,特别是有一定经验的中级至高级程序员。 使用场景及目标:本文旨在帮助开发者更好地理解和掌握 DevEco Studio 的强大工具链,尤其是解决开发过程中经常遇见的内存管理和多设备兼容问题,目标是优化开发流程,减少调测时间,增强产品的质量和用户体验。 阅读建议:开发者可通过鸿蒙官方提供的资源链接下载最新版本的 DevEco Studio 并探索相关技术博客,以获得最新的技术和使用技巧。建议在实践中逐步熟悉各个功能模块,并积极利用性能分析工具和模拟器来解决现实中的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值