9.18雷火筆試
1、車牌號直接模擬就好 100%
#include?<bits/stdc++.h> using?namespace?std; int?main(){ ????int?T; ????cin?>>?T; ????double?ret?=?0; ????int?t?=?T; ????while(T--?>?0){ ????????int?cur_score?=?0; ????????string?scan,?gt; ????????cin?>>?scan?>>?gt; ????????vector<string>?scan_v; ????????vector<string>?gt_v; ????????//?顏色 ????????scan_v.push_back(scan.substr(0,?1)); ????????gt_v.push_back(gt.substr(0,?1)); ????????//?地址 ????????scan_v.push_back(scan.substr(1,?scan.size()-1-5)); ????????gt_v.push_back(gt.substr(1,?gt.size()-1-5)); ????????//?車牌號 ????????scan_v.push_back(scan.substr(scan.size()-5,?5)); ????????gt_v.push_back(gt.substr(gt.size()-5,?5)); ???????? ????????if(scan_v[0]?==?gt_v[0]) ????????????cur_score?+=?2; ????????if(scan_v[1]?==?gt_v[1]) ????????????cur_score?+=?3; ????????int?same_size?=?0; ????????for(int?idx1=0;?idx1<?scan_v[2].size();?idx1++){ ????????????for(int?idx2=0;?idx2<?gt_v[2].size();?idx2++){ ????????????????int?len?=?0; ????????????????int?i?=?idx1,?j=idx2; ????????????????while(i<?scan_v[2].size()&&?j<?gt_v[2].size()?&&?scan_v[2][i]?==?gt_v[2][j]){ ????????????????????i++; ????????????????????j++; ????????????????????len++; ????????????????} ????????????????same_size?=?max(len,?same_size); ????????????} ????????} ????????cur_score?+=?same_size; ????????ret?+=?((double)cur_score/10); ????} ????ret?=?ret?/?(t); ????printf("%0.2f",?ret); ????return?0; }2、給每一個資源設(shè)置一個引用計數(shù),被加載時就加一,減少時就減一,類似shared_ptr? 100%
#include?<bits/stdc++.h> using?namespace?std; int?cur_size?=?0; void?load(unordered_set<int>&?has_load,?vector<vector<int>>&?need,?vector<int>&?times,?int?id){ ????if(has_load.find(id)?!=?has_load.end()) ????????return; ????has_load.insert(id); ????times[id]?+=?1; ????if(times[id]?==?1) ????????cur_size?+=?1; ????for(int?i=0;?i<?need[id].size();?i++){ ????????load(has_load,?need,?times,?need[id][i]); ????} } int?main(){ ????int?N,?M; ????cin?>>?N?>>?M; ????vector<vector<int>>?need(N); ????vector<int>?times(N,?0); ????for(int?i=0;?i<?N;?i++){ ????????int?num; ????????cin?>>?num; ????????int?idx?=?0; ????????need[i].resize(num); ????????while(num--?>?0){ ????????????cin?>>?need[i][idx++]; ????????} ????} ????int?ret?=?0; ????while(M--?>?0){ ????????int?op,?id; ????????cin?>>?op?>>?id; ????????if(op?==?0){ ????????????for(int?i=0;?i<?need[id].size();?i++){ ????????????????times[need[id][i]]?-=?1; ????????????????if(times[need[id][i]]?==?0){ ????????????????????cur_size?-=?1; ????????????????} ????????????} ????????????times[id]?-=?1; ????????????if(times[id]?==?0){ ????????????????cur_size?-=?1; ????????????} ????????}else{ ????????????unordered_set<int>?has_load; ????????????load(has_load,?need,?times,?id); ????????} ????????ret?=?max(ret,?cur_size); ????} ????cout?<<?ret; ????return?0; }3、N個矩形求拐點;不會
4、10張地圖,每張地圖有怪,和金幣,求自身能獲得的最大金幣數(shù)量;不會