CF竞赛题目讲解_CF1728E(初等数论)
2022-10-25 15:47 作者:Clayton_Zhou | 我要投稿
AC代码
https://codeforces.com/contest/1728/submission/177827161
题意:
第i道菜有两个值ai和bi,是添加红胡椒和黑胡椒后分别增加的味道。Monocarp不会在任何菜中同时添加辣椒,
不会多次添加辣椒,也不会在没有添加辣椒的情况下留下任何菜。
第j家商店,一包红辣椒可以添加xj份,一包黑辣椒可以添加yj份 。
Monocarp只去一家商店, 购买x个红辣椒包和y个黑辣椒包,那么x和y应该是非负数,x*xj+y*yj=n。
对于每个商店,在Monocarp只在这家商店购买胡椒包并将胡椒添加到菜肴中后,
确定n个菜肴的最大增加味道。如果无法以上述方式购买 ,请打印-1。
题解:
初等数论
首先求[1,2...n]中每个整数的约数,包括其本身。
将a[i]-b[i]从大到小排序,这样 sum + pre[i] = a[1...i]+b[i+1...n]
a[i]较大值在前面, b[i]较大值在后面,在这里都可以取到
循环查询 x*xj,如果n-x*xj是yj的倍数,则记录下当前n个菜肴的最大增加味道