BZOJ2356 不等式 题解
Python_enjoy
·
·
题解
BZOJ2356 不等式 题解
设 t=\frac{y}{x} 。
设 F(t)=\sum_{i=0}^n a_it^i。
则 f(x)=x^nF(t)。
设 G(t)=\sum_{i=0}^m Ab_it^i。
则 f(x)=x^mG(t)。
问题可化简为 x^nF(t) \geq A(x^mG(t))^r。
进一步化简:x^nF(t) \geq x^{mr}G(t)^r。
当 x \to \infty 时:
根据小学二年级就学过的在指数为大于一的数时指数越大值越大,可得 r \leq \frac{n}{m}。
当 x \to 0 时:
根据小学二年级就学过的在指数为小于一的数时指数越大值越小,可得 r \geq \frac{n}{m}。
\because r \leq \frac{n}{m} 且 r \geq \frac{n}{m}
\therefore r = \frac{n}{m}
\therefore x^nF(t) \geq x^{m \cdot \frac{n}{m} }G(t)^r
\therefore x^nF(t) \geq x^{n}G(t)^r
\therefore F(t) \geq G(t)^r
\therefore F(t)^m \geq G(t)^n
当 t \to \infty 时:
此时 F(t)^m 和 G(t)^n 最高项起到巨大的作用,所以需要 m \deg F \geq n \deg G。
当 t \to 0 时:
此时 F(t) 和 G(t)^r 最低项起到巨大的作用,所以需要 m ord F \leq n ord G。
## 那么,来实现吧
这里的两篇题解都没有讲解代码的实现,那就由我来补这个空吧。
```cpp
#include <bits/stdc++.h>
using namespace std;
int a[105],b[105];
int main()
{
int n,m;
while(cin>>n && n!=EOF)
{
int deg_F=0;
int ord_F=-1;
int deg_G=0;
int ord_G=-1;
for(int i=0; i<=n; i++)
{
cin>>a[i];
if(a[i]!=0)
{
deg_F=i;
if(ord_F==-1)
{
ord_F=i;
}
}
}
cin>>m;
for(int i=0; i<=m; i++)
{
cin>>b[i];
if(b[i]!=0)
{
deg_G=i;
if(ord_G==-1)
{
ord_G=i;
}
}
}
if(deg_F*m>=deg_G*n && ord_F*m<=ord_G*n)
{
cout<<"YES\n";
}
else
{
cout<<"NO\n";
}
}
return 0;
}
```
完结撒花!