ABCD

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

#include<bits/stdc++.h>
using namespace std;
const int N=;
int n,m,ans,f1[N][N],f2[N][N],f3[N][N],f4[N][N];
char mp[N][N];
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%s",mp[i]+);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
if(mp[i][j]=='.')f1[i][j]=f1[i-][j]+,f2[i][j]=f2[i][j-]+;
for(int i=n;i;i--)
for(int j=m;j;j--)
if(mp[i][j]=='.')f3[i][j]=f3[i+][j]+,f4[i][j]=f4[i][j+]+;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
if(mp[i][j]=='.')ans=max(ans,f1[i][j]+f2[i][j]+f3[i][j]+f4[i][j]-);
printf("%d\n",ans);
}

E

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

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+,mod=1e9+;
int n,ans,f[N][];
char s[N];
int main()
{
scanf("%s",s+);
n=strlen(s+);
f[][]=;
for(int i=;i<=n;i++)
if(s[i]=='')f[i][]=(3ll*f[i-][]+f[i-][])%mod,f[i][]=2ll*f[i-][]%mod;
else f[i][]=3ll*f[i-][]%mod,f[i][]=f[i-][];
ans=(f[n][]+f[n][])%mod;
printf("%d",ans);
}

F

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

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll L,st,ed,b,pw[];
int m,ans;
struct mat{
int a[][];
mat(){memset(a,,sizeof a);}
void init(int i)
{
memset(a,,sizeof a);
a[][]=pw[i]%m,a[][]=a[][]=a[][]=a[][]=;
}
}A,ret;
mat operator*(mat a,mat b)
{
mat c;
for(int i=;i<;i++)
for(int j=;j<;j++)
for(int k=;k<;k++)
c.a[i][j]=(c.a[i][j]+1ll*a.a[i][k]*b.a[k][j])%m;
return c;
}
int solve(ll L,ll R,int id)
{
ll n=(R-L)/b+;
for(int i=;i<;i++)for(int j=;j<;j++)ret.a[i][j]=i==j;
A.init(id);
while(n)
{
if(n&)ret=ret*A;
A=A*A,n>>=;
}
ans=(1ll*ans*ret.a[][]+L%m*ret.a[][]+b%m*ret.a[][])%m;
}
int main()
{
pw[]=;for(int i=;i<=;i++)pw[i]=pw[i-]*;
cin>>L>>st>>b>>m;
ed=st+b*(L-);
for(int i=;i<=;i++)
if(st<pw[i])
{
ll R=(pw[i]--st)/b*b+st;
if(R>ed)R=ed;
solve(st,R,i);
if(R==ed)break;
st=R+b;
}
cout<<ans<<endl;
}

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. Docker 搭建开源跳板机_jumpserver (运维开源堡垒机_jumpserver) Centos_7.0

    最近看到一个开源项目(jumpserver)  很不错  还是用Docker  部署得 ... 抽了点时间拿来学习一下  部署    分析   简单使用一下  ....好了先搭起来 准备 工作:    ...

  2. HTML布局梳理

    布局是一个很艺术的话题,即使是相同的HTML文档结构,但加上不同的css样式就会呈现出不同的效果.接下来就来总结一下html常用的布局. 一.布局的分类: 根据页面板块分类: 页面的板块主要是根据栏目 ...

  3. H5页面跳转到小程序代码

    1.H5页面加代码直接打开小程序 <script type="text/javascript src="https://res.wx.qq.com/open/js/jweix ...

  4. 目标检测算法的总结(R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD、FNP、ALEXnet、RetianNet、VGG Net-16)

    目标检测解决的是计算机视觉任务的基本问题:即What objects are where?图像中有什么目标,在哪里?这意味着,我们不仅要用算法判断图片中是不是要检测的目标, 还要在图片中标记出它的位置 ...

  5. JSP页面获取其他页面传递的参数

    jstl表达式获取方式: ${param.pid} el表达式获取方式: ${requestScope.attr}  el表达式获取方式: ${attr} ---------------------- ...

  6. 2.6 UI控件与后台联系实现

    完成的结果如下 : 当点击 左按钮时 最上边的显示栏更改为左 反之则为右  点击开关显示为开或者关 下边两个为显示加载的界面 在输入栏输入数值可以控制进度条的百分比并且显示在最上边 点击图片一二切换图 ...

  7. 原子类型字段更新器AtomicXxxxFieldUpdater

    本博客系列是学习并发编程过程中的记录总结.由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅. 并发编程系列博客传送门 原子类型字段更新器 在java.util.concurr ...

  8. 《新标准C++程序设计》2.4-2.6(C++学习笔记4)

     1.对象的内存匹配 一般来说,在C++中,一个对象占用的内存空间大小等于其成员变量所占用的内存空间的大小之和.(对象只包含成员变量,不包含成员函数) 每个对象都有各自的存储空间.一个对象的某个成员变 ...

  9. Linux - 安装 dotnet core 环境

    Linux -  安装 dotnet core 环境 系统环境:CentOS7 官方安装指导 https://www.microsoft.com/net/learn/get-started/linux ...

  10. HZNU-ACM寒假集训Day9小结 倍增

    LCA 倍增法求最近公共祖先 首先对于每个结点先进行dfs预处理它的深度,再记录下它们往父亲方向走2的0次,1次...k次步所到达的结点.在这里2的k次大于整棵树的最大深度. 预处理完后,需要查询两个 ...