POJ 1840 Eqs解題報告

2021-07-27 05:17:22 字數 990 閱讀 5893

題目大意:

對於給定的a1,a2,a3,a4,a5[-50,50]。讓你求出方程a1·x1^3+a2·x2^3+a3·x3^3+a4·x4^3+a5·x5^3=0的解([-50,50]範圍內)的個數。

思路:

如果只是簡單地列舉範圍內的所有的數,那麼,100^5=10^10肯定是超時了。優化方法:用列表法首先寫出x^3的所有可能值(100個),再求出所有a1·x1^3 + a2·x2^3+ a3·x3^3的可能值(n^3),並排序(n^3)*(log(n^3))。和所有a4·x4^3+ a5·x5^3的可能值(n^2),然後列舉所有a4·x4^3+ a5·x5^3的可能值,二分查詢a1·x1^3 + a2·x2^3+ a3·x3^3的可能值中是否存在對應解(n^2)*(log(n^3))。

總時間複雜度為:(n^3)(log(n^3))。

然後寫到一半發現,二分還是慢,雜湊表更快,而且不需要排序,只需要o(n^3)。

#include#include#include#include#define n 110

#define mod 1000000

using namespace std;

int a[6]=;

int x[n]=;

int s[n*n*n]=;

int hash[n*n*n]=;

int next[n*n*n]=;

/*int find(int x)

return ss;

}*/int my_find(int x)

u=next[u];

} return z;

}void ceshi()

{ for(int i=0;i<1000000;i++)

{ cout<>a[i];

int l=1;

for(int i=0;i

poj解題報告 1328

不得不說,這題是讓我飽受折磨,畢竟第一次做貪心演算法,而且wa了好多次,幸好有學長的幫助,最終找到了問題所在,是在快排上是問題,double高位不可向int低位轉換,由於一開始強制轉換導致雖然樣例和其他的測試資料過了,但還是wa,現在改完了就對了,附上ac ps 這題通過率是22 真心不簡單 如下 ...

poj解題報告 2586

這題我是用的貪心演算法,其實不用也可以,列舉也能解決,因為情況不多。因為是每連續5個月必有虧損,而一年只有1 5,2 6,3 7,4 8 8 12共8種情況。現在設盈餘為s,虧損為d,可列出以下幾種情況。ssssdssssdss 4ssssddsssddss 3s 2d ssdddssdddss 2...

poj解題報告 2635

這題特別好理解,就是 坑啊。題意就是給乙個數,這個數是兩個大素數的積,再給出乙個數,如果最小的素數比給的數大,列印good,否則列印bad和最小的素數。這題用的方法是高精度求模 同餘模定理。還有素數打表,把10 6內的素數全部預打表,在求模時則列舉到小於l為止。注意打表不能只打到100w,要保證素數...