2021.8.6 网易雷火笔试 第一、二、四题代码
四题完成度 100 100 0 100 🤣🤣
第一题
#include<iostream> #include<vector> #include<cmath> using namespace std; int main(){ int q1=0, q2=0 ,p=0; cin>>q1>>q2>>p; int pair_num=0, single_sum=0; cin>>pair_num; vector<int> pair1; vector<int> pair2; vector<int> single; int tmp=0; for(int i=0;i<pair_num;i++){ cin>>tmp; pair1.push_back(tmp); cin>>tmp; pair2.push_back(tmp); } cin>>single_sum; for(int i=0;i<single_sum;i++){ cin>>tmp; single.push_back(tmp); } int res=0; for(int i=0;i<pair_num;i++){ if(abs(q1+q2-pair1[i]-pair2[i])<=p) res++; } for(int i=0;i<single_sum;i++) for(int j=i+1;j<single_sum;j++){ if(abs(single[i]+single[j]-q1-q2)<=p) res++; } cout<<res<<endl; return 0; }第二题
#include<iostream> #include<vector> using namespace std; int num_min(int a, int b, int c); int main(){ int n=0, t1=0, t2=0, t3=0, t4=0; cin>>n>>t1>>t2>>t3>>t4; vector<int> ground1; vector<int> ground2; int tmp=0; for(int i=0;i<n;i++){ cin>>tmp; ground1.push_back(tmp); ground2.push_back(4-tmp); } vector<int> dp1; vector<int> dp2; dp1.push_back(0); dp2.push_back(t4); for(int i=0;i<n-1;i++){ if(ground1[i+1]==ground1[i]){ if(dp1[i]+t1<dp2[i]+t1+t4) dp1.push_back(dp1[i]+t1); else dp1.push_back(dp2[i]+t1+t4); if(dp2[i]+t1<dp1[i]+t1+t4) dp2.push_back(dp2[i]+t1); else dp2.push_back(dp1[i]+t1+t4); } else{ if(ground1[i+1]-ground1[i]>1){ if(dp1[i]+t4+t3+t4<dp2[i]+t3+t4) dp1.push_back(dp1[i]+t4+t3+t4); else dp1.push_back(dp2[i]+t3+t4); if(dp1[i]+t4+t3<dp2[i]+t3) dp2.push_back(dp1[i]+t4+t3); else dp2.push_back(dp2[i]+t3); } else if(ground1[i+1]-ground1[i]<-1){ if(dp2[i]+t4+t3<dp1[i]+t3) dp1.push_back(dp2[i]+t4+t3); else dp1.push_back(dp1[i]+t3); if(dp2[i]+t4+t3+t4<dp1[i]+t3+t4) dp2.push_back(dp2[i]+t4+t3+t4); else dp2.push_back(dp1[i]+t3+t4); } else{ int min=0; if(ground1[i+1]>ground1[i]){ min=num_min(dp1[i]+t2, dp1[i]+t4+t3+t4, dp2[i]+t3+t4); dp1.push_back(min); min=num_min(dp2[i]+t3, dp2[i]+t4+t3+t4, dp1[i]+t2+t4); dp2.push_back(min); } else{ min=num_min(dp1[i]+t3, dp1[i]+t4+t2+t4, dp2[i]+t2+t4); dp1.push_back(min); min=num_min(dp2[i]+t2, dp2[i]+t4+t3+t4, dp1[i]+t3+t4); dp2.push_back(min); } } } } if(dp1[n-1]<dp2[n-1]) cout<<dp1[n-1]<<endl; else cout<<dp2[n-1]<<endl; return 0; } int num_min(int a, int b, int c){ if(a<b) if(a<c) return a; else return c; else if(b<c) return b; else return c; }第四题
#include<iostream> #include<vector> #include<iomanip> using namespace std; double judge(double start, double speed, double my_start, double my_speed, double m, double l); int main(){ double m=0.0, l=0.0; int n=0; while(cin>>m>>n>>l){ vector<double> start; vector<double> speed; double tmp=0.0; for(int i=0;i<n;i++){ cin>>tmp; start.push_back(tmp); } for(int i=0;i<n;i++){ cin>>tmp; speed.push_back(tmp); } double res=0; double res_tmp=0; if(l>=m/2) res=0; else for(int i=1;i<n;i++){ res_tmp=judge(start[i], speed[i], start[0], speed[0], m, l); if(res_tmp>res) res=res_tmp; } cout<<setiosflags(ios::fixed)<<setprecision(2)<<res<<endl; } return 0; } double judge(double start, double speed, double my_start, double my_speed, double m, double l){ double tmp=0; double my_start_pair=my_start+m; if(my_start_pair>=2*m) my_start_pair-=2*m; double my_start_high=my_start+l; if(my_start_high>=2*m) my_start_high-=2*m; double my_start_low=my_start-l; if(my_start_low<0) my_start_low+=2*m; double my_start_pair_high=my_start_pair+l; if(my_start_pair_high>=2*m) my_start_pair_high-=2*m; double my_start_pair_low=my_start_pair-l; if(my_start_pair_low<0) my_start_pair_low+=2*m; if(my_start_high>my_start_low){ if(my_start_high>=start && my_start_low<=start) return 0; } else{ if(start<=my_start_high || start>=my_start_low) return 0; } if(my_start_pair_high>my_start_pair_low){ if(my_start_pair_high>=start && my_start_pair_low<=start) return 0; } else{ if(start<=my_start_pair_high || start>=my_start_pair_low) return 0; } if(my_speed>speed){ if(start>my_start_high && start>my_start_pair_high){ if(my_start_high>my_start_pair_high) tmp=(start-my_start_high)/(my_speed-speed); else tmp=(start-my_start_pair_high)/(my_speed-speed); } else{ if(start<my_start_high && start<my_start_pair_high){ if(my_start_high>my_start_pair_high) tmp=(2*m-my_start_high+start)/(my_speed-speed); else tmp=(2*m-my_start_pair_high+start)/(my_speed-speed); } else{ if(my_start_high>my_start_pair_high) tmp=(start-my_start_pair_high)/(my_speed-speed); else tmp=(start-my_start_high)/(my_speed-speed); } } } else{ if(start>my_start_low && start>my_start_pair_low){ if(my_start_low>my_start_pair_low) tmp=(2*m-start+my_start_pair_low)/(speed-my_speed); else tmp=(2*m-start+my_start_low)/(speed-my_speed); } else{ if(start<my_start_low && start<my_start_pair_low){ if(my_start_low>my_start_pair_low) tmp=(my_start_pair_low-start)/(speed-my_speed); else tmp=(my_start_low-start)/(speed-my_speed); } else{ if(my_start_low>my_start_pair_low) tmp=(my_start_low-start)/(speed-my_speed); else tmp=(my_start_pair_low-start)/(speed-my_speed); } } } return tmp; }