正题

题目连接:https://www.luogu.com.cn/problem/P7887?contestId=52021


题目大意

给出三个长度为nnn的序列xi,yi,zix_i,y_i,z_ixi​,yi​,zi​,求一个序列aaa满足0≤ai<109+70\leq a_i<10^9+70≤ai​<109+7且
xi(∑j=1iaj)+yi(∑j=inaj)≡zi(mod109+7)x_i\left(\sum_{j=1}^ia_j\right)+y_i\left(\sum_{j=i}^na_j\right)\equiv z_i(mod\ 10^9+7)xi​(j=1∑i​aj​)+yi​(j=i∑n​aj​)≡zi​(mod 109+7)

如果只有一组解就输出这组解

1≤∑n≤2×105,1≤xi,yi<109+7,0≤zi<109+71\leq \sum n\leq 2\times 10^5,1\leq x_i,y_i<10^9+7,0\leq z_i<10^9+71≤∑n≤2×105,1≤xi​,yi​<109+7,0≤zi​<109+7


解题思路

看到这个同余就感觉这题是个啥方程的做法类的
设si=∑j=1iajs_i=\sum_{j=1}^ia_jsi​=∑j=1i​aj​那么有
xisi+yi(sn−si−1)=zix_is_i+y_i(s_n-s_{i-1})=z_ixi​si​+yi​(sn​−si−1​)=zi​
这样我们就有了si,si−1,sns_i,s_{i-1},s_nsi​,si−1​,sn​之间的关系式,而对于s1s_1s1​我们可以直接得到它和sns_nsn​的关系式
x1s1+y1sn=z1⇒s1=z1−y1snx1x_1s_1+y_1s_n=z_1\Rightarrow s_1=\frac{z_1-y_1s_n}{x_1}x1​s1​+y1​sn​=z1​⇒s1​=x1​z1​−y1​sn​​

这样我们可以设si=Ai+Bisns_i=A_i+B_is_nsi​=Ai​+Bi​sn​,然后用上面的式子化为
si=zi+yisi−1−yisnxis_i=\frac{z_i+y_is_{i-1}-y_is_n}{x_i}si​=xi​zi​+yi​si−1​−yi​sn​​

推出后面的A,BA,BA,B,最后有
sn=An+Bnsn⇒sn=An1−Bns_n=A_n+B_ns_n\Rightarrow s_n=\frac{A_n}{1-B_n}sn​=An​+Bn​sn​⇒sn​=1−Bn​An​​

当然Bn=1B_n=1Bn​=1时需要判断AnA_nAn​是否为000来得到解数。


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=2e5+10,P=1e9+7;
ll T,n,x[N],y[N],z[N],a[N],b[N],s[N];
ll power(ll x,ll b){ll ans=1;x%=P;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans;
};
signed main()
{scanf("%lld",&T);while(T--){scanf("%lld",&n);for(ll i=1;i<=n;i++)scanf("%lld%lld%lld",&x[i],&y[i],&z[i]);ll inv=power(x[1],P-2);a[1]=z[1]*inv%P;b[1]=(P-y[1])*inv%P;for(ll i=2;i<=n;i++){inv=power(x[i],P-2);a[i]=(a[i-1]*y[i]%P+z[i])*inv%P;b[i]=(b[i-1]*y[i]%P-y[i]+P)%P*inv%P;}if(b[n]==1){printf("%lld\n",a[n]?0:P);continue;}s[n]=a[n]*power((1-b[n]+P)%P,P-2)%P;for(ll i=1;i<n;i++)s[i]=(a[i]+b[i]*s[n]%P)%P;puts("1");for(ll i=1;i<=n;i++)printf("%lld ",(s[i]-s[i-1]+P)%P);putchar('\n');} return 0;
}

