日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

A. 纵情

發布時間:2023/12/19 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 A. 纵情 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

A. 縱情

題目鏈接:下面的題面有一些問題

http://10.1.6.216/contest/18/problem/107

縱情山河萬里,肆意九州五月 —— gfhx

題目背景

然而題面跟標題并沒有任何關系,只是為了告訴你此題的毒瘤出題人是誰。

題目描述

最近高一同學都在備戰期中考試,新出現了一種題型叫做“保值區間”(懷疑是jjb

刷存在感,因為有他自己名字,一類題連出三次,切掉不是有手就行?)。鑒于高二學長數學比我們巨,那就麻煩你們現推一下結論叭。

“保值區間”的定義是這樣的:一個函數如果在區間[m,n]

(m<n)上是單調的,并且值域也是[m,n](m<n),則[m,n]為該函數的保值區間。為了將問題簡化,本題是這樣的:給定一個關于x的函數f(x)=ax2+bx+c,要求求出該函數在單調遞增的區間內是否存在“保值區間”。如果存在,那么輸出“YES”,否則輸出“NO”

(只輸出引號內的內容)。

輸入格式

第一行一個整數T

,表示有T

組輸入輸出。

共有T

行,三個整數分別代表a,b,c

,其含義見題目描述。

輸出格式

每一行對對應的a,b,c

輸出"YES"或"NO"

樣例輸入輸出

樣例輸入1

1
1 2 3

樣例輸出1

NO

樣例輸入2

10
9 2 3
2 7 3
4 0 4
3 3 1
4 0 8
1 7 0
5 4 0
1 4 2
6 9 0
1 0 0

樣例輸出2

NO
NO
NO
NO
NO
NO
NO
YES
NO
YES

(作為毒瘤出題人的我奉上一組不水的樣例,看我多有良心,一定要簽到喲~~)

樣例解釋

自己手玩去。。。手玩不出來別學數學了(bushi

數據范圍

對于100

的數據,T?1000000,?1000000000?a,b,c?1000000000

作為簽到題我并不想給部分分,畢竟暴力也打不出來,一定要有不ACAC即爆0的破釜沉舟的勇氣!!!

題目分析:
其實這道題還算是挺水的(就是一些毒瘤特判真的是特別多,崩潰qwq)。根據題目我們可以發現,既要在增區間內,又要使定義域與值域相等,這不就是求二次函數和y=x的交點嘛,求出交點,然后判斷這個點與對稱軸的關系(其實就是判斷這個兩個點是不是滿足在增區間之內),就可以完美(并不)AC這道題。

但是由于神仙毒瘤出題人的神奇腦洞,我們發現這個題里面是存在一些坑點的:
1.特判a=0的情況,如果這個時候b=1,c=0,也就是說這個函數是y=x,那么這個函數就存在保值區間,不然的話,其他的一次函數都不存在保值區間

2.由于輸入數據非常大,所以我們一定不可以使用cin cout!特別是不能像我這個憨憨一樣用cout<<endl!qwq endl 對于時間復雜度的增加是非常多的!

AC代碼:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
inline ll read()
{
    ll X=0,w=0; char ch=0;
    while(!isdigit(ch)) {w|=ch=='-';ch=getchar();}
    while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar();
    return w?-X:X;
}//快讀優化

/*unsigned */long long ans;
ll t,a,b,c,sum1,sum2;
ll p;
//這個題long long就可以解決所有事情,而且有負值,所以如果用unsigned long long 并不合適

int main()
{
//    scanf("%lld",&t);
        t=read();
    while(t--)
    {
        a=read();b=read();c=read();
        if(a==0)
        {
            if(c==0&&b==1) printf("YES
");
            else
            {
            printf("NO
");
            }
            
            continue;
        }
        ans=(b-1)*(b-1)-4*a*c;//求根判別式
        if(ans<=0) 
        {
            printf("NO
");
            continue;
        }
        else
        {
            sum1=(1-b+sqrt(ans));
            sum2=(1-b-sqrt(ans));
                        //如果除以2a,那么最后有可能出現小數,而long long是下取整,所以有可能導致結果出鍋,因此我們不除以2a
        }
        
        p=-b;//同樣不除以2a
        if(sum1>=p&&sum2>=p&&a>0) 
        {
            printf("YES
");
            continue;
        }
        else if(sum1<=p&&sum2<=p&&a<0)
        {
            printf("YES
");
            continue;
        }
                //判斷是不是在增區間之內
    
        printf("NO
");    
    }
    
    return 0;
}                        

----------------end-------------------

總結

以上是生活随笔為你收集整理的A. 纵情的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。