<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Ls_attack的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Ls_attack</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Ls_attack]]></copyright><item><title><![CDATA[牛客-模拟、枚举、贪心 2022.11.18]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127925618</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127925618</guid><author>Ls_attack</author><pubDate>Fri, 18 Nov 2022 16:46:12 +0800</pubDate><description><![CDATA[从样例可以发现，首先可以假设所有的奶牛都为最高值，然后对于每一对给出的奶牛的区间，在这区间之间编号的奶牛需要高度减去一（区间为左开右开）。经过一番操作之后，即可得到所有奶牛可能的最高值。（当然可能重复出现的区间，对于重复出现的区间不需要进行重复操作即可）从高位到低位依次枚举，优先考虑从0变为1，就是说尽可能的让这个数小一点。可以考虑最开始每一位为 0/1，然后到最后是否可以变回 1。贪心排序花和道路所需时间即可。]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举与贪心 2022.11.16]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127893966</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127893966</guid><author>Ls_attack</author><pubDate>Wed, 16 Nov 2022 22:07:17 +0800</pubDate><description><![CDATA[分成三类，稳定值增加，不变，减少。考虑从后往前遍历减少的情况，可以发现最后一个要符号条件，需要当前值大于消耗值，而恢复值是不需要看的，因为消耗完就结束了，所以恢复值不是那么重要。看到异或操作其实第一反应就是将数据改写成二进制形式，之后再观察样例的输出结果，可以发现如果当前二进制位零的个数超过了数据个数的一半，就讲结果这一位二进制写为零，否则写为一（因为需要多组可行解的情况下，数值尽可能小）（零的个数正好为一半时可以为零，也可以为一，但是为了数值尽可能小，所以选择为零）但是直接遍历只能过60%，还需要优化。]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举、贪心 2022.11.15]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127876169</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127876169</guid><author>Ls_attack</author><pubDate>Tue, 15 Nov 2022 23:30:20 +0800</pubDate><description><![CDATA[之后对于每个名字的查询，从名字的第一个字母出现的第一个位置开始，二分查找之后每个字母的位置是否大于当前的位置，如果大于，更新当前位置，直至名字数组结束，说明存在子序列，否则不存在。如果二者最高位相同，则比较下一位，直到出现不同的二进制位置，那么从这一位置开始往后到二进制的最低位，存在全为一的最大值，之前的高位置都相同，异或结果为0。对于药剂的数值，按照从大到小排序，对于奶牛的区间，按照区间最小值从大到小排序，之后遍历奶牛，对于每头奶牛，遍历药剂看是否存在符合条件的药剂，记录结果即可。模拟遍历01串即可。]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举、贪心 2022.11.14]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127849376</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127849376</guid><author>Ls_attack</author><pubDate>Mon, 14 Nov 2022 16:15:44 +0800</pubDate><description><![CDATA[第一个点无雷，第二个点有雷；这里由于已经假设了第一个点和第二个点的数值（有雷为1，无雷为0），那么可以根据第二列的第二个值推导出第一行第三个点的情况，第四个点同理，......最后还需要进行验证，那么只需要将最后两个值和第二列的最后一个数值进行判定是否相等，如果相等说明这种放置地雷的情况是一种结果，否则不是。查看题解后，思路无误，只是可以在每次移动的时候也进行礼物类型的记录，即构建一个结构体，存储所有的礼物种类和位置，对于结构体按照位置从小到大排序，之后遍历结构体，记录当前的礼物种类类型。]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举、贪心 2022.11.12]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127826983</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127826983</guid><author>Ls_attack</author><pubDate>Sat, 12 Nov 2022 23:17:46 +0800</pubDate><description><![CDATA[第一遍写的思路是：统计连续的1和0的个数，1的个数为正数记录，0的个数为负数记录，之后遍历连续数组每个位置，以当前位置为起点，寻找最后的端点。但是总是超时，于是考虑能否二分，但是二分其实判定的函数时间复杂度也是O(n).之后再想，其实不需要做一个连续化，直接在原本数组上进行滑动窗口操作，即可判定。对数组数据按照从小打大排序，前缀和记录相邻数据之间的差值，经过k次操作如果需要相同数据出现的次数最多，那么肯定是变化为数组中已经存在的数字，以当前数组位置作为左端点，二分求解右端点的位置。]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举与贪心 2022.11.11]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127810130</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127810130</guid><author>Ls_attack</author><pubDate>Fri, 11 Nov 2022 17:32:24 +0800</pubDate><description><![CDATA[二维前缀和，如果k*k区域的前缀和为0，说明当前区域一个建筑都没有，不会影响，否则会影响。记录所有有货物xu qi。]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举与贪心 2022.11.02]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127660424</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127660424</guid><author>Ls_attack</author><pubDate>Wed, 02 Nov 2022 22:31:29 +0800</pubDate><description><![CDATA[枚举每个点，之后记录以这个点为末尾的所有区间的异或和，然后枚举所有以这个点为起点的区间的值，当存在二者数值相等时，说明异或和为零，此时结果数目+1即可。首先可利用前缀和求取区间的异或和，然后，我就写了一个四重循环然后TLE了。一年前不会写这道题，一年后还是不会，属于是属于是了。]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举与贪心 2022.10.31]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127621777</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127621777</guid><author>Ls_attack</author><pubDate>Mon, 31 Oct 2022 19:40:12 +0800</pubDate><description><![CDATA[当我们希望对原数组的某一个区间[l,r]施加一个增量inc时，差分数组d对应的变化是：d[l]增加inc，d[r+1]减少inc，并且这种操作是可以叠加的。这道题目中，每次增量的数目为1。之后对于每个位置的不同货物的种数，进行一个前缀和，即可得到每个位置的不同货物的数目。当我们需要对原数组的不同区间施加不同的增量，我们只要按规则修改差分数组即可。（新学了差分数组这一数据结构，初次接触，之后好好复习）]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举、贪心 2022.10.27]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127560607</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127560607</guid><author>Ls_attack</author><pubDate>Thu, 27 Oct 2022 20:58:39 +0800</pubDate><description><![CDATA[【代码】牛客-模拟、枚举、贪心 2022.10.27。]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举与贪心 2022.10.25]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127522713</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127522713</guid><author>Ls_attack</author><pubDate>Tue, 25 Oct 2022 21:55:25 +0800</pubDate><description><![CDATA[根据这个关注点可以知道，这里我们不用从后先前逐个进行四舍五入。a.i-1位的值为9，那么将该位置置0，向前进1；如果首位为9加1那么先输出一个1在输出数字。1、若i 的值是四，那么可以继续五入并继续检查i-1是否为4，如果为4那么继续进行五入。2、i的值为小数点，那么将此位置为结束位。同时查看i-1位即小数点前一位的值。先mark，还在求解中，感觉这周可能都调试不出，提高组水平的题。b.i-1的值不为9，该位加1.让他的成绩可以在小数点后的。]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举与贪心 2022.10.24]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127489480</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127489480</guid><author>Ls_attack</author><pubDate>Mon, 24 Oct 2022 11:47:53 +0800</pubDate><description><![CDATA[直接贪心，直接算出平均的水温,再分类讨论一下即可。假如平均的水温比n个杯子里的都小,那么肯定大水缸是降温的.假如平均的水温比最大的要大,说明大水缸是升温的,不然我的大水缸的温度夹在max和min中间,那么一定是不能调节的。记录每行，每列可以分隔的同桌人数，然后按照行号，列号从小到大的顺序输出前k行，前l列最大的数值即可。如果是正数，直接将其放到到第一个进行删除是最优的，如果是负数，将其在当前位置删除则是最优的。]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举与贪心 2022.10.23]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127475909</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127475909</guid><author>Ls_attack</author><pubDate>Sun, 23 Oct 2022 16:23:00 +0800</pubDate><description><![CDATA[先对数组按照从小打到排序，第一次，先让第一个数和第二个数大小相等，即相加的n-1个数只除了第二个数字，第二次，让第一第二个数和第三个数大小相等，即相加的n-1个数只除了第三个数字，之后每次相加同理，相加n-1次，即可得到答案，最后的结果就是最大的数字加上每次两个数字的差值，做一个前缀和相加。简单模拟输出，一眼可知，凳子消除最贵的商品，所以比较凳子和购物车两者的最小值，即可以得到最终的结果。一开始的想法是从前往后相加相同的数字，然后删除，但是会导致之后的数字也相同，导致并不是最少的次数。]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举与贪心 2022.10.22]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127467104</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127467104</guid><author>Ls_attack</author><pubDate>Sat, 22 Oct 2022 20:50:36 +0800</pubDate><description><![CDATA[由于全是小写字符串，使用一个数组，记录每个字母存在的最后一个位置。从最大字母开始遍历到最小字符，这一过程中遍历原字符串，输出其中的当前最大字符，即可得到最终的结果。昨天写的题目较为简单，和今天写的一起做一个总结。构建哈夫曼树，哈夫曼编码。]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举与贪心 2022.10.20]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127426936</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127426936</guid><author>Ls_attack</author><pubDate>Thu, 20 Oct 2022 14:56:02 +0800</pubDate><description><![CDATA[可以看到，当将第一行的答案放在第一列的时候，剩下的就是求的答题卡规模为(n - 1) * (n - 1) 的所有方案,当第一行的答案放在第二列的时候，剩下的就是求答题卡规模为(n - 2) * (n - 2) 的所有方案（因为此时根据答案横竖相同要求的对称性，确定了一行的同时也就确定了一列，所以此时有两行和两列都不能进行选择），同理将第一行的答案放在第三列也是一样的。所以横答题卡某一行的答案确定之后，对应的竖答题卡的某一列的答案也就确定了，并且交于这两个答案的行和列也已经确定了。在棋盘规模为 的情况下，]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举与贪心 2022.10.19]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127414394</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127414394</guid><author>Ls_attack</author><pubDate>Wed, 19 Oct 2022 19:44:24 +0800</pubDate><description><![CDATA[递推 用res[i]表示iloveyou匹配了前i个的字符的子序列数，当遇到第i个字符，则之前匹配了前i-1个的字符的子序列都可以变为匹配了前i个的字符的子序列，即res[i]=res[i]+res[i-1]递推+高精度（所以python）]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举与贪心 2022.10.19]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127414240</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127414240</guid><author>Ls_attack</author><pubDate>Wed, 19 Oct 2022 19:34:13 +0800</pubDate><description><![CDATA[用res[i]表示iloveyou匹配了前i个的字符的子序列数，当遇到第i个字符，则之前匹配了前i-1个的字符的子序列都可以变为匹配了前i个的字符的子序列，即res[i]=res[i]+res[i-1]递推问题，但高精度（因为太麻烦所以python）]]></description><category></category></item><item><title><![CDATA[牛客-模拟、枚举与贪心-2022.10.18]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127397610</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127397610</guid><author>Ls_attack</author><pubDate>Tue, 18 Oct 2022 21:55:00 +0800</pubDate><description><![CDATA[输出第一个最小的非零的数字，如果存在零，只输出一个，然后输出零个数的一半，之后继续从小到大输出即可。昨天和今天写的题都比较简单，本来都不想挂，但是还是觉得浅浅记录一下。]]></description><category></category></item><item><title><![CDATA[牛客-栈、队列和stl 2022.10.16]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127349171</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127349171</guid><author>Ls_attack</author><pubDate>Sun, 16 Oct 2022 23:24:28 +0800</pubDate><description><![CDATA[统计最长的，连续的红色球数目。给定的数据是每个红色球和蓝色球和位置，其中一个位置上可以有多个红色球或者蓝色球。利用map能够自动排序的特性，进行遍历，统计当前区间内红色球的数目，当遇到蓝色球时，直接清零即可。]]></description><category></category></item><item><title><![CDATA[牛客-栈、队列和stl-2022.10.14]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127316274</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127316274</guid><author>Ls_attack</author><pubDate>Fri, 14 Oct 2022 11:00:22 +0800</pubDate><description><![CDATA[用数组模拟队列，用unordered_map记录每个名字的同学的位置，之后判断当前队列的第一个名字和出队的人的名字是否相同，如果相同则将头指针下标移动到下一个，符合排队规则的人数+1，否则更新当前位置之后的所有人的名字的位置（更新unordered_map）先记录小于最大数值的所有的质数，然后对于这些质数进行2次方，3次方，4次方求和的三重循环遍历，考虑到最大的质数数据范围小于一万，数据范围为10^3，所以直接遍历记录相加求和的结果即可。]]></description><category></category></item><item><title><![CDATA[【无标题】]]></title><link>https://blog.youkuaiyun.com/Ls_attack/article/details/127310631</link><guid>https://blog.youkuaiyun.com/Ls_attack/article/details/127310631</guid><author>Ls_attack</author><pubDate>Thu, 13 Oct 2022 22:10:18 +0800</pubDate><description><![CDATA[利用栈的特点，每次对于'o'进行合并后重新入栈，对于'O'进行消除出栈。最后逆序记录栈中元素即可。简单的栈的性质的应用。]]></description><category></category></item></channel></rss>