A. Alyona and copybooks
水题,让求满足条件的最小花费,注意组合可能是多个即可。
#include <bits/stdc++.h>
using namespace std;typedef long long ll;int main(int argc, char const *argv[])
{ll n,a,b,c;cin>>n>>a>>b>>c;n%=4;ll ans;if (n==0) ans=0;else if (n==1){ans=c;ans=min(ans,3*a);ans=min(ans,a+b);}else if (n==2){ans=b;ans=min(ans,2*c);ans=min(ans,2*a);}else {ans=a;ans=min(ans,3*c);ans=min(ans,c+b);}cout<<ans<<endl;return 0;
}
B. Alyona and flowers
也是水题,只要该区间的贡献小于0就略过去。
#include <bits/stdc++.h>
using namespace std;int v[105];
typedef long long ll;
int main(int argc, char const *argv[])
{int n,m;cin>>n>>m;for (int i=1;i<=n;i++) cin>>v[i];ll ans=0;for (int i=0;i<m;i++){int l,r;cin>>l>>r;int tt=0;for (int j=l;j<=r;j++) tt+=v[j];if (tt>0) ans+=tt;}cout<<ans<<endl;return 0;
}
C. Alyona and mex
给定一些区间,求这些区间的最小mex值最大为多少。
很明显,最小区间长度+1即为结果,然后直接构造就行,
当时敲到最后输出的时候,电脑没电了,很遗憾。
#include <bits/stdc++.h>
using namespace std;const int N=1e5+5;
int l[N],r[N];
int v[N];
int main(int argc, char const *argv[])
{int n,m;cin>>n>>m;int p=n+1,q=0;for (int i=0;i<m;i++){cin>>l[i]>>r[i];if (r[i]-l[i]+1<p){p=r[i]-l[i]+1;q=i;}}cout<<p<<endl;int ll=0;for (int i=0;i<n;i++) {cout<<ll++<<" ";if (ll==p) ll=0;}return 0;
}