知识点整理
NO.1 map的用法
map<string(变量类型),int(内含的数据类型)>a(变量名);
例如:
#include<bits/stdc++.h>
using namespace std;
int main()
{
map<char,int>a;
//定义了一个由int构成的char数组
return 0;
}
NO.2 埃筛
首先将2到n范围内的整数写下来。其中2是最小的素数。将表中所有的2的倍数划去, 表中剩下的最小的数字就是3,他不能被更小的数整除,所以3是素数。再将表中所有的3的倍数划去…… 以此类推,如果表中剩余的最小的数是m,那么m就是素数,然后将表中所有m的倍数划去,像这样反复操作,就能依次枚举n以内的素数。
例题
NO.1 Two-gram
#include <bits/stdc++.h>
using namespace std;
map<string, int> strCnt;
int main()
{
int n;
cin >> n;
string s;
cin >> s;
for (int i=0;i<n-1;i++) {
strCnt[s.substr(i, 2)]++;
}
int mx = -1;
string mxStr;
for (int i = 0; i < n - 1; i++) {
if (strCnt[s.substr(i, 2)] > mx) {
mx = strCnt[s.substr(i, 2)];
mxStr = s.substr(i, 2);
}
}
cout << mxStr;
return 0;
}
NO.2Two Lucky Numbers
#include<bits/stdc++.h>
using namespace std;
map<string,int>a,b;
int main()
{
long long a,b;
cin>>a>>b;
cout<<50LL*b+a<<endl;
return 0;
}
NO.3 String LCM
#include<bits/stdc++.h>
using namespace std;
int i,n,j,al;string a;
int main()
{
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a;
al=a.size();
cout<<a[0];
for(j=1;j<al;j++)
{
if(a[j]==a[j+1])
{
cout<<a[j];
j++;
}
else if(a[j]!=a[j+1])
cout<<a[j];
}
cout<<endl;
}
return 0;
}