算法札记:ACM中将高精度算法融于题目的模板

题号:AcWIng1069 凸多边形的划分(不重要)

代码:

优点:高精度处理类似工程学的"模板",适应各种环境

cpp 复制代码
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
using LL=long long;
const int N=55,M=35,INF=1e9+5;
int n;
int w[N];
LL f[N][N][M];
void add(LL a[],LL b[]){
    static LL c[M];
    memset(c,0,sizeof c);
    for (int i=0,t=0;i<M;i++){
        t+=a[i]+b[i];
        c[i]=t%10;
        t/=10;
    }
    memcpy(a,c,sizeof(c));
}
void mul(LL a[],LL b){
    static LL c[M];
    memset(c,0,sizeof(c));
    LL t=0;
    for (int i=0;i<M;i++){
        t+=a[i]*b;
        c[i]=t%10;
        t/=10;
    }
    memcpy(a,c,sizeof(c));
}
int cmp(LL a[],LL b[]){
    for (int i=M-1;i>=0;i--){
        if (a[i]>b[i]){
            return 1;
        }else if (a[i]<b[i]){
            return -1;
        }
    }
    return 0;
}
void print(LL a[]){
    int k=M-1;
    while (k && !a[k]){
        k--;
    }
    while (k>=0){
        cout<<a[k--];
    }
    cout<<endl;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin>>n;
    for (int i=1;i<=n;i++){
        cin>>w[i];
    }
    LL temp[M];
    for (int len=3;len<=n;len++){
        for (int l=1;l+len-1<=n;l++){
            int r=l+len-1;
            f[l][r][M-1]=1;
            for (int k=l+1;k<r;k++){
                memset(temp,0,sizeof(temp));
                temp[0]=w[l];
                mul(temp,w[k]);
                mul(temp,w[r]);
                add(temp,f[l][k]);
                add(temp,f[k][r]);
                if (cmp(f[l][r],temp)>0){
                    memcpy(f[l][r],temp,sizeof(temp));
                }
            }
        }
    }
    print(f[1][n]);
    return 0;
}
相关推荐
deepseek239 分钟前
OpenAI三项科学发现拆解:3-SAT亚指数算法挑战ETH,AI科学声明的验证流水线怎么搭
人工智能·算法·openai
梦帮科技13 分钟前
基于幺正李代数连续归一化流的混合量子生成模型 (HQNN-Flow) 完整技术指南(上部分)
网络·人工智能·算法·量子计算
青少儿编程课堂14 分钟前
蓝桥杯青少组 + 全国青少年信息素养大赛 + 电子学会图形化考级|校园推箱子大挑战解析
c++·python·算法·bfs·信息学竞赛
荆棘鸟智能1 小时前
河道采砂船识别与轨迹追踪怎么做?检测、跟踪与电子围栏实战思路
人工智能·算法·目标检测
DFT计算杂谈2 小时前
GSAS-II X 射线衍射(XRD)数据转换为对分布函数(PDF,Pair Distribution Function)
算法·机器学习·pdf
绕灵儿2 小时前
火灾检测-应用场景-YOLO训练记录
人工智能·算法
YLCHUP2 小时前
【模拟&STL】题解:AT_abc203_e [ABC203E] White Pawn_基础算法_数据结构_STL模板库_AtcoderABC_C++算法竞赛
数据结构·c++·算法·leetcode·动态规划·哈希算法·近邻算法
(●—●)橘子……2 小时前
力扣 第525场周赛 练习理解
数据结构·python·学习·算法·leetcode
Rain的Java大神之路3 小时前
LeetCode 21 合并两个有序链表:一道 Easy 题,凭什么刷掉一半候选人?
java·后端·算法
小蒋观天下3 小时前
太阳能低功耗AI相机专项:AOV值守、唤醒时序、ISP启停时序BUG
深度学习·数码相机·算法·机器学习