当前位置: 代码迷 >> 综合 >> 2050 Programming Competition
  详细解决方案

2050 Programming Competition

热度:26   发布时间:2023-12-26 09:40:44.0

目录

1001 开场白

1002 时间间隔(思维·水题)

1003 分宿舍(暴力)

1004 PASS

1006 冰水挑战(bfs/dp)


1001 开场白

【分析】字符串暴力跑一下就好

【代码】

#include<bits/stdc++.h>
using namespace std;typedef long long LL;
const int maxn=100000+10;
char s[maxn];int main()
{int t;scanf("%d",&t);while(t--){scanf("%s",s);int l=strlen(s);int f=1;for(int i=0;i<l;i+=4){if(s[i]!='2' || s[i+1]!='0' || s[i+2]!='5' || s[i+3]!='0'){f=0;break;}}if(f)puts("Yes");else puts("No");}return 0;
}

1002 时间间隔(思维·水题)

【分析】因为最终的答案要%100,所以,,,问题就变得简单了起来...  算时间就好

【代码】

#include <bits/stdc++.h>
using namespace std;typedef long long LL;int main()
{int t;scanf("%d",&t);while(t--){int y,m,d,hh,mm,ss;scanf("%d-%d-%d %d:%d:%d",&y,&m,&d,&hh,&mm,&ss);int ans=86400-(hh*60*60+mm*60+ss);ans%=100;printf("%d\n",ans);}return 0;
}

1003 分宿舍

【分析】暴力

【代码】

#include<bits/stdc++.h>
using namespace std;typedef long long LL;
const LL inf=LLONG_MAX;
LL n,m,k,a,b,c;LL f(LL x)
{LL cost=inf;for(LL i=0;i<=(x+1)/2;++i){LL sum=i*a;LL cnt=x-2*i;sum+=((cnt+2)/3)*b;cost=min(cost,sum);}return cost;
}
int main()
{int t;scanf("%d",&t);while(t--){scanf("%lld%lld%lld%lld%lld%lld",&n,&m,&k,&a,&b,&c);LL ans=inf;for(int i=0;i<=k;++i){LL cost=i*c;LL g1=m+k-i,b1=n+k-i;LL g2=f(g1),b2=f(b1);ans=min(ans,cost+g2+b2);}printf("%lld\n",ans);}return 0;
}

1004 PASS

#include<bits/stdc++.h>
using namespace std;const int maxn=1e4+10;
int n,m,k;
int num[maxn];
int sch[maxn];
vector<int>v[maxn];int main()
{int t;scanf("%d",&t);while(t--){memset(v,0,sizeof(v));memset(num,0,sizeof(num));memset(sch,0,sizeof(sch));scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=n;++i){scanf("%d",&sch[i]);num[sch[i]]++;if(n%2==0 && i<=n/2)v[sch[i]].push_back(i);else if(n%2==1 && i<=n/2)v[sch[i]].push_back(i);}int cnt=0;for(int i=1;i<=m;++i){int num1=num[i];int num2=v[i].size();int num3=num1/k;cnt+=min(num3,num2);}printf("%d\n",cnt);}
}

 

  相关解决方案