面接の本題
4622 ワード
牛客のネット上で1セットの本当の問題をして手を練習するつもりで、バイトの鼓動を見て、5つの問題、3つのプログラミング、2つの簡単な答え、とても覇気があります;
ちょっと见てごらん
テーマ1:推奨効果を絶えず最適化するために、今日のトップ記事は毎日大量のデータを保存し、処理します.このようなシーンがあると仮定します:私达はユーザーに対してそれらの登录の时间の相前後によってラベルをつけて、1种类の文章に対して、すべてのユーザーはすべて异なる好みの値があって、私达はある时间の内に登录するユーザー(ラベルがつながっているいくつかのユーザー)の中で、どれだけのユーザーがこのような文章に対してkが好きですかを知りたいです.特定の理由により、1つのクエリのユーザ区間が別のクエリのユーザ区間を完全に上書きすることはない(L 1<=L 2<=R 2<=R 1は存在しない).(詳細は牛客網でご覧いただけます)
分析:最初の問題は自然に比較的に楽で、問題を解く構想は比較的に簡単で、循環して探せばいいので、難しいことはありません.
コード:
テーマ2:手串芸能人として、金主があなたにn個の雑色のビーズを含む手串を注文しました.各ビーズは無色か、いくつかの色を塗っています.手串の色をそんなに単調に見せるために、金主は、手串の任意の色(無色を含まない)を、任意の連続したm個のビーズの中に1回だけ現れるように要求した(ここで手串は環状であることに注意).手串の色は全部でc種類あります.次に、n個のビーズの手串に、各ビーズに含まれる色でそれぞれどれらがあるかをタイミング針順に教えてあげます.この手の串に何色が要求に合わないか判断してください.すなわち、任意の連続m個のビーズに少なくとも2回現れた色が何色あるかを尋ねる.
分析:テーマを见るのは少し复雑なようで、确かに、このようなテーマは、まず1种の构造を探してすべての情报を保存して、もっと直感的な検索操作ができて、1つの2次元の配列を初期化して、すべてのビーズの対応する色を保存して、それからすべての色によって现れたビーズの位置を探して、更に位置が标准に合っているかどうかを判断します;
コード:
ちょっと见てごらん
テーマ1:推奨効果を絶えず最適化するために、今日のトップ記事は毎日大量のデータを保存し、処理します.このようなシーンがあると仮定します:私达はユーザーに対してそれらの登录の时间の相前後によってラベルをつけて、1种类の文章に対して、すべてのユーザーはすべて异なる好みの値があって、私达はある时间の内に登录するユーザー(ラベルがつながっているいくつかのユーザー)の中で、どれだけのユーザーがこのような文章に対してkが好きですかを知りたいです.特定の理由により、1つのクエリのユーザ区間が別のクエリのユーザ区間を完全に上書きすることはない(L 1<=L 2<=R 2<=R 1は存在しない).(詳細は牛客網でご覧いただけます)
分析:最初の問題は自然に比較的に楽で、問題を解く構想は比較的に簡単で、循環して探せばいいので、難しいことはありません.
コード:
#include
using
namespace
std;
int
main(){
int
n,i;
cin>>n;
int
a[n+1];
for
(i=1;i<=n;i++){
cin>>a[i];
}
int
x,j;
int
s,b,c;
int
res[n];
int
count=0;
cin>>x;
for
(i=0;i
cin>>s>>b>>c;
for
(j=s;j<=b;j++){
if
(a[j]==c){
count++;
}
}
res[i]=count;
count=0;
}
for
(i=0;i
cout<
}
}
テーマ2:手串芸能人として、金主があなたにn個の雑色のビーズを含む手串を注文しました.各ビーズは無色か、いくつかの色を塗っています.手串の色をそんなに単調に見せるために、金主は、手串の任意の色(無色を含まない)を、任意の連続したm個のビーズの中に1回だけ現れるように要求した(ここで手串は環状であることに注意).手串の色は全部でc種類あります.次に、n個のビーズの手串に、各ビーズに含まれる色でそれぞれどれらがあるかをタイミング針順に教えてあげます.この手の串に何色が要求に合わないか判断してください.すなわち、任意の連続m個のビーズに少なくとも2回現れた色が何色あるかを尋ねる.
分析:テーマを见るのは少し复雑なようで、确かに、このようなテーマは、まず1种の构造を探してすべての情报を保存して、もっと直感的な検索操作ができて、1つの2次元の配列を初期化して、すべてのビーズの対応する色を保存して、それからすべての色によって现れたビーズの位置を探して、更に位置が标准に合っているかどうかを判断します;
コード:
#include
using
namespace
std;
int
main(){
int
n,m,c;
cin>>n>>m>>c;
int
a[n][c+1];
int
b[n];
memset
(a,0,
sizeof
(a));
memset
(b,0,
sizeof
(b));
int
i,j,num,k,color;
int
count=0;
for
(i=0;i
cin>>num;
for
(j=0;j
cin>>color;
a[i][color]=1;
}
}
for
(j=1;j<=c;j++){
k=0;
for
(i=0;i
if
(a[i][j]==1){
b[k++]=i+1;
}
}
if
(k!=1){
for
(i=0;i
if
(b[i+1]-b[i]
count++;
break
;
}
}
}
}
cout<
}
( )!!!!