はい。
AtCoder Beginner Contest 013
今日は2問だけ。
A - A
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define per(i,n) for(int i=n-1;i>=0;--i)
#define sc1(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d %d",&a,&b)
#define sc3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define sl1(a) scanf("%lld",&a)
#define sl2(a,b) scanf("%lld %lld",&a,&b)
#define sl3(a,b,c) scanf("%lld %lld %lld",&a,&b,&c)
#define PI 3.1415926535897932
#define ll long long
#define print(a) cout << a << endl
int souwa(int a) {return (1+a)*a/2;}
int lcm(int a,int b) { return a*b/__gcd(a,b); }
bool sankaku(int a,int b,int c) {vector <int> t={a,b,c};sort(t.begin(),t.end()); return t.at(0)+t.at(1)>t.at(2);};
int main(){
string s,t;
cin >> s;
printf("%d\n",s.at(0) - 'A'+1);
return 0;
}
文字操作わからんので-'A'するしか思い浮かばない。
B - 錠
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define per(i,n) for(int i=n-1;i>=0;--i)
#define sc1(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d %d",&a,&b)
#define sc3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define sl1(a) scanf("%lld",&a)
#define sl2(a,b) scanf("%lld %lld",&a,&b)
#define sl3(a,b,c) scanf("%lld %lld %lld",&a,&b,&c)
#define PI 3.1415926535897932
#define ll long long
#define print(a) cout << a << endl
int souwa(int a) {return (1+a)*a/2;}
int lcm(int a,int b) { return a*b/__gcd(a,b); }
bool sankaku(int a,int b,int c) {vector <int> t={a,b,c};sort(t.begin(),t.end()); return t.at(0)+t.at(1)>t.at(2);};
int main(){
int mod=1000000007;
int n,m,x,y,cnt=0,ans=0;
cin >> n >> m;
cout << min(abs(n-m),min((10+n)-m,(10+m)-n)) << endl;
return 0;
}
すぐに(すぐじゃないけど)aからbになれるか、9-0を跨ぐか、0-9を跨ぐかの場合分けをしてよしなに。
C - 節制
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define per(i,n) for(int i=n-1;i>=0;--i)
#define sc1(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d %d",&a,&b)
#define sc3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define sl1(a) scanf("%lld",&a)
#define sl2(a,b) scanf("%lld %lld",&a,&b)
#define sl3(a,b,c) scanf("%lld %lld %lld",&a,&b,&c)
#define PI 3.1415926535897932
#define ll long long
#define print(a) cout << a << endl
int souwa(int a) {return (1+a)*a/2;}
int lcm(int a,int b) { return a*b/__gcd(a,b); }
bool sankaku(int a,int b,int c) {vector <int> t={a,b,c};sort(t.begin(),t.end()); return t.at(0)+t.at(1)>t.at(2);};
int main(){
ll n,h,a,b,c,d,e,p,x,y,cnt=0,ans=0ll,ans2;
cin >> n >> h;
cin >> a >> b >> c >> d >> e;
ans=(n+1)*a;
rep(i,n+1) {
cnt=(((n-i)*e-h-b*i)/(d+e))+1;
if ((h+i*b)>(n-i)*e) cnt=0;
ans=min(ans,i*a+c*cnt);
}
print(ans);
return 0;
}
普通の食事回数をiとして、それと質素な食事回数をcntとして定めたい。iは0回からn日全部まで。
(((n-i)*e-h-b*i)/(d+e))
(食事抜きの日*減る満腹度) - 最初の満腹度 - (普通の満腹度*普通の食事の日)
これを (減る満腹度+質素の満腹度)
で割ると質素な食事の日の回数が定まる。
(減る満腹度+質素の満腹度)
は質素な食事の日を増やすと、食事抜きの日が減るので満腹度が減ることも発生しなくなるので。
普通の食事だけで足りる場合があるのでそれも確認する。