zoukankan      html  css  js  c++  java
  • 【Light】[1275]Internet Service Providers

    这里写图片描述

    感觉这一题的难点在于……这是道英文题
    -.-
    然后就是读不懂题目的意思

    其实这道题的解法很简单
    就是求能让这个一元二次方程取到极值时的整数T的值
    ……呃
    或者说
    求出一个整数T 让取它为值时 函数结果最大
    (因为N>0)

    方程其实应该这么写
    T*(C - T*N)
    等价于
    -N*T^2+C*T

    换成 x 或许更好理解……
    y=-N*x^2+C*x

    所以……
    很简单嘛

    还有需要注意的就是 这里要求的是整数T的值
    所以需要判断用公式得到的结果是不是整数
    如果不是
    还需判断它左右两个整数的函数值大小
    (还有N==0时 需要输出的是0)

    #include<stdio.h>
    #include<math.h>
    int main() {
        int T;
        int i;
        long long N,C,x;
        scanf("%d",&T);
        for(i=1; i<=T; i++) {
            scanf("%lld %lld",&N,&C);
            if(!N)
                x=0;
            else {
                x=(C/N)/2;
                if(C%(2*N))
                    if((C*x-N*x*x)<(C*(x+1)-N*(x+1)*(x+1)))
                        x++;
            }
            printf("Case %d: %lld\n",i,x);
        }
        return 0;
    }

    题目地址:【Light】[1275]Internet Service Providers

  • 相关阅读:
    docker安装部署命令
    kubernetes原理
    kubernetes安装部署
    Ansible安装
    模拟红绿灯(递归与队列)
    数据结构——顺序表
    数据结构——基本概念
    C语言高级编程
    Shell编程
    Shell命令
  • 原文地址:https://www.cnblogs.com/BoilTask/p/12569966.html
Copyright © 2011-2022 走看看