首页 > 其他分享 >刷题笔记(2023.9.22)

刷题笔记(2023.9.22)

时间:2023-09-22 21:34:24浏览次数:38  
标签:const 22 min int sum 2023.9 刷题 getchar

路灯2

一眼区间 \(dp\) ,定义一个三维数组

\(f[i][j][0]\) 表示 \(i \sim j\) 区间中最后关第 \(i\) 盏灯。

\(f[i][j][1]\) 表示 \(i \sim j\) 区间中最后关第 \(j\) 盏灯。

然后可以退出状态转移方程为

int A=f[i+1][j][0]+(p[i+1]-p[i])*(sum[n]-sum[j]+sum[i]);
int B=f[i+1][j][1]+(p[j]-p[i])*(sum[n]-sum[j]+sum[i]);
int C=f[i][j-1][0]+(p[j]-p[i])*(sum[n]-sum[j-1]+sum[i-1]);
int D=f[i][j-1][1]+(p[j]-p[j-1])*(sum[n]-sum[j-1]+sum[i-1]);
f[i][j][0]=min(A,B);
f[i][j][1]=min(C,D);

其中 \(sum\) 数组为消耗总量的前缀和,可以降低时间复杂度。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int INF=0x3f3f3f3f;
const int N=55;
int n,c,x;
int p[N],sum[N],f[N][N][2];
inline int read(){
    char c=getchar();int f=1,x=0;
    while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
    while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
    return x*f; 
}
int main(){
    n=read();
    c=read();
    for(int i=1;i<=n;i++){
        p[i]=read();
        x=read();
        sum[i]=sum[i-1]+x;
    }
    memset(f,INF,sizeof(f));
    f[c][c][0]=f[c][c][1]=0;
    for(int l=2;l<=n;l++){
        for(int i=1;i+l-1<=n;i++){
            int j=i+l-1;
            int A=f[i+1][j][0]+(p[i+1]-p[i])*(sum[n]-sum[j]+sum[i]);
            int B=f[i+1][j][1]+(p[j]-p[i])*(sum[n]-sum[j]+sum[i]);
            int C=f[i][j-1][0]+(p[j]-p[i])*(sum[n]-sum[j-1]+sum[i-1]);
            int D=f[i][j-1][1]+(p[j]-p[j-1])*(sum[n]-sum[j-1]+sum[i-1]);
            f[i][j][0]=min(A,B);
            f[i][j][1]=min(C,D);
        }
    }
    printf("%d",min(f[1][n][0],f[1][n][1]));
    return 0;
}

标签:const,22,min,int,sum,2023.9,刷题,getchar
From: https://www.cnblogs.com/xuantianhao/p/17723428.html

相关文章

  • 9.22
    一、四则运算题importjava.util.Random;importjava.util.Scanner;publicclasscheng{publicstaticbooleancontains(intnum1,intnum2,intnum3,int[]a1,int[]a2,int[]a3){for(inti=0;i<a1.length;i++){if((num1==a......
  • 9/22随笔
    #include<bits/stdc++.h>usingnamespacestd;longlongn,m,p,s1,s2,s3,s4;longlongpoww(longlonga,longlongb){longlongans=1,base=a;while(b!=0){if(b&1!=0) ans=(ans%p)*(base%p)%p;base=(base%p)......
  • 23.9.22
    一、随机数生成器:使用公式生成指定数量的随机数importjava.util.Scanner;publicclassrandom{publicstaticvoidmain(String[]args){intn;inta=2147483647;intc=0;intm=16807;Scannerci=newScanner(System.in)......
  • [CF1229E]Marek and Matching
    Thisisaharderversionoftheproblem.Inthisversion,\(n\le7\).Marekisworkinghardoncreatingstrongtestcasestohisnewalgorithmicproblem.Doyouwanttoknowwhatitis?Nah,we'renottellingyou.However,wecantellyouhowheg......
  • 20230922
    23/09/233daiOJ模拟赛总结时间安排7:40-8:10这次花了20分钟读题,A感觉是推式子的题目,B想到是树的直径,C,D都没啥思路。8:10-8:50先把A60分写了,想到了平方差公式和勾股数公式,感觉勾股数好写,就去写勾股数,然后就寄了。8:50-9:40花了点时间把B题暴力打出来了,大样例本地花了3秒,赛......
  • 9.22日
    今天简单学习了英语语法,主要在傍晚进行了乒乓球击打的简单练习,通过和朋友的击打,逐渐对乒乓球的旋转和击打有了更深的理解。  ......
  • 2023.9.22——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午测试,下午做任务。我了解到的知识点:1.echarts结合mysql、javaweb实现大数据的可视化;明日计划:1.完成任务;2.尽力完成测试;......
  • 2023.09.22
    今天学习了javaweb的入门安装,以及进行了数据结构的学习栈是只允许在一端进行插入和删除操作的线性表,操作特性可以明显的概括为后进先出n个不同元素进栈,出栈元素不同排列的个数为C(n:2n)/n+1,即卡特兰数栈是一种操作受限的线性表,类似于线性表,它也有对应的两种存储方式采用顺序存储......
  • [CSP-S 2022 T1] 假期计划
    #include<cstdio>#include<vector>#include<queue>#include<algorithm>usingnamespacestd;typedeflonglongLL;constintN=2505;vector<int>G[N];intdis[N],top3[N][3];boolvis[N],ok[N][N];LLs[N];intmain(){......
  • 第十七届上海中华老字号博览会9月22日在上海展览中心启幕
    在中秋节、国庆节双节来临之际,由商务部、上海市商务委、上海市经济信息化委、黄浦区人民政府、静安区人民政府共同指导,黄浦区商务委、静安区商务委支持的第十七届上海中华老字号博览会于9月22日至24日在上海展览中心东一馆举行。作为“金秋旅游购物季”重点活动之一,本届博览会荟聚......