hihocoder 193周 修补木桶

本文解析了hihocoder193周修补木桶问题,通过将复杂问题转化为求解最小操作次数的辅助问题,利用贪心算法和二分搜索策略,解决了圆形木桶由n块木板构成,如何通过m次操作使木板达到指定长度的难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 /*
 2   Source   :hihocoder193周 修补木桶
 3   Problem  :一个圆形的木桶由n块木板围成,可以使用一种操作把连续的一段长度为L的区间中的木板变成无限长,操作可以使用m次,问最终最短的木板是多长。n<=1000,L<=20,m*L<n
 4   Solution :直接计算较为困难,考虑一个简单一点的问题:如果知道了最终最短木板的长度,那么把这n块木板变成满足条件的最小操作次数是多少次。如果是一个序列,那么我们可以从
 5             第一个位置贪心的枚举,这样可以求得最终需要的次数。对于一个环,拆成n条链分别判断。
 6             其次,我们可以发现随着最终最短木板长度的增加,需要的操作次数是递减的。于是可以二分最终最短木板的长度。
 7   Date     :2018-08-16-15.32
 8 */
 9 
10 #include <bits/stdc++.h>
11 using namespace std;
12 
13 typedef long long LL;
14 const int MAXN = 100005;
15 const LL MOD7 = 1e9+7;
16 
17 int a[2005];
18 int ans[1005];
19 int n,m,Len;
20 
21 
22 bool check(int x)
23 {
24     for (int i=1;i<=Len;++i)
25     {
26         int t=0;
27         for (int j=i;j<i+n;++j)
28         {
29             if (a[j]<x)
30             {
31                 ++t;
32                 j+=Len-1;
33             }
34         }
35         if (t<=m) return true;
36     }
37     return false;
38 }
39 
40 int main()
41 {
42 #ifndef ONLINE_JUDGE
43     freopen("test.txt","r",stdin);
44 #endif // ONLINE_JUDGE
45     scanf("%d%d%d",&n,&m,&Len);
46     {
47         for (int i=1;i<=n;++i)
48         {
49             scanf("%d",&a[i]);
50             ans[i]=a[i];
51         }
52         for (int i=1;i<=n;++i) a[n+i] = a[i];
53         sort(ans+1,ans+1+n);
54         int l=1,r=n;
55         int mid;
56         while (l<=r)
57         {
58             mid=(l+r)/2;
59             // printf("l=%d r=%d mid=%d check(%d)=%d\n",l,r,mid,ans[mid],check(ans[mid]));
60             if (check(ans[mid])) l=mid+1;
61             else r=mid-1;
62         }
63         printf("%d\n",ans[l-1]);
64     }
65     return 0;
66 }

 

转载于:https://www.cnblogs.com/LeeSongt/p/9489689.html

资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 在苹果的生态系统中,IAP(应用内购买)是苹果应用商店(App Store)中应用开发者常采用的一种盈利模式,允许用户在应用内直接购买虚拟商品或服务。苹果为开发者提供了一份详细的人民币(CNY)IAP定价表,这份定价表具有以下特点: 价格分级:定价表由多个价格等级组成,开发者可根据虚拟商品的价值选择相应等级,等级越高,价格越高。例如,低等级可能对应基础功能解锁,高等级则对应高级服务或大量虚拟道具。 税收与分成:苹果会从应用内购买金额中抽取30%作为服务费或佣金,这是苹果生态的固定规则。不过,开发者实际到手的收入会因不同国家和地区的税收政策而有所变化,但定价表中的价格等级本身是固定的,便于开发者统一管理。 多级定价策略:通过设置不同价格等级,开发者可以根据商品或服务的类型与价值进行合理定价,以满足不同消费能力的用户需求,从而最大化应用的总收入。例如,一款游戏可以通过设置不同等级的虚拟货币包,吸引不同付费意愿的玩家。 特殊等级:除了标准等级外,定价表还包含备用等级和特殊等级(如备用等级A、备用等级B等),这些等级可能是为应对特殊情况或促销活动而设置的额外价格点,为开发者提供了更灵活的定价选择。 苹果IAP定价表是开发者设计应用内购机制的重要参考。它不仅为开发者提供了标准的收入分成模型,还允许开发者根据产品特性设定价格等级,以适应市场和满足不同用户需求。同时,开发者在使用定价表时,还需严格遵守苹果的《App Store审查指南》,包括30%的分成政策、使用苹果支付接口、提供清晰的产品描述和定价信息等。苹果对应用内交易有严格规定,以确保交易的透明性和安全性。总之,苹果IAP定价表是开发者在应用内购设计中不可或缺的工具,但开发者也需密切关注苹果政策变化,以确保应用的合规运营和收益最大化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值