首页 > 其他分享 >[ABC163E] Active Infants

[ABC163E] Active Infants

时间:2024-01-07 16:33:25浏览次数:27  
标签:要开 int long Infants ABC163E Active now dp

思路

第一次看题很快就能想到贪心。一个大的值无非放到左边和右边,哪边增加的多放到哪边。但是有可能存在两边增加的一样的情况,同时不同的选择会影响以后的数值,所以贪心是错误的。

既然是对后面的数值有影响,那就是明显的 DP。先排个序,从大到小,然后每次先选未选过的最大的,枚举其在左右的两种情况。

DP 方程如下:

\[dp_{l,r} = \max(dp_{l + 1, r} + a_{now} \times |pos_{now} - l|,dp_{l, r - 1} + a_{now} \times |pow_{now} - r|) \]

代码

重要的事情说三遍:
一定要开 long long
一定要开 long long
一定要开 long long

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2005;
int n;
pair<int, int> a[N];
int f[N][N];
signed main() {
	scanf("%lld", &n);
	for (int i = 0; i < n; i++) {
		scanf("%lld", &a[i].first);
		a[i].second = i;
	}
	sort(a, a + n, greater<pair<int, int>>());
	for (int i = 0; i < n; i++) {
		for (int j = 0; j <= i; j++) {
			int k = i - j;
			f[j + 1][k] = max(f[j + 1][k], f[j][k] + a[i].first * abs(a[i].second - j));
			f[j][k + 1] = max(f[j][k + 1], f[j][k] + a[i].first * abs(n - k - 1 - a[i].second));
		}
	}
	int ans = 0;
	for (int i = 0; i <= n; i++)
		ans = max(ans, f[i][n - i]);
	printf("%lld", ans);
	return 0;
}

标签:要开,int,long,Infants,ABC163E,Active,now,dp
From: https://www.cnblogs.com/cloud-evecyx/p/17950743

相关文章

  • VUE框架Vue3下使用watch监听reactive下的数据变化并使深度监视起效------VUE框架
    <template><h1>{{data.counter}}</h1><button@click="data.counter++">按一下加一</button><h1>{{data.a.b.c.d.counter1}}</h1><button@click="data.a.b.c.d.counter1++">按一下加一&l......
  • vue3的ref、reactive、toRef、toRefs
    用处:用于在setup中创建响应式变量导出:import{ref,reactive,toRef,toRefs}from'vue'区别:ref用来定义基础数据类型,String,Number,Boolean,Symbol;通过Object.defineProperty()的get和set来实现响应式;js操作数据需要.value,模版中读取不需要.valuereactive用来定义......
  • PyQt报错:Cannot load backend 'Qt5Agg' which requires the 'qt5' interactive framew
    PyQt报错:Cannotloadbackend'Qt5Agg'whichrequiresthe'qt5'interactiveframework,as'headless'iscurrentlyrunning问题描述在远程链接ubuntu虚拟机进行开发时,报错。解决方案原因是pyqt需要绘制UI,而使用远程链接的终端(如windowspowershell、xshell、vscodetermi......
  • 238-hover 、active、focus伪类
    :hover伪类用于选择鼠标悬停在元素上的状态:active伪类表示元素处于激活状态,通常是在用户点击并按住鼠标按钮时触发。这一状态通常在点击瞬间发生,持续到鼠标按钮释放。:focus伪类表示元素获得焦点,通常是通过键盘(Tab键)或者其他方式进行焦点切换时触发。对于可点击元素,点击时也......
  • 清空ActiveMQ中的Scheduled延时队列
    要清空ActiveMQ中的Scheduled延时队列,可以执行以下步骤:停止ActiveMQ服务器。在ActiveMQ数据存储目录中找到存储延时消息的目录。该目录的默认位置是<activemq_home>/data/localhost/Scheduled.删除该目录下的所有文件,这将清空延时队列中的消息。启动ActiveMQ服务器。请注意......
  • Active MM 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/mm/active_mm.html注意,对于内核中配置为CONFIG_MMU_LAZY_TLB_REFCOUNT=n的系统,mm_count引用计数可能不再包括“懒惰”用户(即运行任务时满足条件->active_mm==mm&&->mm==NULL的用户)。必须使用mmgrab_lazy_tlb()和mmdrop_laz......
  • activemq 设置过期时间后消息收不到
    要在activemq.xml配置文件中添加TimestampPlugin的配置,你可以按照以下步骤操作:打开你的activemq.xml配置文件。在<broker>标签内找到<plugins>部分。在<plugins>部分中添加<timeStampingBrokerPlugin>标签,并设置你想要的属性。例如,如果你想要设置TTL上限为1天(86400000毫秒),可......
  • activemq启动成功但web管理页面却无法访问
    前提:在linux启动activemq成功!本地能ping通linux处理方案:确定防火墙是否关闭,有两种处理方案:第一种-关闭防火墙;第二种-暴漏8161和61616两个端口netstat-lnpt查看8161和61616端口注意:要查看8161端口前面的显示的ip是什么若是出现上面的情况,则修改配置文件即可:vimconf/jetty.xml,找......
  • 使用 com.jacob.activeX 库实现 Word 到 PDF
    使用com.jacob.activeX库实现Word到PDF的转换涉及到使用Java和MicrosoftOffice的COM自动化。JACOB(JavaCOMBridge)库提供了一个桥接器,允许Java代码通过COM(组件对象模型)与Windows应用程序(如MicrosoftOffice)进行交互。以下是一个示例代码,展示如何使用JACOB库在......
  • C. Removal of Unattractive Pairs
    这道题很考验思维。这道题目我们只需要考虑出现次数最多的字符的个数,分两种情况讨论。1、如果该字符出现次数超过n/2(这里设为x),那么其他字符和该字符凑成一对进行消除,即剩下的长度为2x-n。2、如果该字符出现次数低于n/2,那么对于任意字符都有足够的其余字符和他凑成一对进行消除,......