1054 The Dominant Color (20 分)_12行代码AC
立志用最少的代碼做最高效的表達
PAT甲級最優題解——>傳送門
Behind the scenes in the computer’s memory, color is always talked about as a series of 24 bits of information for each pixel. In an image, the color with the largest proportional area is called the dominant color. A strictly dominant color takes more than half of the total area. Now given an image of resolution M by N (for example, 800×600), you are supposed to point out the strictly dominant color.
Input Specification:
Each input file contains one test case. For each case, the first line contains 2 positive numbers: M (≤800) and N (≤600) which are the resolutions of the image. Then N lines follow, each contains M digital colors in the range [0,2^24). It is guaranteed that the strictly dominant color exists for each input image. All the numbers in a line are separated by a space.
Output Specification:
For each test case, simply print the dominant color in a line.
Sample Input:
5 3
0 0 255 16777215 24
24 24 0 0 24
24 0 24 24 24
Sample Output:
24
散列表,永遠滴神
流同步問題:
如果采用cin、cout輸入輸出,需要取消流同步,即:ios::sync_with_stdio(false);。 速度相較于scanf、printf來說更快。
集合和映射問題:
儲備知識擴展(很重要,提高效率,降低碼量):
-
set——有序去重集合。
-
map——有序去重映射
-
multiset——有序不去重集合
-
multimap——有序不去重映射
-
unordered_set——無序不去重集合(普通集合)
-
unordered_map——無序不去重映射(普通映射)
#include<bits/stdc++.h> using namespace std; int main() {ios::sync_with_stdio(false);int n, m; cin >> n >> m;unordered_map<int, int>um;for(int i = 0; i < n*m; i++) {int x; cin >> x; um[x]++;if(um[x] >= (n*m)/2+1) { cout << x; return 0; }}return 0; }
耗時:
求贊哦~ (?ω?)
總結
以上是生活随笔為你收集整理的1054 The Dominant Color (20 分)_12行代码AC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【附段错误原因,最后两个测试点】1052
- 下一篇: 【附超时原因】1055 The Worl