題解 Luogu U184421 退錢

2022-10-10 16:03:10 字數 1253 閱讀 3490

該題目背景充分描述了 €€£ 現狀

給你乙個 \(n*n\) 的矩陣,詢問 \(k\) 次,每次給出乙個區間,如果這個區間總和 \(sum \le m\) ,輸出oh,no!,否則輸出good!

直接打暴力,對於每次詢問,暴力求 \(sum\): \(sum=\sum\limits^_\sum\limits^_a_\),然後判斷並輸出。

注意,題目保證了前 \(60\%\) 的資料中 \(x1,y1 \le x2,y2\) 所以不需要判斷座標順序。

**:

#include using namespace std;

int a[105][105];

int main()

}cin >> k >> m;

while(k--)

}if(sum<=m)else

}return 0;

}

這裡算是給會正解的 oier 們的良心分了,我把前 \(60\%\) 都設成了 \(x1,y1 \le x2,y2\),因為有人不會注意座標順序,總得和暴力有點區別吧。

正解就是二維字首和,可以參考我的部落格: 字首和與差分。

在本題中,座標 \(x1,y1\) 分別等於圖中的 \(i,j\),\(x2,y2\) 分別等於 \(i+x,j+y\) 大家應該很容易想到。

如果大家本來就會二位字首和但是沒注意細節,就會拿 \(60pts\)。

**:

#include using namespace std;

int a[105][105],f[105][105];

int main()

}cin >> k >> m;

while(k--)else

}return 0;

}

把 \(60pts\) 分的**輸入座標後加入判斷座標順序**即可 \(100pts\) :

if(x1>x2) swap(x1,x2);

if(y1>y2) swap(y1,y2);

最後是 ac **:

#include using namespace std;

int a[105][105],f[105][105];

int main()

}cin >> k >> m;

while(k--)else

}return 0;

}

luogu U103720 薇爾莉特 題解

題麵點這裡 概括一下題目,就是維護矩陣or,要求最後整個矩陣的和,異或和 考慮對需要操作的值val valva l進行二進位制拆分,由於or對於乙個二進位制位上的操作是永久性的,那我們對每一位進行二維差分,最後做一遍二維字首和,對大於1 11的都當做1 11看,就結束了 include define...

Win10系統ireport閃退的問題解決

問題背景 最近專案中要用到ireport軟體,就安裝了5.5的版本,但是怎麼打就是打不開,點了也沒反應。然後就自己關掉。於是就解除安裝了jdk8然後就開啟了。目前ireport5.5和ireport5.6版本都不能在jdk8上執行。jdk6上是可以正常執行的,還有5.6的版本並不能向下相容5.5版本...

問題解決 Gazebo閃退及無法執行

卡在載入世界模型介面 載入太慢 cd gazebo mkdir p models cd gazebo models wget 輸出 gazebo models.txt 繼續執行 wget i gazebo models.txt ls model.tar.g xargs n1 tar xzvf 進到 ...