目錄
A.Polynomial
Accepts: 2212
Submissions: 5283
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 32768/32768 K (Java/Others)
Problem Description
度度熊最近學習了多項式和極限的概念。 現在他有兩個多項式 f(x) 和 g(x),他想知道當 x 趨近無限大的時候,f(x)/g(x) 收斂於多少。
Input
第一行一個整數 T (1≤T≤100) 表示數據組數。 對於每組數據,第一行一個整數 n (1≤n≤1,000),n−1表示多項式 f和 g 可能的最高項的次數(最高項係數不一定非0)。 接下來一行 n 個數表示多項式 f,第 i 個整數 fi (0≤fi≤1,000,000)表示次數爲 i−1次的項的係數。 接下來一行 n 個數表示多項式 g,第 i 個整數 gi (0≤gi≤1,000,000)表示次數爲 i−1 次的項的係數。 數據保證多項式 f 和 g 的係數中至少有一項非0。
Output
對於每組數據,輸出一個最簡分數 a/b(a 和 b 的最大公約數爲1)表示答案。 如果不收斂,輸出 1/0。
Sample Input
3
2
0 2
1 0
2
1 0
0 2
3
2 4 0
1 2 0
Sample Output
1/0
0/1
2/1
樣例描述
這些多項式分別爲
f(x)=2xf(x) = 2xf(x)=2x
g(x)=1g(x) = 1g(x)=1
f(x)=1f(x) = 1f(x)=1
g(x)=2xg(x) = 2xg(x)=2x
f(x)=4x+2f(x) = 4x + 2f(x)=4x+2
g(x)=2x+1g(x) = 2x + 1g(x)=2x+1
題意分析:
1.題是什麼
每組樣例給你一個整數n,接下來是兩排n個整數,表示兩個n-1次多項式f和g,求f/g的極限值
2.思路
我們知道多項式f(x)/g(x)極限只有三種情況,根據f與g的最高次項分爲f比g高階時爲無窮大,f比g低階時爲無窮小和同階時爲最高次項係數比,由題意高輸出1/0,低輸出0/1,同階輸出最高次項的係數比,同時根據題意通過gcd算法進行最簡分數的化簡即可。
AC代碼:
#include <stdio.h>
const int maxn=1e3+3;
int gcd(int a,int b){
if(b==0) return a;
return gcd(b,a%b);
}
int f[maxn],g[maxn];
void solve(){
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&f[i]);
for(int i=0;i<n;i++) scanf("%d",&g[i]);
int f_zpre=0,g_zpre=0;
for(int i=n-1;i>=0;i--){
if(f[i]) break;
f_zpre++;
}
for(int i=n-1;i>=0;i--){
if(g[i]) break;
g_zpre++;
}
if(f_zpre>g_zpre){
printf("0/1\n");
}
else if(f_zpre<g_zpre){
printf("1/0\n");
}
else{
int temp=gcd(f[n-1-f_zpre],g[n-1-g_zpre]);
printf("%d/%d\n",f[n-1-f_zpre]/temp,g[n-1-g_zpre]/temp);
}
}
}
int main(){
solve();
return 0;
}
C.Mindis
Accepts: 117
Submissions: 791
Time Limit: 4000/2000 MS (Java/Others)
Memory Limit: 131072/131072 K (Java/Others)
Problem Description
平面上有 n 個矩形,矩形的邊平行於座標軸,現在度度熊需要操控一名角色從 A 點走到 B 點。 該角色可以上下左右移動,在恰被 k 個矩形覆蓋的區域,該角色的速率爲 k+1 個距離/秒(矩形覆蓋區域包括邊界)。
請求出 A 移動到 B 最快需要多少秒。
Input
第一行一個整數 T (1≤T≤5)表示數據組數。 對於每組數據,第一行輸入一個整數 n (1≤n≤200)。 接下來 n 行每行 4 個整數 x1,y1,x2,y2 (0≤x1<x2≤1000000000,0≤y1<y2≤1000000000),分別表示矩形的左下角和右上角的座標。 最後一行四個整數 xa,ya,xb,yb ((0≤xa,xb,ya,yb≤1000000000) 代表 A 和 B 的座標。
Output
對於每組數據,輸出一個小數表示答案。答案保留 5 位小數。
Sample Input
1
1
5 5 6 6
7 7 8 8
Sample Output
2.00000
題意分析:
1.題是什麼?
在1e9*1e9的大地圖上有n個矩形區域,現在我們要求角色從a點走到b點的最短用時,角色在某區域內的速度是覆蓋此位置的矩形數目k+1個距離每秒。
2.思路
首先根據所有矩形以及起點末點以及邊界,對整個地圖進行離散化,然後使用 區間合併思路 分別對x方向和y方向的矩形進行合併,這樣我們就能得到離散化後的地圖中每個點被幾個區間所覆蓋了,之後在離散化後的地圖上進行bfs尋找前往b的最短用時,進行每一步的用時計算時根據離散之前的兩點距離dis除以k+1即可。
AC代碼:
//出了點問題