全连

全连

全连

题目描述

还记得若干年前那段互相比较《克罗地亚狂想曲》的分数的日子吗?

E.Space 喜欢打音游。

但是他技术不好,总是拿不到全连(Full Combo)。

现在他面前有一份乐谱,乐谱的其中一段有 nnn 个连续的单键音符。

相邻两个音符的到来时间均相等,我们可以认为第 iii 个音符会在第 iii 个时刻到来。

点击一个音符,E.Space 需要一段准备时间来进行移动手指之类的操作。由于音符的位置和周围情况不同,点击每个音符的准备时间也不同。

在一个音符的准备时间内,E.Space 没法做到去点击其它音符,但是不同音符的准备时间范围可以互相重叠。形式化地,令第 iii 个音符的准备时间为 tit_iti​​ 个单位时间,那么如果 E.Space 选择去点击第 iii 个音符,那么他就没法点击所有到来时刻在 (iti ,i+tii + t_ii+ti​​)中的音符。

为了获得更高的分数,E.Space 还计算了每个音符的性价比。一个音符的性价比等于点击这个音符得到的分数除以 E.Space 点击它所需要的准备时间。

E.Space 就不指望全连了,他只是想让你帮他计算一下他最多可以得到多少分数。

输入格式

从文件 fc.in 中读入数据。
第一行一个正整数 n 。
第二行 n 个正整数,第i 个正整数表示 ti​​ 。
第三行 n 个正整数,第i 个正整数表示第 iii 个音符的性价比 aia_iai​​ 。

输出格式

输出到文件 fc.out 中。
一行一个正整数,表示 E.Space 可能达到的最高分数。

样例

样例 1 输入

5
2 3 2 1 2
3 1 2 9 4

样例 1 输出

18

样例 1 解释

E.Space 可以选择点击第 1,3,51,3,51,3,5 个音符,分数为 2×3+2×2+2×4=18 。

数据范围与提示

保证 ti≤nt_i \le nti​​n ,ai≤109a_i \le 10^9ai​​109​​

测试点编号n≤n \len
15
210
315
420
51000
62000
75000
810000
930000
1050000
11100000
12200000
13500000
14800000
151000000
161000000
17100000
18100000
191000000
201000000

 

 


solution

 

dp
令f[i]表示前i个音符,第i个音符必点的最大收益。
那么f[i]=f[j]+a[i]*t[i] (i-t[i]>=j&&j+t[j]<=i)
有一个比较裸的想法是第1个限制主席树,对于每一个1~j维护一稞线段树,维护合法位置,最大值。
可惜MLE。
考虑一个j如果在i时能贡献,以后也能。
那么我们可以在一个j能贡献时在把它加入。
用一个vector存某个点应该在哪里加入,剩下的树状数组维护。
 
 
 
posted @ 2019-02-16 22:40 liankewei123456 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个示例代码,用于基于 Keras 和 Tensorflow 构建全连连接神经网络,并实现 Mnist 手写体识别。 ```Python import tensorflow as tf from keras.models import Sequential from keras.layers import Dense, Flatten from keras.datasets import mnist from keras.utils import np_utils # 加载 Mnist 数据集 (X_train, y_train), (X_test, y_test) = mnist.load_data() # 数据处理 X_train = X_train.reshape(X_train.shape[0], 28 * 28).astype('float32') / 255 X_test = X_test.reshape(X_test.shape[0], 28 * 28).astype('float32') / 255 y_train = np_utils.to_categorical(y_train) y_test = np_utils.to_categorical(y_test) # 建立神经网络 model = Sequential() model.add(Dense(units=512, input_shape=(28 * 28,), activation='relu')) model.add(Dense(units=10, activation='softmax')) # 编译模型 model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # 训练模型 model.fit(X_train, y_train, epochs=20, batch_size=128, verbose=1, validation_data=(X_test, y_test)) # 评估模型 score = model.evaluate(X_test, y_test, verbose=0) print('Test accuracy:', score[1]) ``` 在这个示例代码中,我们首先加载 Mnist 数据集,并对数据进行处理,将每一个手写数字的图像转换为 28 * 28 的像素矩阵,并将像素值标准化到 [0, 1] 的范围内。 接着,我们建立了一个全连连接神经网络模型,该模型由两个密集层组成,第一个层具有 512 个神经元,采用 ReLU 激活函数,第二个层由 10 个神经元组成,采用 softmax 激活函数。在编译模型时,我们使用分类交叉熵作为损失函数,Adam 优化器作为优化器,并监视模型的准确性指标。 最后,我们训练模型,并评估模型的准确性。 请注意,此代码仅供参考,您可以根据自己的需求进行改进和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值