AtCoder Beginner Contest 129
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的更多相关文章
- AtCoder Beginner Contest 129 解题报告
传送门 写了四个题就跑去打球了.第五题应该能肝出来的. A - Airplane #include <bits/stdc++.h> using namespace std; inline ...
- AtCoder Beginner Contest 100 2018/06/16
A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...
- AtCoder Beginner Contest 052
没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...
- AtCoder Beginner Contest 053 ABCD题
A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...
- AtCoder Beginner Contest 136
AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...
- AtCoder Beginner Contest 137 F
AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...
- AtCoder Beginner Contest 076
A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...
- AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】
AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...
- AtCoder Beginner Contest 064 D - Insertion
AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...
随机推荐
- 读书笔记 - js高级程序设计 - 第十章 DOM
文档元素 是文档的最外层元素,在Html页面中,文档元素始终都是<html>元素 在xml中,任何元素都可以是文档元素 Node类型 Node.ELEMENT_NODE 元素 Node ...
- idea的简单使用
1.新建项目 (1)点击 file -->new project ,选择java(创建普通java项目) ,点next (2)不选择create project from template (不 ...
- (2) JVM内存管理:垃圾回收
回顾上期 1)JVM中引用存在哪里? 答:虚拟机栈,该内存空间线程独有 2)该引用的对象存在哪里? 答:堆,所有通过new方法分配的对象都存在堆中 3)String s1="abc" ...
- Python安装和虚拟环境创建以及外部库的安装
Python.虚拟环境.外部库的安装 一 安装Python 1 Windows 到官网下载对应的版本 下载地址 我选择的是Python3.6.8 下载完成后双击运行 !!!勾选Add Python 3 ...
- Mount error(5):Input/output error on mount
https://superuser.com/questions/850301/mount-error5input-output-error-on-mount When setting up a sha ...
- 干货分享:Essay写作收集论据的三个方法
在很多时候,中国留学生写出的Essay在西方学术界看来是存在plagiarism的情况.并不是说咱们写的所有东西都是抄袭,而是思维逻辑和利用证据的方式与西方权威的academic writing不同. ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 变量类型
变量其实只不过是程序可操作的存储区的名称.C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上. 变量的名称可以由字母.数字和下划线字 ...
- Day 9:双列集合Map及实现该接口的类的常用方法
为什么要学双列集合? 因为单列集合无法处理映射关系,会有成对出现的数据 Map接口 如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复 Map接 ...
- Linux环境创建交换分区
最近在准备在移动端跑一下深度学习训练好的模型,在RK3399的板子上安装scipy时报错.网上查了一下,由于内存不足导致,做个交换分区就搞定了.那么如何做交换分区呢.话不多说,直接开撸. ------ ...
- django 过滤器-查询集-比较运算符-FQ对象-mysql的命令窗口
""" 返回查询集的方法称为过滤器 all() 返回查询集中所有数据 filter() 返回符合条件的数据 一.filter(键=值) 二.filter(键=值,键=值) ...