首页 > 其他分享 >luoguP1024-二分

luoguP1024-二分

时间:2024-04-04 17:22:34浏览次数:14  
标签:二分 实根 x1 int formula 100 luoguP1024

题目链接
实数二分:实数二分不存在边界问题,二分时可以设立循环次数或确立精度

1.若存在 2个数 x1和 x2,且x1<x2, f(x1)×f(x2)<0之间一定存在它的一个浮点数根
2.且题目给定实根范围在-100~100之间,按位枚举方程= 0时,显然x是方程的一个整数实根

题目描述
有形如:ax3+bx2+cx+d=0这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实(根的范围在 −100至 100之间),且根与根之差的绝对值 ≥1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后 2位。

提示:记方程 f(x)=0,若存在 2个数 x1和 x2,且x1<x2, f(x1)×f(x2)<0,则在 (x1,x2)之间一定有一个根。

输入格式
一行,4个实数 a,b,c,d。

输出格式
一行,3个实根,从小到大输出,并精确到小数点后 2位。

样例 #1
样例输入 #1
1 -5 -4 20
样例输出 #1
-2.00 2.00 5.00
提示
【题目来源】
NOIP 2001 提高组第一题

ACcode:

点击查看代码
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 2 * 1e5 + 10;

typedef long long LL;

double a, b, c, d;

double formula(int x)
{
    return a * x * x * x + b * x * x + c * x + d;
}
int main()
{ 
    cin >> a >> b >> c >> d;
    for(int i = - 100; i < 100; ++ i)
    {
        double l = i, r = i + 1, mid = 0;
        if(formula(l) == 0) {
            printf("%.2f ", l);
            continue;
        }
        if(formula(l) * formula(r) < 0) {
            for(int j = 0; j < 61; ++ j)
            {
                mid = (l + r) / 2;
                if(formula(l) * formula(mid) <= 0) r = mid;
                else l = mid;
            }
            printf("%.2f ", l);
        }
    }
    return 0;
}

当时思路:没有进行深入思考,其实是一道简单题

标签:二分,实根,x1,int,formula,100,luoguP1024
From: https://www.cnblogs.com/OVSolitario-io/p/18114379

相关文章

  • 代码随想录DAY1 | 二分,双指针移除元素
    代码随想录DAY1|二分,双指针移除元素题目描述给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且......
  • 代码随想录算法训练营第一天 | 数组 704.二分查找 27.移除元素
    leetcode704.二分查找题目704.二分查找给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。解题思路代码实现本题对自己的难点有大概的解题思路,但是代码实现有几个点写不出来1、怎么取......
  • 09-代码随想704二分查找
    704二分查找给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示......
  • 银行贷款(二分)
    题目描述当一个人从银行贷款后,在一段时间内他(她)将不得不每月偿还固定的分期付款。这个问题要求计算出贷款者向银行支付的利率。假设利率按月累计。输入格式三个用空格隔开的正整数。第一个整数表示贷款的原值 w0​,第二个整数表示每月支付的分期付款金额 w,第三个整数表示......
  • 灵茶之二分02
    灵茶之二分02题目链接https://codeforces.com/problemset/problem/1538/C题目大意输入T(≤104)表示T组数据。所有数据的n之和≤2e5。每组数据输入n(1≤n≤2e5)LR(1≤L≤R≤1e9)和长为n的数组a(1≤a[i]≤1e9)。输出有多少对(i,j)满足i<j且L<=a[i]+......
  • 二分法
    概述二分查找详解.mdSTLC++二分查找库二分查找库闭区间、左闭右开区间和开区间视频讲解二分法classSolution{//lower_bound返回最小的满足nums[i]>=target的i//如果数组为空,或者所有数都<target,则返回nums.size()//要求nums是非递减的,即......
  • [入门]二分查找右侧边界
    说明请在一个有序不递减的数组中(数组中的值有相等的值),采用二分查找,找到最后1次出现值x的位置,如果不存在x请输出-1。请注意:本题要求出q个x,每个x在数组中最后一次出现的位置。比如有6个数,分别是:122233,那么如果要求3个数:325,在数组中最后一次出现的位置,答案是:64-1。输......
  • C108 整体二分+树状数组(区修+区查)P3332 [ZJOI2013] K大数查询
    视频链接:C108整体二分+树状数组(区修+区查)P3332[ZJOI2013]K大数查询_哔哩哔哩_bilibili   参考:C82树状数组区修+区查P3372线段树1-董晓-博客园(cnblogs.com)LuoguP3332[ZJOI2013]K大数查询//整体二分+树状数组(区修+区查)O(n*logn*logn)#include<iost......
  • 备战蓝桥杯第三模块之二分模版+二分练题
    前言因本系列是为了蓝桥杯前几天快速过知识点所准备,所以有些部分会很简洁模版整数二分intMid(inta,intb){intl=1;intr=1e9+10;while(l<r){intmid=l+r>>2;if(a/mid<=b)//这儿一般情况下看需要用mid判断什么条件r=mid;elsel=......
  • 【题解】AGC007E | 二分答案 复杂度分析
    首先考虑题目要求每条边被经过两次,这说明了我们进入一个子树后一定会处理完子树内所有的叶子后离开该子树,否则子树上端那条边会进出至少两次,即经过至少四次。所以这说明了子树之间的独立性:某个子树在答案中一定是一个连续的区间,这引导我们从有根树信息自下向上拼接的角度考虑。我......