BZOJ2356 不等式 题解

· · 题解

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)^mG(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; } ``` 完结撒花!