【今天mns】2024.3.10

2024.3.10 【多识草木少识人 常守世间清净心】

Sunday 二月初一


今天模拟赛啊。

T1

题目描述

淘淘蓝蓝在打游戏。他们有 n n n个技能,每个技能有两个正整数为参数,分别表示法术加成与基础伤害。具体的,如果他们的法术强度为,则该技能造成的伤害为。
  由于他们技能的基础伤害不是很高,在最后与boss的对战中,淘淘蓝蓝使用了外挂,大幅提升了自己的法术强度。淘淘蓝蓝有
q q q 个询问,每个询问有两个参数 k k k m m m,表示当前的法术强度为 k ,最多能使用 m 个技能,他们想知道这 m m m 个技能最多能打出多少伤害。

输入格式
第一行一个整数 n n n
接下来 n n n 行,每行两个整数 a i , b i a_i,b_i ai,bi,表示第 i i i 个技能的法术加成与基础伤害。
n + 2 n+2 n+2 行,一个整数 q q q ,表示有 q q q 个询问。
接下来 q q q 行,每行两个整数 k k k , m m m, 表示当前的法术强度为 k k k ,最多能使用 m m m 个技能。

输出格式
q 行,每行一个整数,为伤害的最大值。
样例输入

4
1007 991
514 8
3134 62
559 101
1
2103 3

样例输出

9885254

提示说明
对于 20 20% 20 的数据, n , q ≤ 100 n,q≤100 n,q100
对于 40 40% 40 的数据, n , q ≤ 1000 n,q≤1000 n,q1000
对于 60 60% 60 的数据, n , q ≤ 5000 n,q≤5000 n,q5000
对于 80 80% 80 的数据, n , q ≤ 100000 , m ≤ 500 n,q≤100000 ,m≤500 n,q100000,m500
对于全部数据, q ≤ 500000 , 1 ≤ a i ≤ 10000 , 1 ≤ b i ≤ 1000 , 1000 ≤ k ≤ 100000000 , 1 ≤ m ≤ q q≤500000 , 1≤a_i≤10000 ,1≤b_i≤1000 ,1000≤k≤100000000 ,1≤m≤q q500000,1ai10000,1bi1000,1000k100000000,1mq

STL ,前缀和
发现数据范围有点怪…具体来说,观察到 1 ≤ a ≤ 10000 1≤a≤10000 1a10000,而 b ≤ 1000 , k ≥ 1000 b≤1000,k≥1000 b1000k1000,会发现 k a ka ka 总是大于 b , a b,a ba的影响完全
大于 b b b的,直接把第一关键字设为 a , b a,b ab为第二关键字降序排序,再分别求出 a , b a,b a,b的前缀和就行。
(nnd,下次别在数据范围里埋坑了)

T2

题目描述
虽然被迫转移了阵地,但是机房的 OIer 们很快就卷土重来。可是电脑里的数据都被破坏了,hs_black 公司需要给每台电脑恢复数据。

机房一共有
n 排电脑(从 1 到 n)
hs_black 公司准备了 m 个电脑修复专业户——OIer。 一开始 m 个 OIer 都挤在门口(相当于第 0 排),每时刻每个 OIer 可以进行两种动作:

从某一排走向下一排
为这一排的某一台电脑恢复数据
每个 OIer 都是互相独立的,请问 OIer 们恢复所有数据最少要用多少时间。

输入格式
第一行两个正整数 n , m n,m n,m 表示电脑的排数和 OIer 的数量。
第二行 n n n 个非负整数,第 i i i个整数表示第 i i i 行的电脑数。

输出格式
输出一行一个整数,表示最少恢复用时。

样例输入

3 2
1 0 2

样例输出

5

数据规模与约定
对于 30 30% 30数据, 1 < = n , m < = 100 1<=n,m<=100 1<=n,m<=100.
对于 100 100% 100数据, 1 < = n , m < = 100000 1<=n,m<=100000 1<=n,m<=100000,输入的任何数字不超过输入的任何数字不超过 1 0 9 10^9 109
(机房学长说是模拟被hack了)
二分答案、贪心

