A: B +/- A

  • 签到题.

B: Foods Loved by Everyone

  • 签到题.

C: Monsters Battle Royale

  • 怪物的血量一直两两相减,类似于辗转相减法.
  • 可以证明,最后存活怪物血量最小值即为所有怪物初始血量的 \(gcd\) .

D: Match Matching

  • 考虑 \(dp\) 预处理一个数组 \(f\) , \(f[i][j]\) 表示第一位用数字 \(i\) ,后面一共用 \(j\) 根火柴棒,能拼出数字的最大位数.
  • 一共有 \(nm\) 个状态,每次转移 \(O(m)\) ,这个 \(dp\) 的时间复杂度为 \(O(nm^2)\).
  • 得到 \(f\) 数组后,考虑从高位到低位贪心构造解.
  • 每次都选能使后面位数最大的数字作为当前的这一位,若后面位数相同,则选数字大的.
  • 最终答案显然不会超过 \(n\) 位,确定每一位只需比较 \(m\) 个数字的优劣.这一步时间复杂度为 \(O(nm)\) .
  • 总时间复杂度为 \(O(nm^2)\) .
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define inf 1e9
  5. inline int read()
  6. {
  7. int x=0;
  8. bool pos=1;
  9. char ch=getchar();
  10. for(;!isdigit(ch);ch=getchar())
  11. if(ch=='-')
  12. pos=0;
  13. for(;isdigit(ch);ch=getchar())
  14. x=x*10+ch-'0';
  15. return pos?x:-x;
  16. }
  17. int x[11]={0,2,5,5,4,5,6,3,7,6};
  18. int a[11],m,N;
  19. const int MAXN=1e4+10;
  20. int f[11][MAXN];
  21. int n;
  22. int dfs(int i,int j)
  23. {
  24. if(f[i][j]!=-1)
  25. return f[i][j];
  26. if(j==0)
  27. return 1;
  28. if(j<0)
  29. return -inf;
  30. f[i][j]=-inf;
  31. for(int k=1;k<=m;++k)
  32. {
  33. if(j>=x[a[k]])
  34. f[i][j]=max(f[i][j],1+dfs(i,j-x[a[k]]));
  35. }
  36. return f[i][j];
  37. }
  38. bool better(int i,int j,int k)
  39. {
  40. if(i-x[a[j]]<0)
  41. return false;
  42. if(!k)
  43. return true;
  44. if(f[a[j]][i-x[a[j]]]>f[a[k]][i-x[a[k]]])
  45. return true;
  46. if(f[a[j]][i-x[a[j]]]==f[a[k]][i-x[a[k]]] && a[j]>a[k])
  47. return true;
  48. return false;
  49. }
  50. int main()
  51. {
  52. n=read(),m=read();
  53. memset(f,-1,sizeof f);
  54. for(int i=1;i<=m;++i)
  55. a[i]=read();
  56. int i,j,k;
  57. for(int i=1;i<=m;++i)
  58. dfs(a[i],n-x[a[i]]);
  59. for(i=n;i;)
  60. {
  61. k=0;
  62. for(j=1;j<=m;++j)
  63. if(better(i,j,k))
  64. k=j;
  65. i-=x[a[k]];
  66. putchar(a[k]+'0');
  67. }
  68. return 0;
  69. }

Atcoder Beginner Contest 118的更多相关文章

  1. Atcoder Beginner Contest 118 D-Match Matching(完全背包)

    题目链接 题意就是给N根火柴,M个数(M只能是1到9,对应的数字也只能是1到9),只能用这M个出现过的数(但每个数可以随便用多少个,只要火柴够)来拼出一个数字(拼出1,2,3,4,5,6,7,8,9分 ...

  2. Atcoder Beginner Contest 118 C-Monsters Battle Royale(贪心)

    题目链接 题意就是要让给出的数字去互相取余,看看能得到最小的数事多少. 那么就可以从小到大排序,每一次都贪心地把最小的数作为攻击者,去攻击其他的数字(也就是大的取余小的),然后再一次排序,循环这个过程 ...

  3. AtCoder Beginner Contest 118 解题报告

    A - B +/- A #include <bits/stdc++.h> int main() { int a, b; std::cin >> a >> b; b ...

  4. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  5. AtCoder Beginner Contest 052

    没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...

  6. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  7. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

  8. AtCoder Beginner Contest 137 F

    AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...

  9. AtCoder Beginner Contest 076

    A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...

随机推荐

  1. winform无边框窗体点击任务栏最小化

    protected override CreateParams CreateParams { get { const int WS_MINIMIZEBOX = 0x00020000; // Winus ...

  2. python+opencv链接摄像头

    import cv2 import numpy as numpy cap=cv2.VideoCapture(0) #设置显示分辨率和FPS ,不设置的话会非常卡 cap.set(cv2.CAP_PRO ...

  3. Hive 元数据库表信息

    Hive 的元数据信息通常存储在关系型数据库中,常用MySQL数据库作为元数据库管理. 1. 版本表 i) VERSION   -- 查询版本信息 2. 数据库.文件存储相关 i) DBS -- 存储 ...

  4. h5 沉浸式状态栏

    1. manifest.json的plus节点里面配置 "plus": { "statusbar": {"immersed": true}, ...

  5. angularJS---初识指令

    angularJS 什么是angularJS AngularJS 诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款 ...

  6. vue 跨域

    注意!只能在本地调试使用,上线后url会出错使用以下方法要先引入网络模块 先配置文件:config =>index.js以下部分改为:proxyTable: { '/apis': { // 测试 ...

  7. 转载:【Oracle 集群】RAC知识图文详细教程(七)--Oracle 11G RAC集群安装

    文章导航 集群概念介绍(一) ORACLE集群概念和原理(二) RAC 工作原理和相关组件(三) 缓存融合技术(四) RAC 特殊问题和实战经验(五) ORACLE 11 G版本2 RAC在LINUX ...

  8. SQL SERVER 正则替换

    use pubdbgo IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL DROP FUNCTION dbo.RegexReplace GO --开始创建正则 ...

  9. 12.18 微信扫码获取openid与登陆

    官方文档: https://open.weixin.qq.com/ 1.先获取code 1-1 配置项目配置文件 wechat: mpAppId: wxd898fcb01713c658 mpAppSe ...

  10. form表单序列化之后追加字段

    方法是在{}中添加字段 key-value 一一对应,如下: var data = $.param({'state': state}) + '&' + $('#desProForm').ser ...