国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

每日算法打卡:波動數(shù)列 day 16

這篇具有很好參考價值的文章主要介紹了每日算法打卡:波動數(shù)列 day 16。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

原題鏈接

1214. 波動數(shù)列

題目難度:中等

題目來源:第五屆藍(lán)橋杯省賽C++ A組,第五屆藍(lán)橋杯省賽Java A組

題目描述

觀察這個數(shù)列:

1 3 0 2 -1 1 -2 …

這個數(shù)列中后一項總是比前一項增加2或者減少3,且每一項都為整數(shù)。

棟棟對這種數(shù)列很好奇,他想知道長度為 n 和為 s 而且后一項總是比前一項增加 a 或者減少 b 的整數(shù)數(shù)列可能有多少種呢?

輸入格式

共一行,包含四個整數(shù) n,s,a,b,含義如前面所述。

輸出格式

共一行,包含一個整數(shù),表示滿足條件的方案數(shù)。

由于這個數(shù)很大,請輸出方案數(shù)除以 100000007 的余數(shù)。

數(shù)據(jù)范圍

1 ≤ n ≤ 1000 1 \le n \le 1000 1n1000,
? 1 0 9 ≤ s ≤ 1 0 9 -10^9 \le s \le 10^9 ?109s109,
1 ≤ a , b ≤ 1 0 6 1 \le a,b \le 10^6 1a,b106

輸入樣例:
4 10 2 3 
輸出樣例:
2 
樣例解釋

兩個滿足條件的數(shù)列分別是2 4 1 3和7 4 1 -2。

題目分析

這道題的意思很簡單就是長度為 n 和為 s 而且后一項總是比前一項增加 a 或者減少 b 的整數(shù)數(shù)列可能有多少種

我們可以從數(shù)學(xué)角度來看,第一項假設(shè)為 x x x,第二項就為 x + d 1 x+d_1 x+d1?,第三項為 x + d 1 + d 2 x+d_1+d_2 x+d1?+d2?,以此類推,這里的 d i ∈ { + a , ? b } d_i\in\{+a,-b\} di?{+a,?b},然后一共有 n n n

那么他的前n項和為 n x + ( n ? 1 ) d 1 + ( n ? 2 ) d 2 + ? + d n ? 1 = s nx+(n-1)d_1+(n-2)d_2+\dots+d_{n-1}=s nx+(n?1)d1?+(n?2)d2?+?+dn?1?=s

我們可以發(fā)現(xiàn)在這個過程中的變量是非常多的首先x是屬于任意整數(shù)的,其次是每一個d,都有兩種選法,所以我們可以從后往前進(jìn)行推算,因為只要后面的數(shù)字確定了,前面的情況其實也并不算多

我們可以算出來x

x = s ? ( ( n ? 1 ) d 1 + ( n ? 2 ) d 2 + ? + d n ? 1 ) n x=\frac{s-((n-1)d_1+(n-2)d_2+\dots+d_{n-1})}{n} x=ns?((n?1)d1?+(n?2)d2?+?+dn?1?)?

任何一組對應(yīng)的d的取值都對應(yīng)了一個x

那么問題就變成了,所有滿足要求的d的取值的方案數(shù)

第一個要求是每一個d都只能取兩種,第二個要求是x必須是整數(shù),即為分子必須是分母的倍數(shù)

這里有一個名為同余定理的簡化方法,因為需要s減去和與n的模值為0,所以只需要s與和的模n的余數(shù)相同即可,因為相減是可以把余數(shù)減掉的

那么我們還是使用集合思想的動態(tài)規(guī)劃,對于集合 f ( i , j ) f(i,j) f(i,j),他的含義是前i項的和除n的余數(shù)是j的方案數(shù)的集合

那么對于狀態(tài)計算,我們?nèi)匀豢紤]集合劃分,可以劃分成兩個子集,第一種就是最后一項+a的,第二種是最后一項-b的,我們只需要分別求兩邊的情況方案數(shù)相加即可

