T3 ! 我!改!出!来!了!

news/2024/10/4 17:22:41

你说得对,但是我 15k 分讨改出来了!

#include<bits/stdc++.h>
#define fo(x, y, z) for(register int (x) = (y); (x) <= (z); (x)++)
#define fu(x, y, z) for(register int (x) = (y); (x) >= (z); (x)--)
using namespace std;
typedef long long ll;
#define lx ll
inline lx qr()
{char ch = getchar();lx x = 0 , f = 1;for(;ch<'0'||ch>'9';ch = getchar()) if(ch == '-') f = -1;for(;ch>= '0' && ch<= '9';ch = getchar()) x = (x<<3) + (x<<1) + (ch^48);return x*f;
}
#undef lx
#define qr qr()
#define pii pair<int , int>
#define fi first
#define se second
const int Ratio = 0;
const int N = 2e5 + 5, x = 1e9;
const int mod = 1e9 + 7;
int n, m;
string s;
int a[N];
struct rmm
{int llx, rlx, wlx;int ln, rn;bool wudi;rmm(){llx = rlx = wlx = ln = rn = 0; wudi = 0;}
} t[N << 2];
namespace Wisadel
{int W(char c){if(c == 'R') return 1;else if(c == 'S') return 2;else return 3;}char M(int x){if(x == 1) return 'R';else if(x == 2) return 'S';else return 'P';}int Wpk(int aa, int bb){if(!aa || !bb) return aa + bb;if(aa == bb) return aa;if(((aa == 1 || aa == 2) && bb == aa + 1) || (aa == 3 && bb == 1) ) return aa;return bb;}#define ls (rt << 1)#define rs (rt << 1 | 1)#define mid ((l + r) >> 1)rmm Wpushup(rmm a, rmm b){rmm c;c.llx = a.llx, c.rlx = b.rlx;c.ln = c.rn = 0;c.wudi = 0;int wn = Wpk(a.rlx, b.llx);if(a.wudi && b.wudi){if(a.rlx != b.llx){if(wn == a.rlx)//{if(a.ln + 1 > b.rn){c.wlx = a.wlx;c.rn = a.rn, c.ln = a.ln + 1 - b.rn + b.ln;}else{c.wlx = b.wlx;c.ln = b.ln, c.rn = b.rn - 1 - a.ln + a.rn;}}else{if(a.ln > b.rn + 1){c.wlx = a.wlx;c.rn = a.rn, c.ln = a.ln - 1 - b.rn + b.ln;}else{c.wlx = b.wlx;c.ln = b.ln, c.rn = b.rn + 1 - a.ln + a.rn;}}}else{if(a.ln > b.rn){c.wlx = a.wlx;c.rn = a.rn, c.ln = a.ln - b.rn + b.ln;}else{c.wlx = b.wlx;c.ln = b.ln, c.rn = b.rn - a.ln + a.rn;}}c.wudi = 1;return c;}if(a.wudi){if(a.rlx != b.llx){if(wn == a.rlx){if(b.ln){c.wlx = a.wlx;c.rn = a.rn, c.ln = a.ln + b.ln + 1;c.wudi = 1;}else if(b.rn){if(a.ln + 1 > b.rn){c.wlx = a.wlx;c.rn = a.rn, c.ln = a.ln + 1 - b.rn;c.wudi = 1;}else{c.wlx = b.wlx;c.rn = b.rn - a.ln - 1 + a.rn;}}else{c.wlx = a.wlx;c.rn = a.rn, c.ln = a.ln + 1;c.wudi = 1;}}else{if(b.ln){c.wlx = a.wlx;c.rn = a.rn, c.ln = a.ln + b.ln - 1;c.wudi = 1;}else if(b.rn){if(a.ln - 1 > b.rn){c.wlx = a.wlx;c.rn = a.rn, c.ln = a.ln - 1 - b.rn;c.wudi = 1;}else{c.wlx = b.wlx;c.rn = b.rn - a.ln + 1 + a.rn;}}else{c.wlx = a.wlx;c.rn = a.rn;if(a.ln > 1){c.ln = a.ln - 1;c.wudi = 1;}}}}else{if(b.ln){c.wlx = a.wlx;c.rn = a.rn, c.ln = a.ln + b.ln;c.wudi = 1;}else if(b.rn){if(a.ln > b.rn){c.wlx = a.wlx;c.rn = a.rn, c.ln = a.ln - b.rn;c.wudi = 1;}else{c.wlx = b.wlx;c.rn = b.rn - a.ln + a.rn;}}else{c.wlx = a.wlx;c.ln = a.ln, c.rn = a.rn;c.wudi = 1;}}return c;}if(b.wudi){if(a.rlx != b.llx){if(wn == b.llx){if(a.rn){c.wlx = b.wlx;c.ln = b.ln, c.rn = b.rn + 1 + a.rn;c.wudi = 1;}else if(a.ln){if(b.rn + 1 > a.ln){c.wlx = b.wlx;c.ln = b.ln, c.rn = b.rn + 1 - a.ln;c.wudi = 1;}else{c.wlx = a.wlx;c.ln = a.ln - 1 - b.rn + b.ln;}}else{c.wlx = b.wlx;c.ln = b.ln, c.rn = b.rn + 1;c.wudi = 1;}}else{if(a.rn){c.wlx = b.wlx;c.ln = b.ln, c.rn = b.rn - 1 + a.rn;c.wudi = 1;}else if(a.ln){if(b.rn - 1 > a.ln){c.wlx = b.wlx;c.ln = b.ln, c.rn = b.rn - 1 - a.ln;c.wudi = 1;}else{c.wlx = a.wlx;c.ln = a.ln + 1 - b.rn + b.ln;}}else{c.wlx = b.wlx;c.ln = b.ln;if(b.rn > 1){c.rn = b.rn - 1;c.wudi = 1;}}}}else{if(a.rn){c.wlx = b.wlx;c.ln = b.ln, c.rn = b.rn + a.rn;c.wudi = 1;}else if(a.ln){if(b.rn > a.ln){c.wlx = b.wlx;c.ln = b.ln, c.rn = b.rn - a.ln;c.wudi = 1;}else{c.wlx = a.wlx;c.ln = a.ln - b.rn + b.ln;}}else{c.wlx = b.wlx;c.ln = b.ln, c.rn = b.rn;c.wudi = 1;}}return c;}//if(a.rlx != b.llx){if(wn == a.rlx)// {if((a.ln && b.ln) || (!a.ln && !a.rn && b.ln) || (a.ln && !b.ln && !b.rn)){c.wlx = a.wlx;c.ln = a.ln + b.ln + 1;}else if(a.ln && b.rn){if(a.ln > b.rn - 1){c.wlx = a.wlx;c.ln = a.ln - b.rn + 1;}else{c.wlx = b.wlx;c.rn = b.rn - 1 - a.ln;}}else if((a.rn && b.ln) || (a.rn && !b.ln && !b.rn)){c.wlx = a.wlx;c.ln = b.ln + 1;c.rn = a.rn;c.wudi = 1;}else if(a.rn && b.rn){c.wlx = b.wlx;c.rn = a.rn + b.rn - 1;}else if(!a.ln && !a.rn && !b.ln && !b.rn){c.wlx = a.wlx;c.ln = 1;}else if(!a.ln && !a.rn && b.rn){c.wlx = b.wlx;c.rn = b.rn - 1;}}if(wn == b.llx)// ←{// cout<<"BUOK!"<<endl;if((a.rn && b.rn) || (!a.ln && !a.rn && b.rn) || (a.rn && !b.ln && !b.rn)){c.wlx = b.wlx;c.rn = a.rn + b.rn + 1;}else if(a.ln && b.rn){if(b.rn > a.ln - 1){c.wlx = b.wlx;c.rn = b.rn - a.ln + 1;}else{c.wlx = a.wlx;c.ln = a.ln - 1 - b.rn;}}else if((a.rn && b.ln) || (b.ln && !a.ln && !a.rn)){c.wlx = b.wlx;c.ln = b.ln;c.rn = a.rn + 1;c.wudi = 1;}else if(a.ln && b.ln){c.wlx = a.wlx;c.ln = a.ln + b.ln - 1;}else if(!a.ln && !a.rn && !b.ln && !b.rn){c.wlx = b.wlx;c.rn = 1;}else if(a.ln && !b.ln && !b.rn){// cout<<"BUOK!"<<endl;c.wlx = a.wlx;c.ln = a.ln - 1;}}}else{if((a.ln && b.ln) || (!a.ln && !a.rn && b.ln) || (a.ln && !b.ln && !b.rn)){c.wlx = a.wlx;c.ln = a.ln + b.ln;}else if((a.ln && b.rn)){if(a.ln > b.rn){c.wlx = a.wlx;c.ln = a.ln - b.rn;}else{c.wlx = b.wlx;c.rn = b.rn - a.ln;}}else if(a.rn && b.ln){c.wlx = a.wlx;c.rn = a.rn, c.ln = b.ln;c.wudi = 1;}else if((a.rn && b.rn) || (!a.ln && !a.rn && b.rn) || (a.rn && !b.ln && !b.rn)){c.wlx = b.wlx;c.rn = a.rn + b.rn;}else if(!a.ln && !a.rn && !b.ln && !b.rn){c.wlx = a.wlx;}}return c;}void Wbuild(int rt, int l, int r){if(l == r){t[rt].llx = t[rt].rlx = t[rt].wlx = a[l];t[rt].ln = t[rt].rn = 0;return;}Wbuild(ls, l, mid), Wbuild(rs, mid + 1, r);t[rt] = Wpushup(t[ls], t[rs]);// cout<<l<<' '<<r<<' '<<t[rt].ln<<' '<<t[rt].rn<<' '<<t[rt].wlx<<' '<<t[rt].wudi<<endl;}void Wupd(int rt, int l, int r, int x, int k){if(l == r){t[rt].llx = t[rt].rlx = t[rt].wlx = k;t[rt].ln = t[rt].rn = 0;return;}if(x <= mid) Wupd(ls, l, mid, x, k);else Wupd(rs, mid + 1, r, x, k);t[rt] = Wpushup(t[ls], t[rs]);}rmm Wq(int rt, int l, int r, int x, int y){if(x <= l && r <= y) return t[rt];rmm lans, rans; int ly = 0, ry = 0;if(x <= mid) lans = Wq(ls, l, mid, x, y), ly = 1;if(y > mid) rans = Wq(rs, mid + 1, r, x, y), ry = 1;if(ly && ry){// cout<<l<<' '<<mid<<' '<<r<<endl;// cout<<lans.ln<<' '<<lans.rn<<' '<<lans.wlx<<' '<<lans.wudi<<endl;// cout<<rans.ln<<' '<<rans.rn<<' '<<rans.wlx<<' '<<rans.wudi<<endl;// cout<<endl;return Wpushup(lans, rans);}else if(ly) return lans;else return rans;}short main(){// freopen(".in", "r", stdin) , freopen(".out", "w", stdout);freopen("a.in", "r", stdin) , freopen("a.out", "w", stdout);n = qr, m = qr;cin>>s;fo(i, 0, n - 1) a[i + 1] = W(s[i]);Wbuild(1, 1, n);fo(i, 1, m){int op = qr, l = qr, r; char ch;if(op == 1){scanf(" %c", &ch);Wupd(1, 1, n, l, W(ch));}else{r = qr;// fo(j, l, r)// {//     cout<<M(Wq(1, 1, n, j, j).wlx);// }// cout<<endl;rmm zc = Wq(1, 1, n, l, r);// cout<<zc.ln<<' '<<zc.rn<<' '<<zc.llx<<' '<<zc.rlx<<' ';printf("%c\n", M(zc.wlx));}}return Ratio;}
}
int main(){return Wisadel::main();}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/67713.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

