ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Training 1.1

2022-01-01 21:00:11  阅读:155  来源: 互联网

标签:Training 1.1 ai 十位 一位 跑步 考虑 dp


学习内容:最短路负环处理,dp与FFT刷题

1.负环(P3385)

spfa判负环,若有一个点的入队次数>=n则说明有负环。

2.守望者的逃离(P1095)

考虑到以时间为状态转移,但魔力和跑步同时算比较麻烦,于是可以先算出全用魔力的策略,再迭代一次计算加上跑步的情况。

实际上通过计算我们可以知道在这道题中魔法是要优于跑步的,但问题就在于临近结尾的时候,跑步可能会优于魔法,于是采用再迭代一次来实现。

3.Interesting Function(cf1538F)

这道题是一道很好的数位思维题。实际上对于每个整数,每一位都是一个状态,当改变某一位是,这个位的状态发生改变。回到本题,当一个数加1时,末位的状态一定会发生改变,而倒数第二位的状态则是每当末位进位时改变,那么我们开始考虑末位进位的规律,即遇到9时会进位,在第一次加到个位为9后,之后变为个位变10次,十位变1次,同理可类推到前面的每一位。

那么本题所求即为各位数变化的次数之和。显然,最后一位变化了r-l次,那么十位呢?我们先前提到,从个位第一次遇到9后,每10次就会变化一次,这样的确可以计算出十位,但十位何时会变到9就不方便计算,不利于迭代。

换个思路来想,刚才我们是从什么时候会变来考虑(从原因考虑),那么如果我们从结果考虑,某一位最后一定会成为r中的某一位。而对于某一位来说,它加1只会影响其与其之前的部分,并不会影响后面的位,那么我们可以先不考虑后面的位,让这个某一位成为最后一位,显然,此时情况与个位的情况是一样的,为r'-l',其中r'和l'为以该位为最后一位的r和l。

那么这道题的思路就很明显了,每次r和l除以十,变为r'和l',循环求解。

做数位题要摆脱整数的固有思维,但又要适当利用整数的性质。

4.Number of Pairs(cf1538C)

显然要先把数组排序。题中要求l<=ai+aj<=r的对数,即求ai+aj<=r的对数和ai+aj<=l-1的对数。

对于每个ai来说,可以二分找出第一个大于等于r-ai的值,从而求解。

对于有序的数组,二分要优先考虑。

另外,本题还给我们的一些启示就是对于找有多少对满足题意的题,有时要特判的包括ai与ai自己组成一对,针对每个ai计算后要总的ans/2等等。

5.Buying Hay S(P2918)

问题的难点就在于要>=h,这就使得我们无法确定我们要求的答案是dp[?]。考虑到数据范围为<=5000,那么我们只需要枚举j从H到H+5000就可以了。

注意在处理这种要重量要恰好等于某个值的时候,要把dp[重量]设置为INT_MAX,dp[0]=0;

在遇到没有见过的题时,正解不一定是新算法,可能只是加了一些奇奇怪怪的思路~

标签:Training,1.1,ai,十位,一位,跑步,考虑,dp
来源: https://blog.csdn.net/ando_ando/article/details/122268208

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有