該題目背景充分描述了 €€£ 現狀
給你乙個 \(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 進到 ...