当前位置:网站首页>Nine hours, nine people, nine doors problem solving Report
Nine hours, nine people, nine doors problem solving Report
2022-07-05 15:25:00 【wch(】
Nine hours, nine people, nine doors problem solving report
label : Dynamic programming , Number root
source : Cattle from 
Their thinking :
Tree radical
The first is to solve the digital root , We can set our own function to simulate and calculate , You can also use a faster formula .
Digital roots have such properties :x+9 And x Several of them are the same , That is, one number plus 9 After that, the number of its roots remains unchanged . So count a The root of the tree is a Yes 9 The result after taking the mold .
Formula for finding number root :a The number of roots b = (a-1) % 9+1
Proof of the nature of tree roots :
(abcd)% 9 = (a * 1000+b * 100+c * 10+d) % 9
= a%9+b%9+c%9+d%9
=(a+b+c+d)%9
Dynamic programming ( knapsack )
First think about how the state shifts , Set the following array dp[i-1][j], Before presentation i People can open the first j The maximum number of combinations of doors , At this point, we consider adding another person , Just call me this person , How will the maximum number of combinations of each door change after joining me , We can divide the maximum number of combinations into three parts :
There is no one else : dp[i][a[i]]=1;
There are others without me :dp[i][j]=(dp[i][j]+dp[i-1][j])%M;
I have others :dp[i][(j+a[i]-1)%9+1]=(dp[i][(j+a[i]-1)%9+1]+dp[i-1][j])%M
Code implementation :
#include <iostream>
#include <stdio.h>
using namespace std;
int a[100500];
int dp[100500][10];
const int M=998244353;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
a[i]=(a[i]-1)%9+1;
}
for(int i=1;i<=n;i++){
dp[i][a[i]]=1;
for(int j=1;j<=9;j++){
dp[i][j]=(dp[i][j]+dp[i-1][j])%M;
dp[i][(j+a[i]-1)%9+1]=(dp[i][(j+a[i]-1)%9+1]+dp[i-1][j])%M;
}
}
for(int i=1;i<=9;i++){
cout<<dp[n][i]<<" ";
}
return 0;
}
边栏推荐
- Leetcode: Shortest Word Distance II
- How can I quickly check whether there is an error after FreeSurfer runs Recon all—— Core command tail redirection
- Machine learning notes - gray wolf optimization
- easyOCR 字符识别
- First PR notes
- Talking about how dataset and dataloader call when loading data__ getitem__ () function
- 漫画:优秀的程序员具备哪些属性?
- Select sort and bubble sort
- MySQL 巨坑:update 更新慎用影响行数做判断!!!
- Common redis data types and application scenarios
猜你喜欢

当代人的水焦虑:好水究竟在哪里?

How can I quickly check whether there is an error after FreeSurfer runs Recon all—— Core command tail redirection

30岁汇源,要换新主人了

Number protection AXB function! (essence)

超越PaLM!北大碩士提出DiVeRSe,全面刷新NLP推理排行榜

Talk about your understanding of microservices (PHP interview theory question)
![[JVM] operation instruction](/img/f5/85580495474ef58eafbb421338e93f.png)
[JVM] operation instruction

Bugku's Ah Da

ionic cordova项目修改插件

Select sort and bubble sort
随机推荐
Huawei Hubble incarnation hard technology IPO harvester
Can gbase 8A view the location of SQL statement history?
Optional parameters in the for loop
Fr exercise topic - simple question
lv_font_conv离线转换
Thymeleaf uses background custom tool classes to process text
【jvm】运算指令
Severlet learning foundation
Number protection AXB function! (essence)
12 MySQL interview questions that you must chew through to enter Alibaba
swiper. JS to achieve barrage effect
What are CSRF, XSS, SQL injection, DDoS attack and timing attack respectively and how to prevent them (PHP interview theory question)
Talk about your understanding of microservices (PHP interview theory question)
Creation and optimization of MySQL index
Install PHP extension spoole
mapper.xml文件中的注释
Ctfshow web entry command execution
Common redis data types and application scenarios
Cartoon: what are the attributes of a good programmer?
Array sorting num ranking merge in ascending order