[考试反思]1026csp-s模拟测试89:不公

[考试反思]1026csp-s模拟测试89:不公

稍垃圾。因为T1没A。

赶巧前一段时间学了杜教筛,结果因为教练放错题。

然后考场上疯狂yy,最后水到了一个AC。

其实的确挺不公平的,不少人也没学呢。

如果只算T1和T3的分数的话,那70分就是个垃圾。

还有。。。。

[考试反思]1026csp-s模拟测试89:不公

又一次盖掉自己70分。。。

想剪枝结果打错了。

在没有用堆跑Dijk时因为队列里的元素无序所以一个点可能被扩展多次,而有时候后扩展的状态更优,所以不能打标记continue。

其余其实还好,发挥的凑和吧。其实能yy出T2还是挺不容易的。

但是当然在正经考试里不会出现你学过别人没学过的知识点,所以不必窃喜。。。

 

T1:666

最优决策的形式一定是复制并连粘几遍,再删除几次,循环。

也就是用n的费用×n,用1的费用-1。

跑最短路,因为边权不大所以没必要开堆。

打表发现,乘的形式只有2357是有效的,所以只有5种转移。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 using namespace std;
 5 int dp[1000001],q[10000005];
 6 #define maxn 1000000
 7 int main(){
 8     memset(dp,30,sizeof dp);
 9     dp[1]=0;q[1]=1;
10     for(int h=1,t=1;h<=t;++h){
11         int a=q[h];
12         if(a*2<=maxn&&dp[a*2]>dp[a]+2)dp[a*2]=dp[a]+2,q[++t]=a*2;
13         if(a*3<=maxn&&dp[a*3]>dp[a]+3)dp[a*3]=dp[a]+3,q[++t]=a*3;
14         if(a*5<=maxn&&dp[a*5]>dp[a]+5)dp[a*5]=dp[a]+5,q[++t]=a*5;
15         if(a*7<=maxn&&dp[a*7]>dp[a]+7)dp[a*7]=dp[a]+7,q[++t]=a*7;
16         if(a&&dp[a-1]>dp[a]+1)dp[a-1]=dp[a]+1,q[++t]=a-1;
17     }
18     int n;scanf("%d",&n);printf("%d\n",dp[n]);
19 }
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案