因賬號衝突而遺憾錯過了這場。拿來練練手,稍微了解一下題目難度吧。
比賽共兩題,其中第二題有三小問,按情況,一般做出第一題和第二題的第一小問,並加快手速就能晉級了,那就看看這兩部分吧
思路:矩形晶元的放置,一下就想到了之前做過的一道遞推,只需要將遞推從一維推廣到二維即可,用dp即可實現
對於被焊接了的位置,由於均為整行整列而焊接,因此,開兩個數bool組記錄即可,至於dp處理過程,分三種情況考慮
1.該位置被焊上
2.該位置前乙個位置被焊上
3.無以上兩種情況
組合一下共有9種情況,再綜合一下,分類討論即可
最後注意一下初始化,0行和1行單獨處理,對於1行,別忘了也要分以上三種情況考慮。
最後,還是要細心,x,y座標混淆的小錯誤真心不容易debug啊,特別是樣例卡不掉的情況下
/*
author:owen_q
*/#include using namespace std;
const int maxn = 110;
bool r[maxn];
bool l[maxn];
int dp[maxn][maxn];
int main()
else
}dp[0][0] = 0;
dp[1][0] = 0;
dp[0][1] = 0;
dp[1][1] = 0;
for(int i=2;i<=m;i++)
else
}else
}for(int i=2;i<=n;i++)
else
}else
}for(int i=2;i<=n;i++)
}else
else
else}}
}else
else
else}}
}}
}printf("%d\n",dp[n][m]);
}return 0;
}
思路:判斷點的移動情況,有不超過半數的錯誤資料,於是考慮記錄所有情況並計數,不少於半數的即為最終結果。
資料範圍極大,開陣列肯定會爆。由於資料量比較可觀,於是想到map,並構造pair進行儲存。
最後注意一下,判斷不少於半數時用乘變除會更佳
/*
author:owen_q
*/#include using namespace std;
map,int> t;
int main()
}return 0;
}
計蒜客初賽3練習賽
計蒜客初賽5之前選了初賽3的題強行練手,確實這道題對思維的要求不低,要求轉換思路,價值挺大。初賽5成功晉級後,將未完成的 補完,完結此次初賽之旅。思路 這題明顯是個模擬題,模擬兩個小車的位置。不過,一開始準備寫個程式專門判斷小車位置,考慮到小車方向,時間,並單獨處理碰撞和碰牆情況,由於還看存在半點碰...
計蒜客 練習題 計算集合的並 set
給你兩個集合,計算其並集,即 注 中不允許出現重複元素,但是 與 之間可能存在相同元素。輸入資料分為三行,第一行有兩個數字 n,m 0n,m 0m 10 000 分別表示集合 a 和集合 b 的元素個數。後兩行分別表示集合 a 和集合 b。每個元素為不超出 int 範圍的整數,每個元素之間用乙個空格...
計蒜客練習題 水果店(巢狀map)
這道題主要就是考察巢狀map的使用 這道題我一開始用的map pair但是怎麼寫都不對。別說我還真不知道map該怎麼巢狀,以及怎麼呼叫巢狀map。map m 定義在第二維,插入的話就跟二維陣列一樣 m tm1 tm2 tm3 呼叫的話需要定義兩個不同的iterator乙個是外層的,乙個是內層的。具體...