割绳子问题(二分)

题目描述
有 N 条绳子,它们的长度分别为 L_iL
i

。如果从它们中切割出 K 条长度相同的绳子,这 KK 条绳子每条最长能有多长?答案保留到小数点后 2 位(直接舍掉 2 位后的小数)

输入格式
第一行两个整数 N 和 K,接下来 N 行,描述了每条绳子的长度 L_iL
i

输出格式
切割后每条绳子的最大长度。答案与标准答案误差不超过 0.010.01 或者相对误差不超过 1%1% 即可通过。

输入输出样例
输入 #1 复制
4 11
8.02
7.43
4.57
5.39
输出 #1 复制
2.00
说明/提示
对于 100%100% 的数据 0<L_i\leq 100000.00,0<n\leq 10000,0<k\leq 100000<L
i

≤100000.00,0<n≤10000,0<k≤10000

#include <bits/stdc++.h>
#define LL long long
using namespace std;

double a[10010];
bool check(int N, int K, double M){
    int cnt = 0;
    for(int i = 0; i < N; i++){
        cnt += a[i] / M;
    }
    if(cnt >= K){
        return true;
    }
    else{
        return false;
    }
}
int main(){
    int N, K;
    cin >> N >>K;
    for(int i = 0; i < N; i++){
        cin >> a[i];
    }
    sort(a, a+N);
    double L = 0;
    double R = a[N-1];
    while(L + 0.000000001 <= R){//注意精度问题
        double M = (L + R)/2;
        if(check(N, K, M)){
            L = M;
        }
        else{
            R = M;
        }
    }
    //小数点两位后的数舍去
    int temp = floor(R * 100);
    printf("%.2lf\n", temp * 0.01);
    return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
s': // 地球向下移动 earth_pos[1] -= 0.1; break; } } // 定时器事件处理函数 void timer(int value) { update(); glutTimerFunc(20, timer, 0); } 绳子是一款非常流行的益智游戏,它的核心玩法是通过切割绳子来// 主函数 int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT让物体掉落到指定位置,同时需要收集星星来获取更高的分数。在 Cocos Creator 中_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(800, 600); glutCreateWindow("Earth and Moon"); glut实现绳子的过程大致可以分为以下几个步骤: 1. 创建游戏场景和物体DisplayFunc(display); glutMouseFunc(mouse); glutKeyboardFunc(keyboard); glutTimerFunc(20, timer, 0); :使用 Cocos Creator 的场景编辑器创建游戏场景,然后添加需要切割绳子和物体等 init(); glutMainLoop(); return 0; } ``` 这个程序使用了OpenGL库,实现了一个简游戏元素。 2. 实现物体的掉落:使用物理引擎(如 Cocos Creator 自带的 Box单的地月绕太阳公转的效果。其中地球和月球是用图素构造法构成的2D 物理引擎)来实现物体的掉落,同时设置物体的刚体属性、碰撞体属性三维球体,太阳是一个实心球体。程序支持鼠标左键点击开始运动,支持键等。 3. 实现绳子切割:在游戏场景中添加触摸事件监听器,当玩家触盘控制地球改变轨道。此外,地球和月球还添加了phong光照效果,增摸到绳子时,计算出触摸点与绳子的交点,并将绳子分成两段。可以使用强了真实感。 程序中使用了三个数组分别存储地球和月球的位置和速度,每 Cocos Creator 自带的 Graphics 组件来绘制切割后的绳子。 4. 实现星星的收集:在次更新时根据万有引力定律计算它们的位置和速度。鼠标事件处理函数中实现游戏场景中添加触发器,当物体与星星重叠时,触发收集星星的事件,并了视角的变换,键盘事件处理函数中实现了地球的移动。定时器事件处理函数中更新分数。 5. 实现游戏结束逻辑:当物体掉落到指定位置或者掉落到屏不断更新地球和月球的位置和速度,并进行重绘。 希望这个示范程序对你有所帮助。如果还有疑问,可以继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值