PbootCMS隐藏指定 scode 的菜单各种条件判断和标签

{pboot:nav} <li {pboot:if([nav:scode] == 2 || [nav:scode] == 4 || [nav:scode] == 6)}style="display: none;"{/pboot:if}><a href="[nav:link]">{nav:name}</a> </li> {/pboot:nav}扫码添加技术【解决问题】专注中小企业网站…

PbootCMS判断导航从第几个开始各种条件判断和标签

{pboot:nav} {pboot:if([nav:i] > 2)} <li><a href="[nav:link]">{nav:name}</a></li> {/pboot:if} {/pboot:nav}扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。…

PbootCMS导航栏 logo 居中判断各种条件判断和标签

{pboot:nav} <a href="[nav:link]">{nav:name}</a> {pboot:if([nav:i] == 3)} <img src="{pboot:sitelogo}" /> {/pboot:if} {/pboot:nav}扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HT…

PbootCMS判断列表页有无内容,无内容返回提示各种条件判断和标签

{pboot:if({page:rows} > 0)} <div class="page"><a href="{page:index}">首页</a><a href="{page:pre}">上一页</a>{page:numbar}<a href="{page:next}">下一页</a><a href="{…

检测到您模板中包含文件超过50个,请检查是否存在互相包含导致无限循环的情况!

