有道題目是這樣的:
輸入乙個
n 行
m 列網格,找乙個格仔,使得它所在的行和列中所有格仔的數之和最大。如果答 案不唯一,輸出任意解即可。比如,在下面的例子中,最優解是
(1,3)
,即第一行和的三列的交 點(行從上到下編號為
1~n,列從左到右編號為
1~m),所有
7 個數之和為 35。
快要比賽的時候,有乙個裁判想到了這樣乙個演算法:首先找一行
r(1<=r<=n)
使得該行所有數之和最大,然後找一列
c(1<=c<=m)
使得該列 所有數之和最大,最後直接輸出
(r,c)
。如果有多個滿足條件的r,輸出最小的r。對 於c同樣處理。
顯然,這個演算法是錯的,但它竟然通過了大部分測試資料!你能找出那些讓這個錯誤演算法得到 正確結果的「弱」資料,以便裁判們改進這些資料嗎?
input
輸入包含不超過 100 組資料。每組資料第一行為兩個整數 n, m (1<=n<=500, 1<=m<=500),即行 數和列數。以下 n 行每行包含 m 個 1~100 的整數。輸入的總大小不超過 2mb。
output
對於每組資料,如果錯誤演算法能得到正確結果,輸出"weak",否則輸出"strong"。
sample input
4 4sample output5 5 5 5
1 1 5 1
1 1 5 1
1 1 5 1
5 42 5 1 1
1 1 9 1
1 1 1 1
1 1 1 1
1 1 1 1
case 1: weakcase 2: strong
1.求出最優解和錯誤演算法的解
2.比較最優解和錯誤演算法的解
#include #include #include #include #define maxn 1111111
int a[666][666];
int m,n;
int main()
{ int t=0,i,j,k;
long long sumi[666],maxi,maxj,sumj[666],mi,mj,max; //i 行 j列
while(~scanf("%d%d",&m,&n))
{t++;
mi=maxi=0;
for(i=0;i
2019 藍橋杯省賽 B 組模擬賽(一)
d.結果填空 馬的管轄 e.填空 lis f.程式設計 找質數 思路 因為時間複雜度的問題,o n n 的時間複雜度可能會超時,可以選擇的篩選素數的方法有埃氏篩法o n logn 尤拉篩法,這裡選的是尤拉篩法o n 直接遍歷找兩個素數相加等於n 因為要求字典樹最小,所以不會超時 ac include...
2018 藍橋杯省賽 B 組模擬賽(一)
給你乙個序列,請你在其中求出一段最長嚴格上公升的部分,它不一定要連續。include includeusing namespace std int f 10000 b 10000 int lis int n res max res,f i return res 1 int main printf d...
2019 藍橋杯省賽 A 組模擬賽(一) 修建公路
題目 蒜頭國有 nn 座城市,編號分別為 0,1,2,3,n 1。編號為 x和 y的兩座城市之間如果要修高速公路,必須花費 x y個金幣,其中 表示二進位制按位或。吝嗇的國王想要花最少的 修建高速公路,使得所有城市可以通過若干條高速公路互相達到。現在請你求出 n 2019時,一共有多少不同的方案,能...