目录
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);}
}