刷题统计【牛客tracker 每日一题】
刷题统计时间限制1秒 空间限制256M网页链接牛客tracker牛客tracker 每日一题完成每日打卡即可获得牛币。获得相应数量的牛币能在【牛币兑换中心】换取相应奖品助力每日有题做丰盈牛币日益多题目描述牛客推出了新手入门、算法入门、算法进阶三部曲题单。设•n nn— 至少刷过任意一个题单的人数•a aa— 刷过新手入门的人数•b bb— 刷过算法入门的人数•c cc— 刷过算法进阶的人数•d dd— 恰好刷过其中任意两个题单的总人数。数据保证存在唯一非负整数解请计算同时刷过全部三部曲的人数。输入描述第一行输入整数T ( 1 ≦ T ≦ 10 3 ) T(1≦T≦10^3)T(1≦T≦103)— 测试用例数量。接下来T TT行每行五个整数n , a , b , c , d ( 1 ≦ n , a , b , c , d ≦ 10 9 ) n,a,b,c,d(1≦n,a,b,c,d≦10^9)n,a,b,c,d(1≦n,a,b,c,d≦109)。输出描述对于每个用例输出一行一个整数表示同时刷过全部三部曲的人数。示例1输入1 28 16 16 22 12输出7解题思路本题核心是通过容斥原理推导同时刷过三个题单的人数根据容斥计数规则至少刷过一个题单的人数n nn 刷过各题单人数之和( a b c ) (abc)(abc)- 恰好刷两个题单的人数d − 2 × d - 2×d−2×同时刷三个题单的人数x xx因同时刷三个的人在a / b / c a/b/ca/b/c中各被统计一次共3 33次需减去重复的2 22次恰好刷两个的人被统计2 22次需减1 11次。对公式变形可得x ( a b c − n − d ) / 2 x(abc-n-d)/2x(abc−n−d)/2。该方法仅需一次数学计算时间复杂度O ( 1 ) O(1)O(1)适配T ≤ 10 3 T≤10^3T≤103、数值≤ 10 9 ≤10^9≤109的规模利用容斥原理的计数逻辑精准推导出题目保证的唯一非负整数解。总结核心逻辑基于容斥原理推导公式x ( a b c − n − d ) / 2 x(abc-n-d)/2x(abc−n−d)/2计算同时刷三个题单的人数。关键操作直接代入输入的n , a , b , c , d n,a,b,c,dn,a,b,c,d到公式中计算无需额外复杂逻辑。效率保障单次计算仅需常数时间适配测试用例数量和数值规模要求。代码内容#includebits/stdc.husingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvt;typedefpairll,llpll;constll N5e510;constll mod1e47;constll INF1e18;intmain(){ll T;cinT;while(T--){ll n,a,b,c,d;cinnabcd;cout(abc-n-d)/2endl;}return0;}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2422381.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!