[TYVJ1827]『Citric II』一道防AK好题
背景
描述
Lemon手上有一个长度为n的数列,第i个数为xi。
他现在想知道,对于给定的a,b,c,他要找到一个i,使得a*(i+1)*xi^2+(b+1)*i*xi+(c+i)=0成立。
如果有多个i满足,Lemon想要最小的那个i。
Lemon有很多很多组询问需要你回答,多到他自己也不确定有多少组。所以在输入数据中a=b=c=0标志着Lemon的提问的结束。
更加糟糕的是,Lemon为了加大难度,决定对数据进行加密以防止离线算法的出现。
假设你在输入文件中读到的三个数为a0,b0,c0,那么Lemon真正要询问的a=a0+lastans,b=b0+lastans,c=c0+lastans.
lastans的值是你对Lemon的前一个询问的回答。如果这是第一个询问,那么lastans=0
所有的询问都将会按上述方式进行加密,包括标志着询问的结束的那个询问也是这样。
输入格式
输入文件第二行包含n个整数,第i个数表示xi的值。
接下来若干行,每行三个数,表示加密后的a,b,c值(也就是上文所述的a0,b0,c0)
输出格式
同时,标志着询问结束的询问一定是输入文件的最后一行。也就是,输入文件不会有多余的内容。
测试样例1
输入
5
-2 3 1 -5 2
-5 -4 145
-1 -6 -509
-9 -14 40
-3 -13 21
-3 -3 -3
输出
5
4
3
3
备注
带入发现,i=5时,-5*(5+1)*2^2+(-4+1)*5*2+145+5=0,而其他的i均不符合条件。所以答案是5.
第二个询问中,真实的a=-1+5=4,b=-6+5=-1,c=-509+5=-504(lastans是上一个询问的答案的值,也就是5)
经带入发现,i=4时,4*(4+1)*(-5)^2+(-1+1)*4*(-5)+(-504)+4=0,满足条件,而其他的i均不满足条件,所以答案是4.
同理,第三个询问中真实的a=-5,b=-10,c=44.答案i=3
第四个询问中真实的a=0,b=-10,c=24,答案i=3
第五个询问中真实的a=0,b=0,c=0,此时我们发现这是一个标志着结束的询问,这个询问我们无需作出回答。
思路
FROM HZWER
我们考虑最后一行,因为其代表文件结束,所以解密后的a=b=c=0。那么我们可以知道倒数第二行的答案(LastAns=-a=-b=-c)。那么原始式子即转换成一个简单的三元一次式子(只和a,b,c有关),然后这解密后的值又可以由上一行的答案和输入的a0,b0,c0得到,于是就变成了一个只和LastAns有关系的一元一次式子,所以又可以得到了上一行的答案。所以这样一直算回去就好了。
出题人真是丧失
var i,j,l,m,n:longint;k1,k2:int64;x,a,b,c,ans:array[1..500000] of int64;function work1(i:longint):int64; beginexit( (i+1)*sqr(x[i]) ); end;function work2(i:longint):int64; beginexit( x[i]*i ); end;function work3(i:longint):int64; beginexit( i*x[i]+i ); end;beginread(n);for i:=1 to n doread(x[i]);m:=0;while true dobegininc(m);read(a[m],b[m],c[m]);if (a[m]=b[m])and(b[m]=c[m]) then break;end;ans[1]:=0-a[m];l:=1;for i:=m-1 downto 2 dobeginj:=ans[l];inc(l);k1:=a[i]*work1(j)+b[i]*work2(j)+c[i]+work3(j);k2:=work1(j)+work2(j)+1;ans[l]:=(-k1) div k2;end;for i:=m-1 downto 1 dowriteln(ans[i]); end.
View Code
转载于:https://www.cnblogs.com/yangqingli/p/4890207.html
[TYVJ1827]『Citric II』一道防AK好题相关推荐
- [TYVJ 1927] 『Citric II』一道防AK好题 · 模拟
出题人真是丧(gan)心(de)病(piao)狂(liang)! 题面说的各种玄乎各种牛逼然而却毫无卵用 对于最后一组a b c ,因为要加上lastans以后=0,所以明显倒数第二组的解就是ans= ...
- [3.3训练赛]One-Dimensional(矩阵快速幂),Freda的迷宫(无向图强连通分量+并查集),一道防AK好题
文章目录 T1:One-Dimensional title solution code T2:[NOIP模拟赛]Freda的迷宫 title solution code T3:[NOIP模拟赛]一道防 ...
- 数列 COGS1048:[Citric S2] 一道防AK好题
[题目描述] Czy手上有一个长度为n的数列,第i个数为xi. 他现在想知道,对于给定的a,b,c,他要找到一个i,使得a*(i+1)*xi2+(b+1)*i*xi+(c+i)=0成立. 如果有多个i ...
- 第一届『Citric杯』NOIP提高组模拟赛 题解
[官方题解]第一届『Citric杯』NOIP提高组模拟赛 题解 第一题 柠檬超市 这题是本次模拟赛的送分题.做法显然. 但是注意此题有一个陷阱: 注意W和C的规模都是10^9,所以如果直接用doubl ...
- 第二届『Citric杯』NOIP提高组模拟赛
一道防AK的好题 不得不吐槽这个题目背景和算法.这就是一脑筋急转弯啊. Code program hard; CONST FileName='hard'; var n,i,tot:longint;x, ...
- 洛谷 2 月月赛 I 『MdOI R4』 (Div2) A ~ D 四题全,也许会有六题,超高质量题解 (Div.1E、F下辈子一定补)【每日亿题2 / 9】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A.P7337 『MdOI R4』Fun B.P7338 『MdOI R4』Color C.P7 ...
- 21南阳理工oj新生赛Round#5--这是一道防ak题
题目如下: 题目类型:数学类,思维类. AC代码如下: #include<iostream> #define ll long long using namespace std; int m ...
- 『中秋赏月』程序员用文心大模型带你玩转不一样的中秋
『中秋赏月』文心大模型带你玩转不一样的中秋 中秋 文心大模型使用 安装wenxin_api 利用ERNIE-ViLG文生图模型生成图片 下载生成的图片 使用ERNIE 3.0模型,生成有关中秋的佳句 ...
- java安装 1723_2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段...
2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段 在一个人孤身奋斗了将近半个学期以后,终于迎来的我们的第一次团队协作共同编码,也就是,我们的第一个结对编程练 ...
最新文章
- 后退到的页面为什么没有执行js_为什么中层没有执行力?
- matlab共轭梯度法_优化算法之牛顿法
- android推送如何推送不在线设备,推送系统从0到1(四):消息如何到达用户设备...
- webpack打包js文件
- python海龟绘图_Python教学案例|海龟绘图三例
- [Unity脚本运行时更新]C#7.2新特性
- Scrapy框架(持久化,去重,深度控制,cookie)
- 个人开源项目之快速检索算法
- 站内消息弹出层简单实现
- iPhone路径大全
- QCA9886降低功耗指令
- 第八章 项目质量管理
- MATLAB符号运算
- 手机app注册登录服务器客户端流程图
- EXCEL制作统计图表
- 多核cpu应用场景_1分钟搞懂 CPU该买多核还是高主频?
- CPAN | 配置阿里源
- 【JZOJ5234】外星人的路径
- 医院绩效考核病案首页上报系统,智能上报轻松无忧
- library sort(图书馆排序)