武汉大学2020年新生程序设计竞赛(同步赛)
A 仓鼠与饭堂
using namespace std;
#include <bits/stdc++.h>
#define int long long
signed main() {
int t;
cin>>t;
while (t--){
double n,m;
int flag=0;
cin>>n>>m;
for(int i=1;i<=n;i++){
double x;
cin>>x;
if(m>=x) m-=x*0.7;
else flag=1;
}
if(flag) cout<<"no";
else cout<<"yes";
cout<<"\n";
}
}
C 仓鼠很有精神
using namespace std;
#include <bits/stdc++.h>
#define int long long
signed main() {
int t;
cin>>t;
while (t--){
string s;
cin>>s;
int flag=0;
int max_=0;
for(int i=0;i<s.size();i++){
if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u')
flag++;
else max_=max(max_,flag),flag=0;
}
max_=max(max_,flag);
cout<<max_<<"\n";
}
}
D 仓鼠更有精神
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=5e6+5;
int a[26]={
0};
int b[maxn];
int c[maxn];
void init()
{
a[0]=1;
a['o'-'a']=1;
a['e'-'a']=1;
a['u'-'a']=1;
a['i'-'a']=1;
}
void solve()
{
b[0]=0;
int max_=0;
int k;
string s;
cin>>s>>k;
int kk=k;
int f=-1;
int flag=0;
int pre=-1;
int cnt=0;
int bnt=0;
for(int i=0;i<s.size();i++)
{
if(a[s[i]-'a']==1)
{
if(f==0)
{
if(pre!=-1)
{
c[bnt]=i-pre;
bnt++;
}
}
f=1;
flag++;
}
else
{
if(f==1)
{
b[cnt]=flag;
cnt++;
pre=i;
}
flag=0;
f=0;
}
}
if(flag!=0)
{
b[cnt]=flag;
cnt++;
}
int sum=b[0];
max_=b[0];
int l=0;
for(int i=1;i<cnt;)
{
if(k>=c[i-1])
{
k-=c[i-1];
sum+=b[i];
i++;
}
else
{
if(l<i-1&&k<c[i-1])
{
k+=c[l];
sum-=b[l];
l++;
if(sum>max_)
max_=sum;
}
if(l==i-1&&k<c[i-1])
{
k=kk;
l=i;
sum=b[i];
i++;
}
}
if(sum>max_)
max_=sum;
}
int sz=s.size();
cout<<min(max_+kk,sz)<<endl;
}
signed main()
{
int _=1;
cin>>_;
init();
while(_--)
solve();
return 0;
}
F 仓鼠的完美算术教室
#include <bits/stdc++.h>
#define int long long
using namespace std;
typedef long long ll;
const int maxn = 1e6 + 5;
const int N = 2e7 + 5;
int mm[N];
int cnt[21];
bool vis[maxn];
void init() {
for (ll i = 2; i * i < maxn; i++) {
if (!vis[i])
for (ll j = i * i; j < maxn; j *= i)
vis[j] = true;
}
}
void solve() {
memset(mm, 0, sizeof(mm));
int a, b;
cin >> a >> b;
int sum = 0;
for (int i = 1; i <= (int) log2(a); i++) {
for (int j = 2; j <= b; j++) {
if (mm[i * j] == 0) {
mm[i * j] = 1;
sum++;
}
}
cnt[i] = sum;
}
int res = 0;
for (int i = 2; i <= a; i++) {
if (vis[i])
continue;
int xx = log2(a) / log2(i);
res += cnt[xx];
}
cout << res << "\n";
}
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
cin >> _;
init();
while (_--)
solve();
return 0;
}
J 仓鼠不玩炉石传说
#include <bits/stdc++.h>
using namespace std;
#define int ll
typedef long long ll;
typedef long long LL;
void solve() {
int n,a,k;
cin>>n>>a>>k;
int sum=0;
int flag=1;
int flag2=1;
for(int i=0;i<n;i++){
int x;
cin>>x;
if(x<k) {
sum++;
continue;
}
else if(x==k) {
if(flag2)
sum++,flag2=0;
else if(flag)
sum++,flag=0;
else break;
}
if(x>k){
if(flag) sum++,flag=0;
else break;
}
}
cout<<sum;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
int _=1;
while (_--)solve();
}