打卡信奥刷题(2995)用C++实现信奥题 P6146 [USACO20FEB] Help Yourself G
P6146 [USACO20FEB] Help Yourself G题目描述在一个数轴上有NNN条线段第iii条线段覆盖了从lil_ili到rir_iri的所有实数包含lil_ili和rir_iri。定义若干条线段的并为一个包含了所有被至少一个线段覆盖的点的集合。定义若干条线段的复杂度为这些线段的并形成的连通块的数目。现在 Bessie 想要求出给定NNN条线段的所有子集共有2N2^N2N个的复杂度之和对109710^971097取模的结果。你也许猜到了你需要帮 Bessie 解决这个问题。但不幸的是你猜错了在这道题中你就是 Bessie而且没有人来帮助你。一切就靠你自己了输入格式第一行一个整数NNN1≤N≤1051 \leq N \leq 10^51≤N≤105。接下来NNN行每行两个整数li,ril_i,r_ili,ri描述一条线段。保证1≤liri≤2N1 \leq l_i \lt r_i \leq 2N1≤liri≤2N且任意两个端点都不在同一位置上。输出格式输出所求答案对109710^971097取模的结果。输入输出样例 #1输入 #13 1 6 2 3 4 5输出 #18说明/提示样例解释所有非空子集的复杂度如下所示显然空集的复杂度为零{[1,6]} ⟹ 1,{[2,3]} ⟹ 1,{[4,5]} ⟹ 1 \{[1,6]\} \implies 1, \{[2,3]\} \implies 1, \{[4,5]\} \implies 1{[1,6]}⟹1,{[2,3]}⟹1,{[4,5]}⟹1{[1,6],[2,3]} ⟹ 1,{[1,6],[4,5]} ⟹ 1,{[2,3],[4,5]} ⟹ 2 \{[1,6],[2,3]\} \implies 1, \{[1,6],[4,5]\} \implies 1, \{[2,3],[4,5]\} \implies 2{[1,6],[2,3]}⟹1,{[1,6],[4,5]}⟹1,{[2,3],[4,5]}⟹2{[1,6],[2,3],[4,5]} ⟹ 1 \{[1,6],[2,3],[4,5]\} \implies 1{[1,6],[2,3],[4,5]}⟹1故答案为111112181111121811111218。子任务测试点2∼32 \sim 32∼3满足N≤16N \leq 16N≤16测试点4∼74 \sim 74∼7满足N≤1000N \leq 1000N≤1000测试点8∼128 \sim 128∼12没有特殊限制。C实现#includeiostream#includealgorithm#defineMOD1000000007usingnamespacestd;structseg{intl,r;}a[100005];ints[200005];longlongf[100005];boolcmp(constsega,constsegb){returna.lb.l;}longlongfpow(longlongx,longlongy){longlongans1;while(y){if(y1)ansans*x%MOD;xx*x%MOD;y1;}returnans;}intmain(){intn;cinn;for(inti1;in;i){cina[i].la[i].r;s[a[i].r];}sort(a1,an1,cmp);for(inti1;i2*n;i)s[i]s[i-1];for(inti1;in;i)f[i](2*f[i-1]fpow(2,s[a[i].l-1]))%MOD;coutf[n]endl;return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2437023.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!