阿里云服务器 个人网站,网站后台改,小型企业网站建设,网络宣传网站建设制作CF521D shop
Problem Solution
首先如果确定了执行的操作#xff0c;执行顺序一定为赋值、加、乘。赋值操作只保留最大的#xff0c;并可以转化为加法。每个数的加法操作按从大到小顺序排序后可以转化为乘法。最后将所有乘法操作从大到小排序选前#x1d45a;个即可。
先…CF521D shop
Problem Solution
首先如果确定了执行的操作执行顺序一定为赋值、加、乘。赋值操作只保留最大的并可以转化为加法。每个数的加法操作按从大到小顺序排序后可以转化为乘法。最后将所有乘法操作从大到小排序选前个即可。
先考虑没有赋值操作此时的想法就是把加法转为乘法加法肯定是先选大的再选小的
那么每个加法的使用前提都是前一个加法已经被使用过了。
因此对于每个加法它的使用前提都是固定的即对于每个加法操作都是把某个值为 x x x的数变为一个值为 y y y的数于是加法就可以转化为乘法了。
有赋值操作也是一样的赋值肯定只会用一次且只用最大的那个。。
考虑两种情况如果根本没用到这个赋值那显然没问题。
如果用到这个赋值那么会发现先赋值和后赋值虽然每次乘的数不一样但是最后的结果是一样的都是加了个前缀和。
这样可以把它看成一个普通加法再转化成乘法。 牛客挑战赛73 E S 老师的礼物
Problem Solution
将 i i i与 a i a_i ai连边 a [ a i ] i 或 a i i a[a_i]i 或 a_ii a[ai]i或aii显然不合法 CF516D Drazil and Morning Exercise
Problem Solution
首先一个结论每个点在树中距离最远的点一定是直径中的一个点。
这样简单处理处 f i f_i fi有一个trick只需要把 f i f_i fi从大到小加入然后two-pointers维护当前是否联通联通即将ans对两个指针位置差取max. CF505E Mr. Kitayuta vs. Bamboos
Problem Solution
显然可以先二分答案。
先抛开每天砍几次的限制二分最大的那棵的高度之后我们可以得知每棵柱子总计要被砍多少长度进而求出总次数先把这个判掉如果总次数之和大于 m k mk mk显然不行。 p p p就砍 p p p因此这样把每个竹子在第几轮操作处理好然后像这样判断注意是从后往前 sum 0;for(LL i m;i 1;i --){sum val[i];if(sum k * (m - i 1)) return 0;} return 1;CF516E Drazil and His Happy Friends
Problem Solution
然后现在 于是问题变成了