不是解的解【牛客tracker 每日一题】
不是解的解时间限制1秒 空间限制256M网页链接牛客tracker牛客tracker 每日一题完成每日打卡即可获得牛币。获得相应数量的牛币能在【牛币兑换中心】换取相应奖品助力每日有题做丰盈牛币日益多题目描述有n nn个一元三次方程。我们用一个三元组( a i , b i , c i ) (a_i,b_i,c_i)(ai,bi,ci)描述方程x 3 a i x 2 b i x c i 0 x^3a_ix^2b_ixc_i0x3aix2bixci0。现在你需要求出任意一个整数x xx使得x xx不是任何一个方程的解即对所有i ii均有x 3 a i x 2 b i x c i ≠ 0 x_3a_ix^2b_ixc_i≠0x3aix2bixci0。你需要保证输出的x xx在[ 0 , 10 6 ] [0,10^6][0,106]之内。可以证明一定存在这样的x xx。输入描述第一行有一个正整数n 1 ≦ n ≦ 2 × 10 5 n1≦n≦2×10^5n1≦n≦2×105表示方程的数量。接下来n nn行每行有三个整数a i , b i , c i − 10 6 ≤ a i ≤ 10 6 − 10 12 ≤ b i ≤ 10 12 − 10 18 ≤ c i ≤ 10 18 a_i,b_i,c_i−10^6≤a_i≤10^6−10^{12}≤b_i≤10^{12}−10^{18}≤c_i≤10^{18}ai,bi,ci−106≤ai≤106−1012≤bi≤1012−1018≤ci≤1018描述一个方程的参数。输出描述输出一行一个整数x xx表示任意一个不存在一个方程的解中包含x xx的值。如果存在多个解决方案您可以输出任意一个系统会自动判定是否正确。注意自测运行功能可能因此返回错误结果请自行检查答案正确性。示例1输入3 0 0 0 -3 3 -1 -6 11 -6输出4解题思路本题核心是随机化算法 秦九韶算法高效找到合法整数解。题目保证[ 0 , 10 6 ] [0,10^6][0,106]内一定存在答案且n nn个三次方程最多仅有3 n 3n3n个整数解远小于可选范围的大小随机选取命中非法解的概率极低。我们使用随机数生成器在范围内随机生成整数x xx通过秦九韶算法快速计算多项式x 3 a i x 2 b i x c i x^3a_ix^2b_ixc_ix3aix2bixci的值避免大数运算溢出逐一遍历所有方程验证x xx是否为非法解。一旦找到满足条件的x xx直接输出算法期望尝试次数极少时间复杂度极低完美适配n ≤ 2 × 10 5 n≤2×10^5n≤2×105的大数据规模。总结核心逻辑利用可选范围远大于非法解数量的特性通过随机化快速找到合法答案。关键操作随机数生成、秦九韶算法优化多项式求值、快速合法性校验。效率保障随机化算法期望复杂度接近O ( n ) O(n)O(n)无冗余计算轻松处理题目约束。代码内容#includebits/stdc.husingnamespacestd;#defineendl\ntypedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvvt;typedefpairll,llpll;constll N1e310;constll INF1e18;constll M1e610;constll mod1e97;mt19937rr(chrono::steady_clock::now().time_since_epoch().count());uniform_int_distributionlldd(0,1000000);ll n;ll a[202020];ll b[202020];ll c[202020];boolC(ll x){for(ll i0;in;i)if(c[i]x*(b[i]x*(a[i]x))0)returnfalse;returntrue;}voidS(){cinn;for(ll i0;in;i){cina[i]b[i]c[i];}ll r2dd(rr);while(!C(r2))r2dd(rr);coutr2;}intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);S();}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2601273.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!