P1005 [NOIP2007 提高组] 矩阵取数游戏

网址:P1005 [NOIP2007 提高组] 矩阵取数游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

动态规划和高精度的组合,使我的滨州旋转

最后只得了80,两个测试点超时了

看题解有人是用了int128来做的,明天学一下

我的递归思路和常规的不同,但也能做就是了,明天参考一下他们的

垃圾代码如下:

#include<stdio.h>
#include<string.h>
#define MAXN 30
void multiply_constant(int a[], int b);
void add_constant(int a[], int b);
void add_array(int a[], int b[]);
int digcmp(int a[], int b[]);
int diglen(int a[]);
int dp[81][81][MAXN], num[81], result[MAXN];
int n, m;//result的长度int main(void)
{scanf("%d%d", &n, &m);for(int i = 0; i < n; i++){memset(dp, 0, sizeof(dp));for(int j = 1; j <= m; j++)scanf("%d", &num[j]);for(int j = 1; j <= m; j++){add_constant(dp[0][j], num[m + 1 - j]), add_constant(dp[j][0], num[j]);for(int k = 0; k < j; k++)multiply_constant(dp[0][j], 2), multiply_constant(dp[j][0], 2);add_array(dp[0][j], dp[0][j - 1]), add_array(dp[j][0], dp[j - 1][0]);}//处理一直从左边取和一直从右边取的情况for(int j = 2; j <= m; j++)//j代表取了多少数{for(int x = 1; x < j; x++){int y = j - x;int tmp1[MAXN] = {0}, tmp2[MAXN] = {0};add_constant(tmp1, num[x]), add_constant(tmp2, num[m + 1 - y]);for(int k = 0; k < j; k++)multiply_constant(tmp1, 2), multiply_constant(tmp2, 2);add_array(tmp1, dp[x - 1][y]), add_array(tmp2, dp[x][y - 1]);if(digcmp(tmp1, tmp2) >= 0)memcpy(dp[x][y], tmp1, sizeof(tmp1));elsememcpy(dp[x][y], tmp2, sizeof(tmp2));}//dp[x][y] = max{dp[x - 1][y] + num[x] * 2 ^ j, dp[x][y - 1] + num[m + 1 - y] * 2 ^ j}//x代表左边取了多少数,y代表右边取了多少数}//得到取完的数中的最大的数int tmp[MAXN] = {0};for(int x = 0; x <= m; x++){int y = m - x;if(digcmp(tmp, dp[x][y]) < 0)memcpy(tmp, dp[x][y], sizeof(dp[x][y]));}//result加上最大的数add_array(result, tmp);}//输出resultfor(int i = diglen(result) - 1; i >= 0; i--)printf("%d", result[i]);return 0;
}
void multiply_constant(int a[], int b)
{int ext = 0, i;for(i = 0; i < diglen(a); i++){ext += b * a[i];a[i] = ext % 10;ext /= 10;}while(ext){a[i++] = ext % 10;ext /= 10;}return;
}
void add_constant(int a[], int b)
{int ext = 0, i = 0;while(b){ext += a[i] + b % 10;a[i++] = ext % 10;ext /= 10, b /= 10;}return;
}
void add_array(int a[], int b[])
{int ext = 0;for(int i = 0; i < MAXN; i++){ext += a[i] + b[i];a[i] = ext % 10;ext /= 10;}return;
}//m加到n上
int digcmp(int a[], int b[])
{for(int i = MAXN - 1; i >= 0; i--)if(a[i] != b[i])return a[i] - b[i];return 0;
}//n更大时返回整数
int diglen(int a[])
{int i;for(i = MAXN; i >= 0; i--)if(a[i])  break;if(i < 0) return 1;return i + 1;
}//得到n数组的长度

累了累了,洗洗睡

题解就先不写了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/203627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于 mapboxgl 的常用方法及效果

给地图标记点 实现效果 /*** 在地图上添加标记点* point: [lng, lat]* color: #83f7a0*/addMarkerOnMap(point, color #83f7a0) {const marker new mapboxgl.Marker({draggable: false,color: color,}).setLngLat(point).addTo(this.map);this.markersList.push(marker);},…

java 操作git

​ 实现功能&#xff1a;借助jgit实现拉取文件&#xff0c;并返回文件路径清单 <!-- 依赖库 版本号有自行选择&#xff0c;只是需要注意支持的jdk版本即可&#xff0c;我使用的是jdk1.8--> <dependency><groupId>org.eclipse.jgit</groupId><artif…

AI必然成为未来的OS

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 ChatGPT引入插件&#xff0c;AI必然成为未来OS&#xff0c;或至少成为绝大多数APP首选入口。未来软件开发根据任务不同&#xff0c;有两种不同范式&#xff1a; &a…

unity 2d 入门 飞翔小鸟 场景淡入淡出功能(三)

1、在图层新建个空的图层 场景2 2创建c#脚本 脚本创建好后&#xff0c;将脚本推拽进空白图层里面&#xff0c;将黑色图片拉进去脚本的参数里面&#xff0c;如上面最后一张图&#xff0c;两个切换的场景都要进行上述操作 using System.Collections; using System.Collection…

多个项目复用node_modules

多个项目使用的node_modules基本一致&#xff0c;每个项目都安装一遍依赖&#xff0c;对空间造成资源浪费。 通过创建软链接的方式&#xff0c;共用一套node_modules。 Win解决方案 mklink /d [链接文件或目录] [原始文件或目录] // 举例 mklink /d D:\work\project-1\node_m…

识别低效io引起的free buffer waits

产生事发时间段的awr报告 Top 5 wait events 这里重点关注&#xff1a; 1.free buffer waits 2.enq_HW-contention 3.enq:tx-row lock contention enq:HW-contention属于水位线的争用&#xff0c;已经透过alter table allocate extent&#xff0c;提前分配空间,这里不做讨论 …

软件工程之需求分析

一、对需求的基本认识 1.需求分析简介 (1)什么是需求 用户需求&#xff1a;由用户提出。原始的用户需求通常是不能直接做成产品的&#xff0c;需要对其进行分析提炼&#xff0c;最终形成产品需求。 产品需求&#xff1a;产品经理针对用户需求提出的解决方案。 (2)为什么要…

【Python】Flask + MQTT 实现消息订阅发布

目录 Flask MQTT 实现消息订阅发布准备开始1.创建Flask项目2创建py文件&#xff1a;mqtt_demo.py3.代码实现4.项目运行5.测试5.1 测试消息接收5.2 测试消息发布6、扩展 Flask MQTT 实现消息订阅发布 准备 本次项目主要使用到的库&#xff1a;flask_mqtt pip install flask…

Mysql支持ssl

Mysql支持ssl 查看数据库是否支持ssl配置 mysql> show variables like ‘have%ssl%’; 查看数据库端口号 mysql> show variables like ‘port’; 查看数据库数据存放路径 mysql> show variables like ‘datadir’; 通过openssl 制作生成 SSL 证书&#xff08;有…

Leetcode刷题详解——最长湍流子数组

1. 题目链接&#xff1a;978. 最长湍流子数组 2. 题目描述&#xff1a; 给定一个整数数组 arr &#xff0c;返回 arr 的 最大湍流子数组的长度 。 如果比较符号在子数组中的每个相邻元素对之间翻转&#xff0c;则该子数组是 湍流子数组 。 更正式地来说&#xff0c;当 arr 的子…

【前端设计模式】之策略模式

概述 在前端开发中&#xff0c;我们经常会遇到需要根据不同的条件或情况来执行不同的算法或行为的情况。这时&#xff0c;策略模式就能派上用场。策略模式是一种行为型设计模式&#xff0c;它将不同的算法封装成独立的策略对象&#xff0c;使得这些算法可以互相替换&#xff0…

ALPHA开发板烧录工具MfgTool简介

一. 简介 前面我们已经移植好了 uboot 和 linux kernle &#xff0c;制作好了根文件系统。但是我们移植都是通 过网络来测试的&#xff0c;在实际的产品开发中肯定不可能通过网络来运行。 因此&#xff0c;我们需要将 uboot 、 linux kernel 、 .dtb( 设备树 ) 和 rootf…

串口环形收发原理及实现

一、环形收发队列构建 1、构造环形收发数组及其长度 #define buff_size 10 Unsigned char buff[buff_size]; 2、定义环形收发读/写位置 u16 R_Buff; u16 W_Buff; 3、结构体封装 typedef struct Qbuff {u16 write; //写位置u16 read; //读位置u8 buf…

Zabbix自定义飞书webhook告警媒介1

说明&#xff1a;此配置仅适用于7版本及以上&#xff0c;低版本可能有问题 JavaScript 内容如下&#xff1a; try {var sourceData JSON.parse(value),req new HttpRequest(),response;if (sourceData.HTTPProxy) {req.setProxy(sourceData.HTTPProxy);}req.addHeader(Conte…

手机拍摄的照片复制到CSDN博客中自动旋转的问题的解决

概要&#xff1a;写CSDN博客的时候&#xff0c;复制手机拍摄的照片到博客中&#xff0c;照片会自动发生90度旋转。目前找到了两个解决方法。问题出现的环境是Ubuntu22.04Firefox120.0.1 方法一&#xff1a;用shutter打开重新保存 选中图片——>鼠标右键——>选择用其他软…

pytorch中的transpose用法

注意&#xff1a;维数从0开始&#xff0c;0维 1维2维…,负数代表从右往左数&#xff0c;-1代表第一维&#xff0c;以此类推 import torch import numpy as np# 创建一个二维数组 arr torch.tensor([[[1, 2],[3, 4]],[[5, 6],[7, 8]]]) print("原始数组&#xff1a;"…

python操作MySQL——封装增删改查

上一篇&#xff1a;python操作MySQL数据——连接与插入数据-CSDN博客 下一篇&#xff1a;python操作mysql——批量添加csv数据-CSDN博客 import pymysql.cursors from pymysql.err import OperationalError from data.readCsv import Csv_to_lst import os import configpar…

Docker部署.NET6项目

Docker的三大核心概念 1、docker仓库&#xff08;repository&#xff09; docker仓库&#xff08;repository&#xff09;类似于代码库&#xff0c;是docker集中存放镜像的场所。实际上&#xff0c;注册服务器是存放仓库的地方&#xff0c;其上往往存放着很多仓库。每个仓库集…

案例058:基于微信小程序的智能社区服务系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

操作符(原码反码补码)

目录 前言&#xff1a; 原反补码&#xff1a; 位操作符&#xff1a; &#xff06; &#xff5c; &#xff3e; &#xff5e; >> << 总结&#xff1a; 逻辑操作符 && || 其他操作符&#xff1a; sizeof -- () &#xff1f;&#xf…