P7887-「MCOI-06」Existence of Truth【构造】相关推荐

  1. 哈哈哈哈,16 岁高中生开发「粤语编程」项目,在 GitHub 火了!

    点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 Everyone wants to escape sometime ...

  2. 火了!16 岁高中生开发「粤语编程」项目

    来自:机器之心粤语编程语言 --The Cantonese Programming Language.看来大家都是 C 语言啊. 最近十分搞笑的饮茶梗,刷新了大家对粤语的认知.其实粤语一直都是一个隐含 ...

  3. 16 岁高中生开发「粤语编程」项目,在 GitHub 火了!

    点击上方"Github中文社区",关注 触达Github项目 来自:github中文社区 大家好!我是Huber! 好听的粤语都能编程了! 最近十分搞笑的饮茶梗,刷新了大家对粤语的 ...

  4. 脑洞大开!Adobe等新研究把「自拍」变「他拍」,魔幻修图效果感人

    选自arXiv 作者:Liqian Ma.Zhe Lin等 机器之心编译 编辑:蛋酱.张倩.杜伟 自拍也能变为他拍,魔幻修图界又出新招式,但效果实在感人. 智能手机的出现,让摄影变成了一项大众艺术,也 ...

  5. 复旦副教授魏忠钰:AI和人类对垒「奇葩说」,如何打造智能辩手?

    导读:想象一下,在一场AI和人类对垒的「奇葩说」,智能辩手的表现会如何? 论辩的过程,既需要理解对方的表达,同时根据对方的观点生成自身的论据和观点,这个处理过程对于AI来讲,比一般性的对话要复杂很多. ...

  6. Facebook人工智能实验室提出「全景分割」,实现实例分割和语义分割的统一

    原文来源:arxiv 作者:Alexander Kirillov.Kaiming He1.Ross Girshick.Carsten Rother.Piotr Dollar 「雷克世界」编译:嗯~阿童 ...

  7. 机器学习与流体动力学:谷歌AI利用「ML+TPU」实现流体模拟数量级加速

    作者|魔王 来源|机器之心 谷歌 AI 最近一项研究表明,利用机器学习和硬件加速器能够改进流体模拟,且不损害准确率或泛化性能. 流体数值模拟对于建模多种物理现象而言非常重要,如天气.气候.空气动力学和 ...

  8. NeurIPS 2020有哪些值得读的「图神经网络」论文?

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考.在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果.如果你也希望让自己的科研成果被更多人看到, ...

  9. ListView与.FindControl()方法的简单练习 #2 -- ItemUpdting事件中抓取「修改后」的值

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/06/24/listview_itemupdating_findcontrol_201 ...

最新文章

  1. Python分析离散心率信号(下)
  2. [YTU]_1063 (输入三个整数,按由小到大的顺序输出)
  3. (17)10-10-12分页
  4. P7324-[WC2021]表达式求值【dp】
  5. 设置header_Nginx的这些安全设置,你都知道吗?
  6. 信号与槽是如何实现的_苹果iPhone 12信号仍弱?网友反馈打不进电话需重启解决...
  7. python excel vlookup_Python Excel vlookup实现
  8. asp.net后台程序动态加载js或样式表
  9. 三菱fx2n64mr说明书_三菱FX2N-64MR-D编程手册(FX系列可编程控制器) - 三菱
  10. Unity场景打包AssetBundle并加载
  11. BLEU——机器翻译评测
  12. 微软也招 Java!
  13. 运用spss modeler运用支持向量机_一道向量题一题多解引起的思考
  14. 【PyTorch】13 Image Caption:让神经网络看图讲故事
  15. 中标麒麟怎么安装deb包_银河麒麟制作deb安装包
  16. 微信开发内置浏览器JS自动关闭当前页面回到微信对话窗口
  17. 王者服务器什么时候维护完,王者荣耀s9赛季什么时间更新完毕 停机更新后开服时间是几点...
  18. 在 Laravel 中使用 Tailwind CSS
  19. IoT物联网——各大厂质量保障实践分享汇总(智能语音视频篇)
  20. ArcMap加载天地图底图及出现空白问题解决方法

热门文章

  1. java ftp 判断目录存在_java判断ftp目录是否存在的方法
  2. linux连接教程视频,[原创]linux视频教程之连接
  3. android6.0重力工具箱,重力工具箱 GravityBox For Android8.0/8.1(Oreo)稳定版发布!
  4. groovy 字符串截取最后一个_Python入门高级教程--Python 字符串
  5. 算法设计与分析——贪心算法——最优装载问题
  6. [MyBatisPlus]常用注解_@TableName_@TableId_@TableField_@TableLogic通过全局配置配置主键生成策略
  7. [Spring5]IOC容器_Bean管理_工厂Bean
  8. C++二维数组作为函数参数
  9. 2019年第十届蓝桥杯国赛B组试题E-路径计数-dfs(坑题)
  10. Abstract Factory(抽象工厂)--对象创建模式