[JZYZOJ 1288][洛谷 1005] NOIP2007 矩阵取数 dp 高精度
https://www.luogu.org/problem/show?pid=1005
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
int n,m;
struct mat{
int e[],len;
mat(){memset(e,,sizeof(e));len=;}
};
int a[][]={};
mat b2[]={};
mat f[][][];
mat mul(mat x,int y){
mat z;z.len=x.len;
for(int i=;i<=x.len;i++){
z.e[i]+=x.e[i]*y; z.e[i+]+=z.e[i]/;
z.e[i]%=;
if(z.e[i+]!=&&z.len==i){
z.len++;
}
}
return z;
}
mat plu(mat x,mat y){
mat z;z.len=max(x.len,y.len);
for(int i=;i<=z.len;i++){
z.e[i]+=x.e[i]+y.e[i];
z.e[i+]+=z.e[i]/;
z.e[i]%=;
if(z.e[i+]!=&&i==z.len){
z.len++;
}
}
return z;
}
mat cham(mat x,mat y){
if(x.len>y.len)return x;
if(x.len<y.len)return y;
for(int i=x.len;i>=;i--){
if(x.e[i]>y.e[i])return x;
if(x.e[i]<y.e[i])return y;
}
return x;
}
void put(mat x){
if(x.len==)printf("");
for(int i=x.len;i>=;i--){
printf("%d",x.e[i]);
}
printf("\n");
}
int main(){
b2[].e[]=;b2[].len=;
for(int i=;i<=;i++){
b2[i]=mul(b2[i-],);
}
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
scanf("%d",&a[i][j]);
}
}mat z,z1,z2,z3,ans;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
for(int w=;w<=m;w++){
if(w>j&&w<m-j+)continue;
if(w<=j)f[j][w][]=cham(f[j][w][],cham(f[j-][w-][],f[j-][m-j+w+][]));
if(w>=m-j+) f[j][w][]=cham(f[j][w][],cham(f[j-][w+][],f[j-][j--m+w][]));
//put(f[j][w]);
f[j][w][]=plu(f[j][w][],mul(b2[j],a[i][w]));
f[j][w][]=plu(f[j][w][],mul(b2[j],a[i][w]));
}
}
z=z3;
for(int j=;j<=m;j++){
z=cham(z,f[m][j][]);
z=cham(z,f[m][j][]);
}
for(int j=;j<=m;j++){
for(int w=;w<=m;w++){
f[j][w][]=z3;
f[j][w][]=z3;
}
}
ans=plu(ans,z);
}put(ans);
return ;
}
[JZYZOJ 1288][洛谷 1005] NOIP2007 矩阵取数 dp 高精度的更多相关文章
- 【洛谷P1005】矩阵取数游戏
矩阵取数游戏 题目链接 每行分别跑一趟区间DP即可 这道题区间DP是非常裸的,按套路来即可 但是很毒瘤的是需要高精度, “我王境泽就是爆零,从这跳下去,也不会用__int128的!” #include ...
- NOIP2007矩阵取数[DP|高精度]
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...
- NOIP2007 矩阵取数游戏
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...
- TYVJ 矩阵取数 Label:高精度+dp
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...
- 51Nod 1083 矩阵取数问题(矩阵取数dp,基础题)
1083 矩阵取数问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 一个N*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,从左上走到右下,只能向下 ...
- NOIP2007 矩阵取数游戏(区间DP)
传送门 这道题第一眼看上去可能让人以为是贪心……不过贪心并不行,因为每次的操作是有2的幂次方的权值的.这样的话直接每次贪心最小的就目光短浅.所以那我们自然想到了DP. 据说这是一道很正常的区间DP? ...
- 洛谷P2045 K方格取数(算竞进阶习题)
费用流 又是一道网络流的模型,对于这种费用与经过次数有关的边,我们经常把边拆成多条,比如这个题,第一次费用是x,第二次是0,我们就可以先把点拆成入点和出点,入点和出点又连两条边,第一条容量为1,费用为 ...
- [P1005][NOIP2007] 矩阵取数游戏 (DP+高精)
我不会高精…… 也不会DP…… 这道题即考高精又考DP…… 我要死了 给一个不是高精的代码(当然不能满分) #include<cstdio> #include<iostream> ...
- 洛谷P1679神奇的四次方数--DP
原题请戳>>https://www.luogu.org/problem/show?pid=1679<< 题目描述 在你的帮助下,v神终于帮同学找到了最合适的大学,接下来就要通知 ...
随机推荐
- 查询timestamp类型数据
$where=" roleid = 8 and lizhi = 0 and branchid IN (".implode(",",$ids).") a ...
- windos下创建软链接,附Linux下创建软链接
用过好多次老是忘记: 写在这里忘了就来看下 Windows下(win7) mklink /D D:\phpStudy\WWW\yii\school\teacher\web\uploads\public ...
- 原 jQuery中document的ready和load事件的区别?
概述: 大家在工作中用jQuery的时候一定会在使用之前这样: 1 2 3 4 5 6 7 8 //document ready $(document).ready(function(){ ...
- docker 镜像导入和导出
使用 docker commit 即可把这个容器变为一个镜像 docker commit 8d93082a9ce1 ubuntu:myubuntu 这时候 docker 容器会被创建为一个新的 Ubu ...
- Linux内核中的常用宏container_of其实很简单【转】
转自:http://blog.csdn.net/npy_lp/article/details/7010752 开发平台:Ubuntu11.04 编 译器:gcc version 4.5.2 (Ubun ...
- windows下制作debian U盘启动
制作平台:Windows 7 制作debian版本:debian 7.4 wheezy 1.下载引导镜像,包含三个文件:boot.img.gz(解压备用).initrd.gz 和 vmlinuz. h ...
- [ python ] 练习作业 - 1
1,写代码,有如下列表,按照要求实现每一个功能 li = ["alex","wusir","eric","rain",& ...
- 2017百度春招<有趣的排序>
题目 度度熊有一个N个数的数组,他想将数组从小到大排好序,但是萌萌的度度熊只会下面这个操作:任取数组中的一个数然后将它放置在数组的最后一个位置.问最少操作多少次可以使得数组从小到大有序? #inclu ...
- ASP.NET Core 上传大文件无法接收的问题
解决办法:在API项目中配置 1. 在 web.config 文件中 <system.webServer>里加入 <security> <requestFiltering ...
- 系统日志查看logrotate 工具
logrotate是作为linux系统日志的管理工具存在.他可以轮换,压缩,邮件系统日志文件. 默认的logrotate被加入cron的/etc/cron.daily中作为每日任务执行./etc/lo ...