1、Aizu ALDS1_4_A Linear Search(线性搜索)
线性搜索写法博客链接(感谢博主)https://blog.csdn.net/u013075699/article/details/78884922
另附ac代码(用到集合)
#include<iostream>
#include<set>
using namespace std;
int main ()
{
set<int> s;
int n,m,val;
cin>>n;
for(int i=0;i<n;i++){
cin>>val;
s.insert(val);
}
cin>>m;
int ct=0;
for(int i=0;i<m;i++){
cin>>val;
if(s.count(val)){
ct++;
}
}
cout<<ct<<endl;
return 0;
}
2、Aizu ALDS1_4_B Binary Search
#include<iostream>
#include<algorithm>
using namespace std;
int arry[100010];
int cnt=0,n,m,val;
void binarysearch(int val){
int l=0,r=n;
while(l<r){
int mid=(l+r)/2;
if(arry[mid]==val){
cnt++;
return ;
}
if(arry[mid]>val){
r=mid;
}else {
l=mid+1;
}
}
return ;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++){
cin>>arry[i];
}
cin>>m;
for(int i=0;i<m;i++){
cin>>val;
binarysearch(val);
/*if (binary_search(arry, arry + n, val))
也可以直接调用binary_search函数,注意参数
cnt++;
*/
}
cout<<cnt<<endl;
return 0;
}
3、Aizu ALDS1_4_C Dictionary(散列表)
关于散列表的详解博客(感谢博主)https://www.cnblogs.com/absfree/p/5508570.html
另附本题详解博客(感谢博主)https://blog.csdn.net/u013075699/article/details/78885674
4、Aizu ALDS1_4_D Allocation(二分搜索查找最优解)
#include<iostream>
using namespace std;
const int maxn=100000;
int wei[maxn+10];
int n,k,sum=0;
bool judge(int w){
int cnt=k,t=w;
for(int i=0;i<n;i++){
if(w<wei[i])
return false;
if(wei[i]<=t){
t-=wei[i];
}else {
t=w;
t-=wei[i];
cnt--;
if(cnt<=0) return false;
}
}
return true;
}
int main ()
{
cin>>n>>k;
for(int i=0;i<n;i++)
{
cin>>wei[i];
sum+=wei[i];
}
int r=sum,l=0;
while(l+1<r){
int mid=(l+r)/2;
if(judge(mid)){
r=mid;
}else {
l=mid;
}
}
cout<<r<<endl;
return 0;
}