一、apple pie
#include<iostream>
using namespace std;
int main()
{
int a,p;
cin>>a>>p;
int x=3*a+p;
cout<<x/2;
return 0;
}
二、GUidebook
大意:每个城市有餐厅,每个餐厅有评分,按照城市字母字典序及评分排序
思路:用结构体表示城市和评分,在对结构体排序
#include<iostream>
#include<string>
#include<algorithm>
//#include<bits/stdc++.h>
using namespace std;
struct pua{
string s;
int a;
int p;
}b[105];
int cmp(pua a,pua b){
if(a.s==b.s)
return a.a>b.a;
return a.s<b.s;
}
int main()
{
int n;
int c[105];
cin>>n;
for(int i=1;i<=n;i++){
cin>>b[i].s;
cin>>b[i].a;
b[i].p=i;
}
sort(b+1,b+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<b[i].p<<endl;
}
return 0;
}
三、Switches
大意:有n个开关和m个灯泡,问要想让灯全部打开有几种开关的组合。
思路:数据范围较小,可以用dfs暴力枚举出开关状态,在判断是否能让灯全部亮起来即可
#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
#include<math.h>
using namespace std;
#define ll long long
ll v[101],s[101][101],k[101],p[101];
ll n,m,ans;
void dfs(int x){
if(x<=n){
v[x]=0;
dfs(x+1);
v[x]=1;
dfs(x+1);
}
else{
for (int i = 1; i <= m; i++) {
int sum = 0;
for (int j = 1; j <= k[i]; j++) {
if (v[s[i][j]] == 1)
sum++;
}
if(sum%2!=p[i]){
return ;
}
}
ans++;
return ;
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>k[i];
for(int j=1;j<=k[i];j++){
cin>>s[i][j];
}
}
for(int i=1;i<=m;i++){
cin>>p[i];
}
dfs(1);
cout<<ans<<endl;
return 0;
}
四、equeue
大意:一个数组,有四种操作,问手里数字最大是多少。
思路:枚举
#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
using namespace std;
int n,k,v[10005],mx=0;
int a[10005];
int main() {
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>v[i];
}
int mx=0;
for(int i=0;i<=min(n,k);i++) {
for(int j=0; j<=min(n,k);j++) {
if (i+j>min(n,k)) {
break;
}
memset(a,0,sizeof(a));
int cnt=0;
for(int k=1; k<=i; k++){
a[++cnt]=v[k];
}
for(int k=n; k>=n-j+1; k--){
a[++cnt]=v[k];
}
int t=k-(i+j);
if (t<0){
break;
}
sort(a+1,a+cnt+1);
for(int k=1;k<=cnt;k++) {
if(a[k]<0&&t>0) {
a[k]=0;
t--;
}
if(t<0){
break;
}
}
int ans=0;
for(int k=1;k<=cnt;k++) {
ans+=a[k];
}
mx=max(mx,ans);
}
}
cout<<mx<<endl;
return 0;
}