題目鏈結
時間限制:
10000ms
單點時限:
1000ms
記憶體限制:
256mb
在影象處理的技術中,經常會用到運算元與影象進行卷積運算,從而達到平滑影象或是查詢邊界的效果。
假設原圖為h × w的矩陣a,運算元矩陣為d × d的矩陣op,則處理後的矩陣b大小為(h-d+1) × (w-d+1)。其中:
b[i][j] = ∑(a[i-1+dx][j-1+dy]*op[dx][dy]) | (dx = 1 .. d, dy = 1 .. d), 1 ≤ i ≤ h-d+1, 1 ≤ j ≤ w-d+1
給定矩陣a和b,以及運算元矩陣的邊長d。你能求出運算元矩陣中每個元素的值嗎?
第1行:3個整數,h, w, d,分別表示原圖的高度和寬度,以及運算元矩陣的大小。5≤h,w≤60,1≤d≤5,d一定是奇數。
第2..h+1行:每行w個整數,第i+1行第j列表示a[i][j],0≤a[i][j]≤255
接下來h-d+1行:每行w-d+1個整數,表示b[i][j],b[i][j]在int範圍內,可能為負數。
輸入保證有唯一解,並且解矩陣的每個元素都是整數。
第1..d行:每行d個整數,第i行第j列表示op[i][j]。
樣例輸入
5 5 3樣例輸出1 6 13 10 3
13 1 5 6 15
8 2 15 0 12
19 19 17 18 18
9 18 19 5 17
22 15 6
35 -36 51
-20 3 -32
0 1 01 -4 1
0 1 0
思路:開始感覺無從下手,但是你把數學方程寫出來(一定要動手寫!),就會發現直接用高斯消元就能解了。
ac**:
#include#include#include#include#include#define fbs 1e-6
using namespace std;
double a[3605][30];
double c[3605];
double ans[30];
int h,w,d;
int n,m; //m行n列
void swap(int i,int j) //交換i,j行
void gauss()
}for(int j=i+1;j<=m;j++) //消除第i+1行到第m行的第i列
}//求出唯一解
for(int i=n;i>0;i--)
ans[i]=c[i]/a[i][i];
}}int main()
printf("\n");
}return 0;
}
hiho 1166 高斯消元
一道高斯消元題目 題意 給你乙個數列ai,1 i n ai是0或1,現在你可以每次翻轉乙個區間,即將0變1,1變0,且每個區間被選擇的概率為 n n 1 2,問全變成0的翻轉次數期望是多少 思路 另外,這個思路還有一些需要注意的地方,在確定這個方法是對的前提下,那麼d中的1的個數必然是偶數的,這樣的...
hiho 1196 高斯消元 二
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述在上一回中,小hi和小ho趁著便利店打折,買了一大堆零食。當他們結賬後,看到便利店門口還有其他的活動。店主 買了東西還可以參加遊戲活動哦,如果能夠完成遊戲還有額外的獎品。小hi和小ho趕緊湊了過去。店主放了一塊遊戲板在店門...
hiho一下 第二週
題目名稱 trie樹 小hi和小ho是一對好朋友,出生在資訊化社會的他們對程式設計產生了莫大的興趣,他們約定好互相幫助,在程式設計的學習道路上一同前進。這一天,他們遇到了一本詞典,於是小hi就向小ho提出了那個經典的問題 小ho,你能不能對於每乙個我給出的字串,都在這個詞典裡面找到以這個字串開頭的所...