当前位置:网站首页>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);
}
}边栏推荐
- Why use weak pointers for delegation- Why use weak pointer for delegation?
- The interface of grafana tool displays an error, incluxdb error
- 3: Chapter 1: understanding JVM specification 2: JVM specification, introduction;
- Research notes I software engineering and calculation volume II (Chapter 1-7)
- White hat talks about web security after reading 2
- Rasa 3.x 学习系列-Rasa X 社区版(免费版) 更改
- Naoqi robot summary 26
- VS2010编写动态链接库DLL和单元测试,转让DLL测试的正确性
- 证明 poj 1014 模优化修剪,部分递归 有错误
- 做自媒体影视短视频剪辑号,在哪儿下载素材?
猜你喜欢

Fiddler Everywhere 3.2.1 Crack

698. Divided into k equal subsets ●●

2: Chapter 1: understanding JVM specification 1: introduction to JVM;

MySQL delete uniqueness constraint unique

GFS分布式文件系统

Spire. PDF for NET 8.7.2

Bao Yan notebook IV software engineering and calculation volume II (Chapter 8-12)

开关电源Buck电路CCM及DCM工作模式

Initial experience | purchase and activate typora software

Practice of concurrent search
随机推荐
(4)UART應用設計及仿真驗證2 —— TX模塊設計(無狀態機)
GFS Distributed File System
From the perspective of quantitative genetics, why do you get the bride price when you get married
yate. conf
Russian Foreign Ministry: Japan and South Korea's participation in the NATO summit affects security and stability in Asia
In C#, why can't I modify the member of a value type instance in a foreach loop?
如何让同步/刷新的图标(el-icon-refresh)旋转起来
Research notes I software engineering and calculation volume II (Chapter 1-7)
【EF Core】EF Core与C# 数据类型映射关系
Rasa 3.x 学习系列-Rasa X 社区版(免费版) 更改
orgchart. JS organization chart, presenting structural data in an elegant way
Technical specifications and model selection guidelines for TVs tubes and ESD tubes - recommended by jialichuang
2022.6.20-6.26 AI行业周刊(第103期):新的小生命
TS type declaration
Practice of concurrent search
Design and implementation of secsha system
Go language implementation principle -- map implementation principle
Go language introduction detailed tutorial (I): go language in the era
Scala concurrent programming (II) akka
14 MySQL-视图