在使用PBootCMS搭建网站时,如果遇到“检测到您模板中包含文件超过50个,请检查是否存在互相包含导致无限循环的情况”的错误,通常是因为模板文件中存在互相包含的情况。具体来说,可能是某个模板文件多次递归调用自身或其他模板文件,导致无限循环。 解决方法检查模板文件 定…

pbootcms教程—设置的会话目录创建失败!

当你在宝塔面板上部署PBootCMS模板时,可能会遇到“设置的会话目录创建失败”的问题。这通常是因为文件权限或目录权限设置不当导致的。以下是一步一步的解决方法: 解决方法登录宝塔面板打开浏览器,输入宝塔面板的地址(通常是http://你的服务器IP:8888),并登录宝塔面板。找…

自动加载类文件时发生错误,类名【core\basic\Kernel】

当你在使用PBootCMS时遇到“自动加载类文件时发生错误,类名【core\basicKernel】”的问题,通常是因为Kernel.php文件被误删除或丢失。特别是在阿里云虚拟主机上,这类文件可能会被误判为风险文件而被删除。以下是如何解决这一问题的具体步骤: 解决方法重新下载PBootCMS模板访…

pbootcms模板文章列表没有缩略图时也不显示默认图片

通义灵码为了在PBootCMS模板中实现只有上传了缩略图才显示图片的功能,可以使用[list:isico]标签来判断是否存在缩略图。下面是具体实现的代码示例: 完整代码示例{pboot:list scode={sort:scode}}<a href="[list:link]" rel="external nofollow" title…