名字的漂亮度_牛客题霸_牛客网 (nowcoder.com)
蓝桥杯之后马上期末考试 平常不听课 期末各种找资源背题库 25号之后才恢复正常刷题 。
同时因为很多因素,省赛的ACM队伍要退掉了。五味杂陈。
说正事:
题目很简单,出现最多的单词 *的权重越大
任务分成三块
统计
排序
加权
统计统计采用桶排做的,在统计的时候没有做大小写处理,这个任务留到了排序里面去做 。
排序使用堆去做 (这里感觉可以优化)理论上堆排序和sort不差多少 ,直接用堆应该要慢一点,不懂STL但是这里肯定会有内存的多次申请和释放,开一个数组(多次使用)sort肯定会快一点
加权int quan=26
while(堆.size()){
按堆顶*quan
quan–;
堆.pop()
}
源码#include#include #include #include #include using namespace std; string a; const int maxn=130; priority_queue< int,vector ,less > q; int t[maxn]{0}; int main(){ int T;cin>>T; while(T--){ memset(t,0,sizeof(t)); cin>>a; for(int i=0;i t[a[i]]++; } for(int i=0;i<27;i++){ q.push({t['a'+i]+t['A'+i]}); } int quan=26; int ans=0; while(q.size()){ ans+=quan*q.top(); quan--; q.pop(); } cout<



