AtCoder Beginner Contest 113

亦凉 2021-09-16 21:58 380阅读 0赞

A - Discount Fare

z = x + y / 2 z = x + y / 2 z=x+y/2

  1. include <bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,a,n) for (int i=a;i<n;i++)
  4. #define per(i,a,n) for (int i=n-1;i>=a;i--)
  5. #define pb push_back
  6. #define mp make_pair
  7. #define all(x) (x).begin(),(x).end()
  8. #define fi first
  9. #define se second
  10. #define SZ(x) ((int)(x).size())
  11. typedef vector<int> VI;
  12. typedef long long ll;
  13. typedef pair<int,int> PII;
  14. const ll mod=1000000007;
  15. ll powmod(ll a,ll b) { ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){ if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
  16. ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
  17. int x,y,z;
  18. int main()
  19. {
  20. while(scanf("%d%d",&x,&y)!=EOF)
  21. {
  22. z = y / 2 + x;
  23. cout<<z<<endl;
  24. }
  25. }

B - Palace

比较差值的绝对值的大小

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,a,n) for (int i=a;i<n;i++)
  4. #define per(i,a,n) for (int i=n-1;i>=a;i--)
  5. #define pb push_back
  6. #define mp make_pair
  7. #define all(x) (x).begin(),(x).end()
  8. #define fi first
  9. #define se second
  10. #define SZ(x) ((int)(x).size())
  11. typedef vector<int> VI;
  12. typedef long long ll;
  13. typedef pair<int,int> PII;
  14. const ll mod=1000000007;
  15. ll powmod(ll a,ll b) { ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){ if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
  16. ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
  17. int n,T,a;
  18. struct node
  19. {
  20. ll tt;
  21. int id;
  22. }t[2110];
  23. bool cmp(node a,node b)
  24. {
  25. return a.tt <= b.tt;
  26. }
  27. int x;
  28. int main()
  29. {
  30. while(scanf("%d",&n)!=EOF)
  31. {
  32. cin>>T>>a;
  33. a *= 1000;
  34. rep(i,0,n)
  35. {
  36. cin>>x;
  37. t[i].tt = 1000 * T - x * 6;
  38. t[i].tt = abs(a - t[i].tt);
  39. t[i].id = i+1;
  40. }
  41. sort(t,t+n,cmp);
  42. cout<<t[0].id<<endl;
  43. }
  44. }

C - ID

先整个进行时间的排序,再遍历一遍

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,a,n) for (int i=a;i<n;i++)
  4. #define per(i,a,n) for (int i=n-1;i>=a;i--)
  5. #define pb push_back
  6. #define mp make_pair
  7. #define all(x) (x).begin(),(x).end()
  8. #define fi first
  9. #define se second
  10. #define SZ(x) ((int)(x).size())
  11. typedef vector<int> VI;
  12. typedef long long ll;
  13. typedef pair<int,int> PII;
  14. const ll mod=1000000007;
  15. ll powmod(ll a,ll b) { ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){ if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
  16. ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
  17. const int maxn = 1e5+1000;
  18. int n,m,a;
  19. struct node
  20. {
  21. ll tt;
  22. int pp;
  23. int id;
  24. } t[maxn];
  25. bool cmp(node a,node b)
  26. {
  27. return a.tt <= b.tt;
  28. }
  29. ll p,y;
  30. int s[maxn];
  31. int pre[maxn];
  32. int en[maxn];
  33. int main()
  34. {
  35. while(scanf("%d%d",&n,&m)!=EOF)
  36. {
  37. memset(s,0,sizeof s);
  38. rep(i,0,m)
  39. {
  40. cin>>p>>y;
  41. t[i].tt = y;
  42. t[i].pp = p;
  43. t[i].id = i;
  44. }
  45. sort(t,t+m,cmp);
  46. rep(i,0,m)
  47. {
  48. pre[t[i].id] = t[i].pp;
  49. en[t[i].id] = ++s[t[i].pp];
  50. }
  51. rep(i,0,m)
  52. {
  53. printf("%06d%06d\n",pre[i],en[i]);
  54. }
  55. }
  56. }

D - Number of Amidakuji

注意题目中K代表的意义,K是指从左边开始沿着边走最后到达的第几根,注意可以往回走(可以看第四个样例第一个介绍)

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,a,n) for (int i=a;i<n;i++)
  4. #define per(i,a,n) for (int i=n-1;i>=a;i--)
  5. #define pb push_back
  6. #define mp make_pair
  7. #define all(x) (x).begin(),(x).end()
  8. #define fi first
  9. #define se second
  10. #define SZ(x) ((int)(x).size())
  11. typedef vector<int> VI;
  12. typedef long long ll;
  13. typedef pair<int,int> PII;
  14. const ll mod=1000000007;
  15. ll powmod(ll a,ll b) { ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){ if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
  16. ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
  17. int h,w,k;
  18. ll dp[1000][110];
  19. int s[] = { 1,1,2,3,5,8,13,21};
  20. int main(int argc, char const *argv[])
  21. {
  22. cin>>h>>w>>k;
  23. if(w == 1)
  24. {
  25. printf("1\n");
  26. return 0;
  27. }
  28. dp[0][0] = 1;
  29. rep(i,0,h)
  30. rep(j,0,w)
  31. {
  32. dp[i][j] %= mod;
  33. if(j == 0)
  34. {
  35. dp[i+1][j+1] += dp[i][j] * s[max(0,w - j - 2)];
  36. dp[i+1][j] += dp[i][j] * s[w - j - 1];
  37. }
  38. else if(j != 0)
  39. {
  40. dp[i+1][j+1] += dp[i][j] * s[j] * s[max(0,w - j - 2)];
  41. dp[i+1][j] += dp[i][j] * s[j] * s[w - j - 1];
  42. dp[i+1][j-1] += dp[i][j] * s[max(0,j-1)] * s[w-j-1];
  43. }
  44. }
  45. cout<<dp[h][k-1]%mod<<endl;
  46. return 0;
  47. }

发表评论

表情:
评论列表 (有 0 条评论,380人围观)

还没有评论,来说两句吧...

相关阅读