当前位置: 首页 > news >正文

最强DE 战斗力 (nyoj 541)

题解链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=541

几天前百度题解后用数学知识AC的,后来大牛说这是一道动态规划题。

网上的数学解题链接:http://blog.csdn.net/x314542916/article/details/8204583

d(i) = max{d(j)*d(n-j) | 1<= j <=n/2};

用Java写比较简单

import java.math.BigInteger;
import java.util.Scanner;

public class Main{

    final int N = 1010;
    BigInteger d[] = new BigInteger[N];
    Scanner cin = new Scanner(System.in);
    
    public static void main(String[] args) {
        int t, n;
        t = cin.nextInt();
        for(int i=0; i<N; i++)
            d[i] = new BigInteger("0");
        for(int i= 1; i<=N-2; i++){
            d[i] = BigInteger.valueOf(i);
            for(int j=1; j<=i/2; j++){
                d[i] = d[i].max(d[j].multiply(d[i-j]));
            }
        }
        while(t-- > 0){
            n = cin.nextInt();
            System.out.println(d[n].toString());
        }
    }
}

 

用数学知识的解题代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
using namespace std;
#define INF 0x7fffffff
#define N 10000
#define MOD 10


int ans[N];

void mutify(int n)
{
    if(n <= 0)return; 
    for(int i=0; i<n; i++){
        int c = 0;
        for(int k=0; k<N; k++){
            ans[k] = ans[k]*3+c;
            c = ans[k]/MOD; 
            if(ans[k] >= MOD)
                ans[k] %= MOD; 
        } 
    } 
}

void muti(int n){
    for(int i=0; i<N; i++)
        ans[i] = ans[i]*n;
    int c = 0;
    for(int i=0; i<N; i++){
        ans[i] = ans[i]+c; 
        c = ans[i]/MOD;
        ans[i] %= MOD;
    } 
}




int main()
{
    int t, m, n;
    cin>>t;
    while(t--) {
        memset(ans, 0, sizeof(ans));
        ans[0] =1;
        cin>>m;
        if(m%3 != 1){
            mutify(m/3);
        }else {// if(m%3 == 1)
            mutify(m/3-1);
            if(m > 1) muti(4);
        }
        if(m%3 == 2){
            muti(2);
        }
        int k = N-1;
        while(ans[k] == 0) k--;
        for(int i=k; i>=0; i--){
            cout<<ans[i];
        }
        cout<<endl;
        
    }    
    return 0;
}

转载于:https://www.cnblogs.com/huwtylv/p/4418176.html

相关文章:

  • MaxCompute数据安全机制
  • Spring配置中transactionAttributes的使用方法和作用
  • BZOJ 1874: [BeiJing2009 WinterCamp]取石子游戏 [Nim游戏 SG函数]
  • 编程之美2015资格赛 题目2 : 回文字符序列 [ 区间dp ]
  • StackExchange.Redis加载Lua脚本进行模糊查询的批量删除和修改
  • Java培训小结
  • Flume NG 学习笔记(六)Selector(复用与复制)测试
  • [开源]用MQL4实现MD5加密
  • 清除浮动
  • zabbix监控mysql主从状态
  • 大整数算法[12] 有符号乘法
  • 多线程(七)---多线程同步相关问题
  • java基础入门1到100的奇数求和
  • 清除Css中select的下拉箭头样式
  • android中webview携带cookie以及webview所加载网页中js调用java方法问题
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • [译]CSS 居中(Center)方法大合集
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【刷算法】求1+2+3+...+n
  • 2017-08-04 前端日报
  • 30秒的PHP代码片段(1)数组 - Array
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • HashMap ConcurrentHashMap
  • js正则,这点儿就够用了
  • Logstash 参考指南(目录)
  • magento 货币换算
  • node-glob通配符
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • OSS Web直传 (文件图片)
  • python大佬养成计划----difflib模块
  • ReactNativeweexDeviceOne对比
  • Redux 中间件分析
  • Vue 动态创建 component
  • 从0实现一个tiny react(三)生命周期
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 力扣(LeetCode)21
  • 前端学习笔记之观察者模式
  • 三栏布局总结
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 在Mac OS X上安装 Ruby运行环境
  • Java总结 - String - 这篇请使劲喷我
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #QT(TCP网络编程-服务端)
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (11)MATLAB PCA+SVM 人脸识别
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (分布式缓存)Redis哨兵
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (六)vue-router+UI组件库
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (三)elasticsearch 源码之启动流程分析
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)Mysql的优化设置