滴滴 9.17笔试 凉经
第一题:
一个标书证书的字符串,其中有几位是问号,知道这个数字满足
1,可被3整除;2,相邻数字不同;3,首位不为0
问这个数字最小是多少
直接贪心+回溯 ac
bool f(string& str, int index, int pre){ if(index==str.size()){ return pre==0; } if(str[index]=='?'){ char before=(index==0)?'0':str[index-1]; char after=(index+1==str.size())?'*':str[index+1]; for(int i=0;i<9;i++){ char c='0'+i; if(c!=before && c!=after){ str[index]=c; int left=(pre*10+i)%3; if(f(str,index+1,left)) return true; //str[index]='?'; } } str[index]='?'; }else{ int left=(pre*10+str[index]-'0')%3; return f(str, index+1,left); } return false; } int main(){ string str; cin>>str; f(str, 0, 0); cout<<str<<endl; return 0; }
第二题:
n个栅栏,每个栅栏被涂上两种漆,每次在【l,r】区间上(左闭右闭)涂一种漆,当第一种漆涂至少p次,第二种漆涂之撒后q次时这个栅栏才是正常。问给定一系列区间,有多少个栅栏是正常的。
经典的排序+贪婪。但是问题是要考虑端点,因为全是比区间,我就是栽在这上面了。。。。后来刚改完就交卷了,服了
int main(){ int n,p,q; cin>>n>>p>>q; vector<vector<int>> points(2*n, vector<int>(3,0));//[index, type, add/delete] for(int i=0;i<n;i++) { cin>>points[i][0]; points[i][2]=1; } for(int i=n;i<2*n;i++) { cin>>points[i][0]; points[i][2]=-1; } for(int i=0;i<n;i++){ int type; cin>>type; points[i][1]=type; points[i+n][1]=type; } //for(auto& v:points) cout<<v[0]<<", "<<v[1]<<", "<<v[2]<<endl; sort(points.begin(), points.end()); //cout<<"====="<<endl; //for(auto& v:points) cout<<v[0]<<", "<<v[1]<<", "<<v[2]<<endl; int type1=0,type2=0; int pre=points[0][0]; if(points[0][1]==1){ type1=points[0][2]; }else{ type2=points[0][2]; } int result=0; for(int i=1;i<points.size();){ cout<<i<<endl; int index=points[i][0],type=points[i][1]; int type1_add=0,type1_minux=0,type2_add=0,type2_minux=0; if(type1>=p && type2>=q){ result+=index-pre; } cout<<index<<type1<<", "<<type2<<endl; while(i<points.size() && points[i][0]==index){ if(points[i][1]==1){ if(points[i][2]>0){ type1_add++; }else{ type1_minux++; } }else{ if(points[i][2]>0){ type2_add++; }else{ type2_minux++; } } i++; } type1+=type1_add; type2+=type2_add; if(type1>=p && type2>=q) result++; type1-=type1_minux; type2-=type2_minux; pre=index+1; } cout<<result; return 0; }感觉出这种类型的题应该滴滴可能也不太想招人。但是我还是没ac。。最近一直是在上机的时候考虑问题不仔细,临要弄完了就才想明白。。。心态崩了