bool check(ll x)
{
if(x<=n&&s[x])return 0;
ll lef=m*(x-1);
for(int i=1;i<min(1ll*n+1,x);i++)
{
if(lef<a[i])return 0;
lef-=a[i];
lef-=(lef+(x-i)-1)/(x-i);
}
return 1;
}

T3

方程的解
题目描述
佳佳碰到了一个难题,请你来帮忙解决。对于不定方程 a 1 + a 2 + ⋯ + a k − 1 + a k = g ( x ) a_1+a_2+\cdots +a_{k-1}+a_k=g(x) a1+a2++ak1+ak=g(x),其中 k ≥ 2 k\ge 2 k2 k ∈ N ∗ k\in \mathbb{N}^* kN x x x 是正整数, g ( x ) = x x   m o d   1000 g(x)=x^x \bmod 1000 g(x)=xxmod1000(即 x x x^x xx 除以 1000 1000 1000 的余数), x , k x,k x,k 是给定的数。我们要求的是这个不定方程的正整数解组数。

举例来说,当 k = 3 , x = 2 k=3,x=2 k=3,x=2 时,方程的解分别为:
{ a 1 = 1 a 2 = 1 a 3 = 2 \begin{cases} a_1=1\\ a_2=1\\ a_3=2 \end{cases} a1=1a2=1a3=2
{ a 1 = 1 a 2 = 2 a 3 = 1 \begin{cases} a_1=1\\ a_2=2\\ a_3=1 \end{cases} a1=1a2=2a3=1
{ a 1 = 2 a 2 = 1 a 3 = 1 \begin{cases} a_1=2\\ a_2=1\\ a_3=1 \end{cases} a1=2a2=1a3=1

输入格式
输入有且只有一行,为用空格隔开的两个正整数,依次为 k , x k,x k,x

输出格式
输出有且只有一行,为方程的正整数解组数。

样例 #1
样例输入 #1

3 2

样例输出 #1

3

提示

  • 对于 40 % 40\% 40% 的数据, a n s ≤ 1 0 16 \mathit{ans} \le 10^{16} ans1016
  • 对于 100 % 100\% 100% 的数据, k ≤ 100 k \le 100 k100 x ≤ 2 31 − 1 x \le 2^{31}-1 x2311 k ≤ g ( x ) k \le g(x) kg(x)
    NOI导刊2010提高(01)

就摁exgcd就行了
(我数论白学了)

T4

题目描述
有n个白色棋子,m个黑色棋子,现在需要把他们排成一排,要求对于任意一段棋子,其中的白色棋子和黑色棋子的差不能超过k,求棋子排列方案数对 1000000007 ( 1 e 9 + 7 ) 1000000007(1_e9+7) 1000000007(1e9+7)的结果。
注:(黑-黑-白-白) 与 (白-白-黑-黑) 视为不同的方案。

输入输出格式
输入格式
第一行三个正整数表示 n , m , k n,m,k n,m,k

输出格式

一个数表示答案。
输入输出样例
输入样例 #1

2 2 1

输出样例 #1

2

输入样例 #2

19 12 2

输出样例 #2

0

输入样例 #3

11 14 4

输出样例 #3

485072

样例解释
对于样例1, k = 1 k=1 k=1,则白棋子和黑棋子均不能两枚相邻,于是可行的排列只有两种:1.黑-白-黑-白/2.白-黑-白-黑方案数2。
DP
黑棋子比白棋子多bla个,白棋子黑棋子多 whi个,那么转移方程为:
转移方程:
f [ i + 1 ] [ j ] [ b l a + 1 ] [ m a x ( w h i − 1 , 0 ) ] + = f [ i ] [ j ] [ b l a ] [ w h i ] f [ i ] [ j + 1 ] [ m a x ( b l a − 1 , 0 ) ] [ w h i + 1 ] + = f [ i ] [ j ] [ b l a ] [ w h i ] f[i+1][j][bla+1][max(whi-1,0)]+=f[i][j][bla][whi]\\ f[i][j+1][max(bla-1,0)][whi+1]+=f[i][j][bla][whi] f[i+1][j][bla+1][max(whi1,0)]+=f[i][j][bla][whi]f[i][j+1][max(bla1,0)][whi+1]+=f[i][j][bla][whi]
时间复杂度很好看啊: O ( n m k 2 ) O(nmk^2) O(nmk2)

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值