Day 15
目录
- 1.chika和蜜柑
- 1.1 解析
- 1.2 代码
- 2.对称之美
- 2.1 解析
- 2.2 代码
- 3.添加字符
- 3.1 解析
- 3.2 代码
1.chika和蜜柑
chika和蜜柑
TopK、堆、排序
1.1 解析
1.2 代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Cmp
{bool operator()(const pair<int,int>& p1,const pair<int,int>& p2){if(p1.first>p2.first)return true;else if(p1.first==p2.first&&p1.second<p2.second) return true;return false;}
};
int n,k;
int main()
{//输入样例cin>>n>>k;vector<int> s(n),t(n);for(int i=0;i<n;i++)cin>>s[i];for(int i=0;i<n;i++)cin>>t[i];//将甜度和酸度绑定vector<pair<int,int>> ts(n);for(int i=0;i<n;i++){ts[i].first=t[i];ts[i].second=s[i];}//排序+降序sort(ts.begin(),ts.end(),Cmp());//统计前k个long long sumt=0,sums=0;for(int i=0;i<k;i++){sumt+=ts[i].first;sums+=ts[i].second;}cout<<sums<<' '<<sumt;return 0;
}
2.对称之美
对称之美
字符串、哈希
2.1 解析
2.2 代码
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
int t,n;
string s;
bool vis[110][26];//哈希表bool check(int left,int right)
{for(int i=0;i<26;i++){if(vis[left][i] && vis[right][i])return true;//该位置上必须出现过}return false;
}
int main()
{cin>>t;while(t--){memset(vis,0,sizeof(vis));//输入数据cin>>n;for(int i=0;i<n;i++){cin>>s;//将字符串存入哈希表中for(auto& ch:s)vis[i][ch-'a']=true;}//判断是否回文int left=0,right=n-1;while(left<right){if(!check(left,right))break;++left,--right;}if(left>=right)cout<<"Yes"<<endl;else cout<<"No"<<endl;}return 0;
}
3.添加字符
添加字符
字符串、枚举
3.1 解析
3.2 代码
#include <iostream>
using namespace std;
#include <string>
string a,b;
int main()
{cin>>a>>b;int m=a.size(),n=b.size();int ret=m;//记录不相等字符的个数for(int i=0;i<=n-m;i++)//枚举a的起始位置{int tmp=0;for(int j=0;j<m;j++){if(a[j]!=b[i+j]) tmp++;}ret=min(ret,tmp);}cout<<ret<<endl;return 0;
}