f ( i ? 1 , ( j ? i ? a ) % n ) f(i-1,(j-i*a)\%n) f(i?1,(j?i?a)%n)文章來源地址http://www.zghlxwxcb.cn/news/detail-793967.html

示例代碼

#include<iostream>
using namespace std;

const int N = 1010,MOD = 100000007;

int f[N][N];
int mod(int a,int b) // 求正余數(shù)
{
    return (a%b+b)%b;
}

int main()
{
    int n,s,a,b;
    cin>>n>>s>>a>>b;
    f[0][0] = 1;
    for(int i=1;i<n;i++)
        for(int j=0;j<n;j++)
        {
            f[i][j] = (f[i-1][mod(j-(n-i)*a,n)]+f[i-1][mod(j+(n-i)*b,n)])%MOD;
        }
    cout<<f[n-1][mod(s,n)]<<'\n';
    return 0;
}

到了這里,關(guān)于每日算法打卡:波動數(shù)列 day 16的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【ACM算法競賽日常訓(xùn)練】DAY16【奇♂妙拆分】【區(qū)區(qū)區(qū)間間間】【小AA的數(shù)列】數(shù)學(xué) | 位運算 | 前綴和

    DAY16共3題: 奇♂妙拆分(簡單數(shù)學(xué)) 區(qū)區(qū)區(qū)間間間(單調(diào)棧) 小AA的數(shù)列(位運算dp) ?? 作者:Eriktse ?? 簡介:19歲,211計算機在讀,現(xiàn)役ACM銀牌選手??力爭以通俗易懂的方式講解算法!??歡迎關(guān)注我,一起交流C++/Python算法。(優(yōu)質(zhì)好文持續(xù)更新中……)?? ?? 閱讀原

    2023年04月20日
    瀏覽(15)
  • 算法題打卡day45-背包問題 | 70. 爬樓梯 (進(jìn)階)、322. 零錢兌換、279.完全平方數(shù)

    70. 爬樓梯 - 力扣(LeetCode) 狀態(tài):查看思路后AC。 除了常規(guī)的可以爬一或二級臺階,當(dāng)題目稍微修改一下,變成可以爬m(xù)級臺階,之前的DP思路就有局限(dp[i] = dp[i-1] + dp[i-2),為了通殺這類問題,可以將題目轉(zhuǎn)換為完全背包問題,可以爬的樓梯級數(shù)就是背包中的物品,樓梯總

    2024年02月11日
    瀏覽(30)
  • 算法打卡day39|動態(tài)規(guī)劃篇07| Leetcode 70. 爬樓梯(進(jìn)階版)、322. 零錢兌換、279.完全平方數(shù)

    算法打卡day39|動態(tài)規(guī)劃篇07| Leetcode 70. 爬樓梯(進(jìn)階版)、322. 零錢兌換、279.完全平方數(shù)

    Leetcode 70. 爬樓梯(進(jìn)階版) 題目: 假設(shè)你正在爬樓梯。需要 n 階你才能到達(dá)樓頂。 每次你可以爬至多m (1 = m n)個臺階。你有多少種不同的方法可以爬到樓頂呢? 注意:給定 n 是一個正整數(shù)。 輸入描述:輸入共一行,包含兩個正整數(shù),分別表示n, m 輸出描述:輸出一個整數(shù),

    2024年04月14日
    瀏覽(24)
  • 每日打卡day9——差分矩陣

    輸入一個?n 行?m?列的整數(shù)矩陣,再輸入?q?個操作,每個操作包含五個整數(shù)?x1,y1,x2,y2,c,其中?(x1,y1) 和?(x2,y2) 表示一個子矩陣的左上角坐標(biāo)和右下角坐標(biāo)。 每個操作都要將選中的子矩陣中的每個元素的值加上?c。 請你將進(jìn)行完所有操作后的矩陣輸出。 輸入格式 第一行包

    2024年02月16日
    瀏覽(16)
  • 每日打卡day8——差分練習(xí)

    輸入一個長度為?n?的整數(shù)序列。 接下來輸入?m?個操作,每個操作包含三個整數(shù)?l,r,c,表示將序列中?[l,r] 之間的每個數(shù)加上?c。 請你輸出進(jìn)行完所有操作后的序列。 輸入格式 第一行包含兩個整數(shù)?n?和?m。 第二行包含?n?個整數(shù),表示整數(shù)序列。 接下來?m?行,每行包含

    2024年02月17日
    瀏覽(18)
  • 藍(lán)橋杯專題-試題版-【地宮取寶】【斐波那契】【波動數(shù)列】【小朋友排隊】

    藍(lán)橋杯專題-試題版-【地宮取寶】【斐波那契】【波動數(shù)列】【小朋友排隊】

    點擊跳轉(zhuǎn)專欄=Unity3D特效百例 點擊跳轉(zhuǎn)專欄=案例項目實戰(zhàn)源碼 點擊跳轉(zhuǎn)專欄=游戲腳本-輔助自動化 點擊跳轉(zhuǎn)專欄=Android控件全解手冊 點擊跳轉(zhuǎn)專欄=Scratch編程案例 點擊跳轉(zhuǎn)=軟考全系列 點擊跳轉(zhuǎn)=藍(lán)橋系列 專注于 Android/Unity 和各種游戲開發(fā)技巧,以及 各種資源分享 (網(wǎng)站、

    2024年02月11日
    瀏覽(29)
  • C語言:選擇+編程(每日一練Day16)

    C語言:選擇+編程(每日一練Day16)

    目錄 選擇題: 題一: 題二: 題三: 題四: 題五: 編程題: 題一:數(shù)對 思路一: 題二:截取字符串 思路一: 本人實力有限可能對一些地方解釋和理解的不夠清晰,可以自己嘗試讀代碼,或者評論區(qū)指出錯誤,望海涵! 感謝大佬們的一鍵三連!?感謝大佬們的一鍵三連!

    2024年02月09日
    瀏覽(22)
  • 算法打卡|Day4 鏈表part02

    今日任務(wù) ● 24. 兩兩交換鏈表中的節(jié)點 ● 19.刪除鏈表的倒數(shù)第N個節(jié)點 ● 面試題 02.07. 鏈表相交 ● 142.環(huán)形鏈表II 目錄 Day4 鏈表part02 Problem: 24. 兩兩交換鏈表中的節(jié)點 思路 解題方法 Code Code Problem: 19. 刪除鏈表的倒數(shù)第 N 個結(jié)點 思路 解題方法 Code Problem: 面試題 02.07. 鏈表相交

    2024年02月08日
    瀏覽(15)
  • 【每日一題Day245】面試題 16.19. 水域大小 | dfs

    你有一個用于表示一片土地的整數(shù)矩陣 land ,該矩陣中每個點的值代表對應(yīng)地點的海拔高度。若值為0則表示水域。由垂直、水平或?qū)沁B接的水域為池塘。池塘的大小是指相連接的水域的個數(shù)。編寫一個方法來計算矩陣中所有池塘的大小,返回值需要從小到大排序。 dfs感染

    2024年02月10日
    瀏覽(23)
  • 算法打卡|Day5 哈希表part01

    算法打卡|Day5 哈希表part01

    今日任務(wù) ● 哈希表理論基礎(chǔ) ● 242.有效的字母異位詞 ● 349. 兩個數(shù)組的交集 ● 202. 快樂數(shù) ● 1. 兩數(shù)之和 目錄 哈希表 part01 鏈表理論基礎(chǔ) Problem: 242. 有效的字母異位詞 思路 解題方法 Code Problem: 349. 兩個數(shù)組的交集 思路 解題方法 Code Problem: 202. 快樂數(shù) 思路 解題方法 Code P

    2024年02月08日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包