CodeForces#311 A. Ilya and Diplomas

来源:互联网 发布:灵云网络电视机顶盒 编辑:程序博客网 时间:2024/05/16 13:47

题意:

给出3个区间 [L1,R1],[L2,R2],,[L3,R3] 和正整数n,要求在3个区间内各选一个正整数,使得选出来的数之和为n。如果有多种选法,取从第一个区间内选出的数最大的选法。如果仍有多种选法,取从第二个区间中选出的数最大的选法,如果仍有多种选法,取从第三个区间内选出的数最大的选法。题目保证至少存在一种选法。


解题思路:

要使第一个区间内选出的数尽量大,意思就是尽量让后两个区间选出的数尽量小,最小可以取到区间下界,可以用贪心算法。于是第一个区间选的数ans1 = min(R1,n - L2 - L3)。同理分析,ans2 = min(R2,n - ans1 - L3)。ans3直接计算,等于n - ans1 - ans2。


#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n,s[4],b[4],ans[4];int main(){    scanf("%d",&n);    for(int i=1;i<=3;i++)scanf("%d %d",&s[i],&b[i]);    ans[1]=min(b[1],n-s[2]-s[3]);    n-=ans[1];    ans[2]=min(b[2],n-s[3]);    n-=ans[2];    ans[3]=n;    printf("%d %d %d",ans[1],ans[2],ans[3]);    return 0;}




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 脚抽筋后走路疼怎么办 家里的床头朝西怎么办 厕所门对着床尾怎么办 镜子对着入户门怎么办 厕所正对卧室门怎么办 厕所门对着卧室怎么办 卧室正对厕所门怎么办 大门对着厕所门怎么办 大门正对厕所墙怎么办 两家住户门对门怎么办 主门对着卫生间怎么办 8岁门牙摔断了怎么办 小孩的门牙断了怎么办 孩子牙齿摔断了怎么办 门牙撞掉了一半怎么办 门牙从根断了了怎么办 牙竖着断了一半怎么办 大门牙掉了一块怎么办 牙从牙根处坏了怎么办 前门牙牙根断了怎么办 牙齿从牙根断了怎么办 门牙坏了一个洞怎么办 35岁门牙牙缝大怎么办 花从根部断了怎么办 宝宝乳牙摔断了怎么办 门牙掉了半颗怎么办 小孩牙齿撞松了怎么办 4岁宝宝牙摔松了怎么办 大人牙齿摔松了怎么办 宝宝牙齿撞松了怎么办 宝宝牙齿摔裂了怎么办 当门牙断了一半怎么办 门牙只剩牙根了怎么办 宝宝门牙磕断了怎么办 大门牙断了一点怎么办 一边脸大一边脸小怎么办 脸一面大一面小怎么办 右脸比左脸大怎么办 门牙内长了牙齿怎么办 门牙有缝怎么办矫正要多少钱 门牙磕了一小块怎么办