资讯动态

打卡信奥刷题(2996)用C++实现信奥题 P6148 [USACO20FEB] Swapity Swapity Swap S

发布时间:2026/8/8 9:23:10 来源:尧图企业网站定制
P6148 [USACO20FEB] Swapity Swapity Swap S题目描述Farmer John 的NNN头奶牛1≤N≤1051\leq N\leq 10^51≤N≤105站成一排。对于每一个1≤i≤N1\leq i\leq N1≤i≤N从左往右数第iii头奶牛的编号为iii。Farmer John 想到了一个新的奶牛晨练方案。他给奶牛们MMM对整数(L1,R1)…(LM,RM)(L_1,R_1)\ldots (L_M,R_M)(L1​,R1​)…(LM​,RM​)其中1≤M≤1001\leq M\leq 1001≤M≤100。他让她们重复以下包含MMM个步骤的过程KKK1≤K≤1091\leq K\leq 10^91≤K≤109次对于从111到MMM的每一个iii当前从左往右数在位置Li…RiL_i\ldots R_iLi​…Ri​的奶牛序列反转她们的顺序。当奶牛们重复这一过程KKK次后请对每一个1≤i≤N1\leq i\leq N1≤i≤N输出从左往右数第iii头奶牛的编号。输入格式输入的第一行包含NNNMMM和KKK。对于每一个1≤i≤M1\leq i\leq M1≤i≤M第i1i1i1行包含LiL_iLi​和RiR_iRi​均为范围在1…N1\ldots N1…N内的整数其中LiRiL_iR_iLi​Ri​。输出格式在第iii行输出指令序列执行了KKK次后奶牛序列中从左往右数第iii个元素的编号。输入输出样例 #1输入 #17 2 2 2 5 3 7输出 #11 2 4 3 5 7 6说明/提示样例解释初始时奶牛们的顺序从左往右为 [1,2,3,4,5,6,71,2,3,4,5,6,71,2,3,4,5,6,7]。在这一过程的第一步过后顺序变为 [1,5,4,3,2,6,71,5,4,3,2,6,71,5,4,3,2,6,7]。在这一过程的第二步过后顺序变为 [1,5,7,6,2,3,41,5,7,6,2,3,41,5,7,6,2,3,4]。再重复这两个步骤各一次可以得到样例的输出。子任务测试点222满足NK100NK100NK100。测试点333-555满足K≤103K\leq 10^3K≤103。测试点666-101010没有额外限制。C实现#includebits/stdc.husingnamespacestd;typedeflonglongll;templatetypenameTinlinevoidread(TFF){T RR1;FF0;charCHgetchar();for(;!isdigit(CH);CHgetchar())if(CH-)RR-1;for(;isdigit(CH);CHgetchar())FF(FF1)(FF3)(CH^48);FF*RR;}templatetypenameTinlinevoidwrite(T x){if(x0)putchar(-),x*-1;if(x9)write(x/10);putchar(x%1048);}templatetypenameTinlinevoidwriten(T x){write(x);puts();}constintMAXM1e210,MAXN1e510;intn,m,k,a[MAXM],b[MAXM],c[MAXN],f[35][MAXN];intmain(){read(n);read(m);read(k);for(inti1;im;i)read(a[i]),read(b[i]);for(inti1;in;i)c[i]i;for(inti1;im;i)reverse(ca[i],cb[i]1);for(inti1;in;i)f[0][i]c[i];for(inti1;i30;i)for(intj1;jn;j)f[i][j]f[i-1][f[i-1][j]];for(inti1;in;i){intxi,mk;for(intj30;j0;j--)if(m(1llj)){m-(1llj);xf[j][x];}writen(x);}return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价