首页 > 编程知识 正文

pythagorean定理,去心邻域例题

时间:2023-05-06 12:28:44 阅读:172848 作者:2324

PID227/[JSOI2007]奶酪提交你的代码查询讨论和问题,查询我的状态,查询最后评分记录质量4试题评分质量40% 16.6 % 16.6 % 50 %合格人数875/3166通过统计最短0

源JSOI2007

主题像奶酪和pizza一样,是小扇形固体。 干酪由工厂生产时共有4种形状,编号1~4,每种圆心角72ordm;144ordm;216ordm;288ordm; 的扇形。 奶酪盒子是圆形的,半径与奶酪半径一致。 也就是说,一块1号奶酪和一块4号奶酪正好可以装在一个箱子里,一块2号奶酪和一块3号奶酪正好可以装在一个箱子里。

你的任务是编写程序,计算给定的奶酪最多能装满几个箱子。

格式输入一行、四个数字,表示1~4号奶酪的数量都在0~100以内

输出格式是表示可以装满几个箱子的数字

样品输入样品输出

原题地址: http://www.rqnoj.cn/problem/227

问题解决:

先稍微换一下主题吧。 有a、b、c、d个体积为1、2、3、4的物体,问能装满多少个体积为5的箱子

然后,要列举所有被拼在一起的表达式并不容易。

5 * 13 *1* 21 * 12 * 22 * 11 * 31 * 21 * 31 *1*1*4(乘号前为数量,乘号后为体积) ) )。

我发现一个箱子最多只能装一个4。 那我们先把4放进d盒子里看看

另外,我发现一个箱子最多只能装一个3。 另外,因为不能和4一起放进去,所以可以把3放在c个箱子里

现在,4和3的价值已经被榨取了,与它们无关(贪婪) )。

然后我们把已经装了4的箱子放入1并考虑是否装满。

答案是肯定的。 因为“对1来说”再也没有比这更划算的生意了。 是“贪婪”。 消费一个,而且不用消费2,就能得到一整箱

假设里面有一个3的箱子。 有两个问题吗? 放那个还是空箱子? 如果放进去的话,放两个1还是放一个2?

放入空箱子猜不划算,而且不管使用“5*1 3*1 1*2 1*1 2*2”的哪个公式,都有将它们的一部分收集到3个体积中的方法。

也就是说,如果用1、2充满5个体积,则首先放入3个体积,再放入剩下的2个体积。 那样的话,最好直接使用已经有3个体积的箱子,不要消耗资源。

下一个问题是加两个1还是加一个2?

当然里面有一个2。 因为一个2能做的事情,两个1就能做。 恰恰相反,情况并非如此。 因为我可以把两个一拆开使用。 那样的话,就让它坐上无用的2吧。

总结起来,以上首先是尽可能地组合1、4,尽可能地组合2、3。

2没有了,已经有3的箱子还在,还有1的话,放2个1。

现在装着一个4或一个3的箱子已经处理完毕。 处理手头剩下的1和2 (如果有的话)。

还是老样子,2没用。 让我先载你一程。 首先,两个,一个一个地放入。 2不够的话,两个、三个一个地放进去。 如果还不够的话,五个一个地放进去。

现在,1、2、3、4被榨取,剩下的5不会聚集~

注意: a-=b/2; b%=2; 不能改变顺序哦.

代码仅供参考:

# includeiostreamusingnamespacestd; int main () {int a、b、c、d; cinabcd; int sum=0; if(a=d ) {sum=d; a-=d; d-=d; (else ) sum=a; d-=a; a-=a; (if ) b=c ) ) {sum=c; b-=c; c-=c; if(a=b/2 ) {sum=b/2; a-=b/2; b%=2; if(b==1a=3) {sum=1; b-=1; a-=3; }sum=a/5; a%=5; (else ) sum=a; b-=2*a; a-=a; }}else{sum=b; c-=b; b-=b; if(a=2*c ) {sum=c; a-=2*c; c-=c; }else{sum=a/2; c-=a/2; a%=2; }sum=a/5; a%=5; }coutsumendl; 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。