模拟进位即可
AC代码:
#include<bits/stdc++.h>
#define endl '\n'
//#define int long long
using namespace std;
int M,D;
int y,m,d;
void solve() {
cin>>M>>D;
cin>>y>>m>>d;
int jinm=0,jiny=0;
d+=1;
if(d>D) d-=D,jinm+=1;
m+=jinm;
if(m>M) m-=M,jiny+=1;
y+=jiny;
cout<<y<<' '<<m<<' '<<d<<endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t=1;
// cin>>t;
while(t--) {
solve();
}
return 0;
}
B - Buy One Carton of Milk (atcoder.jp)
数据比较小,直接考虑暴力枚举
AC代码:
#include<bits/stdc++.h>
#define endl '\n'
//#define int long long
using namespace std;
int n;
int S,M,L;
void solve() {
cin>>n;
cin>>S>>M>>L;
int ans=2e9;
for(int i=0;i<=n/6+1;i++){
for(int j=0;j<=n/8+1;j++){
for(int k=0;k<=n/12+1;k++){
if(i*6+j*8+k*12>=n) ans=min(ans,i*S+j*M+k*L);
}
}
}
cout<<ans<<endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t=1;
// cin>>t;
while(t--) {
solve();
}
return 0;
}
C - Sum of Numbers Greater Than Me (atcoder.jp)
从小到大枚举出现过的数值,它的答案即为sum减去它的数值乘它的个数,同时sum也相应减小
AC代码:
#include<bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
const int N=2e5+10,M=1e6+10;
int a[N];
int ans[M];
int n;
void solve() {
cin>>n;
map<int,int>mp;
set<int>s;
int sum=0;
for(int i=1;i<=n;i++) cin>>a[i],mp[a[i]]++,sum+=a[i],s.insert(a[i]);
for(auto v:s){
sum-=mp[v]*v;
ans[v]=sum;
}
for(int i=1;i<=n;i++) cout<<ans[a[i]]<<' ';
cout<<endl;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t=1;
// cin>>t;
while(t--) {
solve();
}
return 0;
}