ABCD

签到(A、B、C过水已隐藏)

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=;
  4. int n,m,ans,f1[N][N],f2[N][N],f3[N][N],f4[N][N];
  5. char mp[N][N];
  6. int main()
  7. {
  8. scanf("%d%d",&n,&m);
  9. for(int i=;i<=n;i++)scanf("%s",mp[i]+);
  10. for(int i=;i<=n;i++)
  11. for(int j=;j<=m;j++)
  12. if(mp[i][j]=='.')f1[i][j]=f1[i-][j]+,f2[i][j]=f2[i][j-]+;
  13. for(int i=n;i;i--)
  14. for(int j=m;j;j--)
  15. if(mp[i][j]=='.')f3[i][j]=f3[i+][j]+,f4[i][j]=f4[i][j+]+;
  16. for(int i=;i<=n;i++)
  17. for(int j=;j<=m;j++)
  18. if(mp[i][j]=='.')ans=max(ans,f1[i][j]+f2[i][j]+f3[i][j]+f4[i][j]-);
  19. printf("%d\n",ans);
  20. }

E

发现x^y=x+y时,x,y没有同时为1的位。于是数位DP,f[i][0/1]表示到了第i位是否达到上限,发现该位取1有2种方案,取0有1种,大力O(n)DP即可。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=1e5+,mod=1e9+;
  4. int n,ans,f[N][];
  5. char s[N];
  6. int main()
  7. {
  8. scanf("%s",s+);
  9. n=strlen(s+);
  10. f[][]=;
  11. for(int i=;i<=n;i++)
  12. if(s[i]=='')f[i][]=(3ll*f[i-][]+f[i-][])%mod,f[i][]=2ll*f[i-][]%mod;
  13. else f[i][]=3ll*f[i-][]%mod,f[i][]=f[i-][];
  14. ans=(f[n][]+f[n][])%mod;
  15. printf("%d",ans);
  16. }

F

设计算到x时,答案是ans,于是计算x后,ans=(ans*10i+x)%m,其中i为x的位数,然后发现这个可以矩阵转移,对于位数相同的数字,转移的矩阵是相同的,于是分位数转移至多18次即可,复杂度O(27logBLlgBL)。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. ll L,st,ed,b,pw[];
  5. int m,ans;
  6. struct mat{
  7. int a[][];
  8. mat(){memset(a,,sizeof a);}
  9. void init(int i)
  10. {
  11. memset(a,,sizeof a);
  12. a[][]=pw[i]%m,a[][]=a[][]=a[][]=a[][]=;
  13. }
  14. }A,ret;
  15. mat operator*(mat a,mat b)
  16. {
  17. mat c;
  18. for(int i=;i<;i++)
  19. for(int j=;j<;j++)
  20. for(int k=;k<;k++)
  21. c.a[i][j]=(c.a[i][j]+1ll*a.a[i][k]*b.a[k][j])%m;
  22. return c;
  23. }
  24. int solve(ll L,ll R,int id)
  25. {
  26. ll n=(R-L)/b+;
  27. for(int i=;i<;i++)for(int j=;j<;j++)ret.a[i][j]=i==j;
  28. A.init(id);
  29. while(n)
  30. {
  31. if(n&)ret=ret*A;
  32. A=A*A,n>>=;
  33. }
  34. ans=(1ll*ans*ret.a[][]+L%m*ret.a[][]+b%m*ret.a[][])%m;
  35. }
  36. int main()
  37. {
  38. pw[]=;for(int i=;i<=;i++)pw[i]=pw[i-]*;
  39. cin>>L>>st>>b>>m;
  40. ed=st+b*(L-);
  41. for(int i=;i<=;i++)
  42. if(st<pw[i])
  43. {
  44. ll R=(pw[i]--st)/b*b+st;
  45. if(R>ed)R=ed;
  46. solve(st,R,i);
  47. if(R==ed)break;
  48. st=R+b;
  49. }
  50. cout<<ans<<endl;
  51. }

result:rank5 rating+=65 now_rating=2020,ABC为什么performance上限要设2400?就涨了这么点……不过好在上黄了。

AtCoder Beginner Contest 129的更多相关文章

  1. AtCoder Beginner Contest 129 解题报告

    传送门 写了四个题就跑去打球了.第五题应该能肝出来的. A - Airplane #include <bits/stdc++.h> using namespace std; inline ...

  2. AtCoder Beginner Contest 100 2018/06/16

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

  3. AtCoder Beginner Contest 052

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

  4. AtCoder Beginner Contest 053 ABCD题

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

  5. AtCoder Beginner Contest 136

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

  6. AtCoder Beginner Contest 137 F

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

  7. AtCoder Beginner Contest 076

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

  8. AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】

    AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...

  9. AtCoder Beginner Contest 064 D - Insertion

    AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...

随机推荐

  1. 读书笔记 - js高级程序设计 - 第十章 DOM

      文档元素 是文档的最外层元素,在Html页面中,文档元素始终都是<html>元素 在xml中,任何元素都可以是文档元素 Node类型 Node.ELEMENT_NODE 元素 Node ...

  2. idea的简单使用

    1.新建项目 (1)点击 file -->new project ,选择java(创建普通java项目) ,点next (2)不选择create project from template (不 ...

  3. (2) JVM内存管理:垃圾回收

    回顾上期 1)JVM中引用存在哪里? 答:虚拟机栈,该内存空间线程独有 2)该引用的对象存在哪里? 答:堆,所有通过new方法分配的对象都存在堆中 3)String s1="abc" ...

  4. Python安装和虚拟环境创建以及外部库的安装

    Python.虚拟环境.外部库的安装 一 安装Python 1 Windows 到官网下载对应的版本 下载地址 我选择的是Python3.6.8 下载完成后双击运行 !!!勾选Add Python 3 ...

  5. Mount error(5):Input/output error on mount

    https://superuser.com/questions/850301/mount-error5input-output-error-on-mount When setting up a sha ...

  6. 干货分享:Essay写作收集论据的三个方法

    在很多时候,中国留学生写出的Essay在西方学术界看来是存在plagiarism的情况.并不是说咱们写的所有东西都是抄袭,而是思维逻辑和利用证据的方式与西方权威的academic writing不同. ...

  7. 吴裕雄--天生自然C++语言学习笔记:C++ 变量类型

    变量其实只不过是程序可操作的存储区的名称.C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上. 变量的名称可以由字母.数字和下划线字 ...

  8. Day 9:双列集合Map及实现该接口的类的常用方法

    为什么要学双列集合? 因为单列集合无法处理映射关系,会有成对出现的数据 Map接口  如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复 Map接 ...

  9. Linux环境创建交换分区

    最近在准备在移动端跑一下深度学习训练好的模型,在RK3399的板子上安装scipy时报错.网上查了一下,由于内存不足导致,做个交换分区就搞定了.那么如何做交换分区呢.话不多说,直接开撸. ------ ...

  10. django 过滤器-查询集-比较运算符-FQ对象-mysql的命令窗口

    """ 返回查询集的方法称为过滤器 all() 返回查询集中所有数据 filter() 返回符合条件的数据 一.filter(键=值) 二.filter(键=值,键=值) ...