链接:http://acm.zju.edu.cn/onlinejudge/showContestProblems.do?contestId=378
A. Peak
题意:给定长为n的序列,如果只有一个波峰(先呈现上升,后呈现下降的趋势),输出Yes,否则输出No
思路:输入的时候就直接找到波峰,然后根据题意判断即可。
B.King of Karaoke
题意:给定长为n的两个序列A,B,求两个序列差值相等的个数最多的个数。
思路:按照题意map存储下个数即可。
L.Doki Doki Literature Club
题意:给n个单词及其对应的偏爱值,根据所给的公式求其最大快乐值。如果快乐值相同,按照输出单词的字典序小的输出。
思路:结构体存储str(单词),w(偏爱值),排序
代码:
#include <bits/stdc++.h>
using namespace std;
#define mem(a,n) memset(a,n,sizeof(a))
#define rep(i,a,n) for(int i=a;i<n;i++)
typedef long long ll;
const double eps=1e-5;
const int N=1e3+5;
const int MOD=1e7+7;
const int INF=0x3f3f3f3f;
const int dir[4][2]= {1,0,-1,0,0,1,0,-1};
struct Node
{
string str;
int w;
bool operator < (const Node& m)const
{
if(w!=m.w) return w>m.w;
return str<m.str;
}
}a[N];
int main()
{
int T;
cin>>T;
while(T--)
{
int n,k;
cin>>n>>k;
for(int i=0;i<n;i++)
{
cin>>a[i].str>>a[i].w;
}
sort(a,a+n);
ll ans=0,cnt=0;
string ans_str("");
for(int i=0;cnt<k&&i<n;i++)
{
ans+=(k-cnt)*a[i].w;
cnt++;
ans_str+=" ";
ans_str+=a[i].str;
}
cout<<ans<<ans_str<<endl;
}
return 0;
}
M.Lucky 7
a+b的题