当前位置:网站首页>20220703 week race: number of people who know the secret - dynamic rules (problem solution)
20220703 week race: number of people who know the secret - dynamic rules (problem solution)
2022-07-05 23:41:00 【A Xuan is about to graduate~】
Topic link : Power button https://leetcode.cn/problems/number-of-people-aware-of-a-secret/
Ideas :
At first, the idea was to have rabbits . The current number of people who know the secret = The number of people who knew the secret the day before +(i-delay) The number of people -(i-forget) The number of people . Later, in the process of derivation, it was found that ,(i-delay) People who , The first i The sky may not be still , It may have been forgotten .(i-forget) The number of people is also not allowed , Maybe (i-forget ——i) Have forgotten .
Here's the thing : The formula should be : Number of people in the day = Number of people in the previous day -( The first i Days forget the number )+ Number of new people . that The first i Days forget the number and Number of new people How should I ask . In fact, just add an array get The array represents the number of new messages .
Let's take an example .
The first 1 The number of people receiving news from Tianxin is 1, namely get[1] = 1.
The first 2 The number of people receiving news from Tianxin is 0( Because it will take two days , To have the ability to publicize information ), namely get[2] = 0.
The first 3 The number of people receiving news from Tianxin is get[3] = get[3-2] = get[1] = 1.
The first 4 The number of people receiving news from Tianxin is get[4] = get[4-2]+get[4-3] = get[2] +get[1] = 1.( Because the people who got the propaganda news on the first day haven't forgotten , So you can still promote the news . We need to pay attention here . People in the past can't spread the news after they forget it .)
therefore : At present, the number of new people with information is :
for(int k = i-forgrt+1; k <= i-delay; k++) {
get[i] += get[k]
}
therefore : The first 5 The number of people receiving news from Tianxin is :get[5] = get[5-2] + get[5-3] = get[3]+get[2] = 1.( Because the first day of new information people , By the fifth day, he had no ability to spread news , And the first 4 Tianxin gets the news , It takes until the sixth day to have the ability to spread information .)
Let's look at our previous formula : Number of people in the day = Number of people in the previous day -( The first i Days forget the number )+ Number of new people . We already know the number of new arrivals , So the first i How can I ask for the number of people I forget , Actually, the first one is i The number of people forgotten by heaven is get[i-forget]. So this problem has to be solved .
Code :
class Solution {
public int peopleAwareOfSecret(int n, int delay, int forget) {
long init = 0;
long[] get = new long[n+1];
long all = 0;
init = 0;
get[1] = 1;
all = 1;
for(int i = 2; i<=n; i++) {
if(i-forget >= 1) {
all = all+1000000007;
init = (all - get[i-forget])%1000000007;
// System.out.println("init"+i+":"+init[i]);
} else {
init = all;
// System.out.println("init"+i+":"+init[i]);
}
for(int k = i-forget+1;k<=(i-delay);k++) {
if(k >= 1) {
get[i] +=get[k];
get[i] %= 1000000007;
// System.out.println("get"+i+":"+get[i]);
}
}
all = (init + get[i]) % 1000000007;
// System.out.println(i+":"+all[i]);
}
return (int)(all % 1000000007);
}
}
边栏推荐
- Bao Yan notebook IV software engineering and calculation volume II (Chapter 8-12)
- Bao Yan notes II software engineering and calculation volume II (Chapter 13-16)
- Dynamic memory management (malloc/calloc/realloc)
- LeetCode——Add Binary
- Summary of binary tree recursive routines
- 无刷驱动设计——浅谈MOS驱动电路
- 424. The longest repeated character after replacement ●●
- Idea rundashboard window configuration
- (4)UART應用設計及仿真驗證2 —— TX模塊設計(無狀態機)
- 如何让同步/刷新的图标(el-icon-refresh)旋转起来
猜你喜欢
进击的技术er——自动化
Fiddler Everywhere 3.2.1 Crack
GFS Distributed File System
Dynamic memory management (malloc/calloc/realloc)
Rasa 3. X learning series -rasa x Community Edition (Free Edition) changes
Brushless drive design -- on MOS drive circuit
4 points tell you the advantages of the combination of real-time chat and chat robots
Spire Office 7.5.4 for NET
4点告诉你实时聊天与聊天机器人组合的优势
STM32__ 06 - single channel ADC
随机推荐
帶外和帶內的區別
4点告诉你实时聊天与聊天机器人组合的优势
Switching power supply buck circuit CCM and DCM working mode
Mathematical formula screenshot recognition artifact mathpix unlimited use tutorial
GFS分布式文件系统
Difference between out of band and in band
C# Linq Demo
2022.6.20-6.26 AI industry weekly (issue 103): new little life
Idea connects to MySQL, and it is convenient to paste the URL of the configuration file directly
STM32__06—单通道ADC
20.移植Freetype字体库
Opencvsharp (C openCV) shape detection and recognition (with source code)
golang代码检查工具
UART Application Design and Simulation Verification 2 - TX Module Design (Stateless machine)
Live tiktok shop 2022 latest gameplay card slot overseas live e-commerce new traffic
Naoqi robot summary 26
Cwaitabletimer timer, used to create timer object access
【经典控制理论】自控实验总结
[original] what is the core of programmer team management?
It is proved that POJ 1014 module is optimized and pruned, and some recursion is wrong