首页 > 其他分享 >2022 CCPC 绵阳 M

2022 CCPC 绵阳 M

时间:2023-10-04 12:56:10浏览次数:35  
标签:int 元素 cin 绵阳 CCPC 2022 三角形

2022 China Collegiate Programming Contest (CCPC) Mianyang Onsite

M. Rock-Paper-Scissors Pyramid

思路:这题推了好久,队友用递归写的。赛后我写这个题的时候,确实难推,用到了单调栈的思想。

考虑对于一个\(P_{n-1}\)阶的三角形推出第\(P_{n}\)阶的三角形,考虑它的本质是什么?考虑当\(n-1\)阶变成第\(n\)阶的时候,新增加的一个元素需要和原三角形最后一列的所有元素进行比较。如果下面行新元素赢了,就在上面方式新元素,否则放上原本上一行的旧元素。那么我们考虑维护三角形的最后一行。

如果当前新的元素打败了旧的元素,我们就把旧的元素\(pop\)掉,直到不能打败或栈为空。之后再把这个新元素入栈。最后的答案就是栈底的元素啦。

// AC one more times
// nndbk
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
const int N = 2e6 + 10;
int a[N];
int main()
{
    ios::sync_with_stdio(false);   cin.tie(nullptr), cout.tie(nullptr);
    int t;
    cin>>t;
    while(t--)
    {
        string s;
        cin>>s;
        int sz = s.size();
        s = "?"+s;
        //1石头 2剪刀 3布
        for(int i = 1; i <= sz; i++)
        {
            if(s[i]=='R')a[i] = 1;
            else if(s[i]=='S')a[i] = 2;
            else a[i] = 3;
        }
        stack<int>st;
        st.push(a[1]);
        for(int i = 2; i <= sz; i++)
        {
            int nxt = a[i];
            while(!st.empty())
            {
                int now = st.top();
                if(nxt==1)
                {
                    if(now==2||now==1)st.pop();
                    else break;
                }
                else if(nxt==2)
                {
                    if(now==3||now==2)st.pop();
                    else break;
                }
                else if(nxt==3)
                {
                    if(now==1||now==3)st.pop();
                    else break;
                }
            }
            st.push(nxt);
        }
        int ans = 0;
        while(!st.empty())
        {
            ans = st.top();
            st.pop();
        }
        if(ans==1)cout<<"R\n";
        else if(ans==2)cout<<"S\n";
        else cout<<"P\n";
    }
    return 0;
}

标签:int,元素,cin,绵阳,CCPC,2022,三角形
From: https://www.cnblogs.com/nannandbk/p/17742148.html

相关文章

  • The 2022 ICPC 南京 ADG
    The2022ICPCAsiaNanjingRegionalContestA.Stop,YesterdayPleaseNoMore思路:因为袋鼠是同时移动的,所以我们可以不考虑袋鼠怎么动,而去考虑边界怎么动。所以我们先不考虑洞的影响,先确定哪些会因为边界而离开。确定好最终边界,再进行一次模拟,加入有洞的情况,发现洞产生的路径......
  • NOIP2022 比赛
    Day\(2^2+3^2+4^2\)。HNOI2016序列的加强版。我去年怎么这么菜啊,虽然现在也是就是了。\[\sum\limits_{[l,r]\in[L,R]}\left(\max\limits_{i\in[l,r]}a_i\right)\left(\max\limits_{i\in[l,r]}b_i\right)\]考虑离线,对右端点\(r\)扫描线,对每个左端点\(l\)维护\(S_l=\le......
  • 2017 China Collegiate Programming Contest Final (CCPC-Final 2017)
    Preface今天打学校统一要求的这场CCPC2017Final,直接被打爆了,各种数学题搞得人生活不能自理主要是H徐神开场就秒出了正确的思路,然后一心认准高斯消元然后一直想+写+调到结束都没卡过去比赛最后20min的时候祁神想到了更好写的基于施密特正交化的方法,可以碍于时间有限没调出来不......
  • Abaqus2022下载|Abaqus2022(工程模拟分析软件) 安装包下载方式
    Abaqus是一款广泛应用于工程和科学领域的有限元分析(FEA)软件。它由达索系统(DassaultSystèmes)的Simulia品牌开发,用于模拟和分析各种工程问题。其支持多物理场耦合、材料建模、大型装配体分析等特点,使其成为工程领域的首选工具之一。软件地址:看置顶贴abaqus和ansys哪个好由于Ansys产......
  • Abaqus 2022最新版下载-Abaqus 2022软件安装包下载 安装包下载
    abaqus电脑版软件能够帮助你在电脑上面进行各种有限元结构的分析与模拟测试,而且可以做到多数据一起分析,提高了计算的效率,而且使用起来非常简单,让使用者非常舒心!被广泛地认为是功能最强的有限元软件,可以分析复杂的固体力学结构力学系统,特别是能够驾驭非常庞大复杂的问题和模拟高度......
  • 2021 CCPC 威海
    gym知乎确定了我先写缺省源,gjk正开,zsy倒开的策略先读了EFGH,发现是概率、博弈、计数,只能做H,感觉我已经到点了。队友签了AJzsy说M是多项式快速幂并准备开冲,看榜发现逆十字6min过了不太对劲,跟gjk讨论了一下还是有了简单做法。gjk又写了D,WA了之后我看了一眼发现求......
  • P8816 [CSP-J 2022] 上升点列
    Problem考察算法:\(DP\)。题目简述给你\(n\)个点,每个点有一个坐标\((x_i,y_i)\),还可以添加\(k\)个点。添加之后,求:最长的上升点列的长度。上升点列定义(两个点满足其中之一即可):\(x_{i+1}-x_{i}=1,y_i=y_{i+1}\)\(y_{i+1}-y_{i}=1,x_i=x_{i+1}\)思路设......
  • P8815 [CSP-J 2022] 逻辑表达式
    Problem考察算法:后缀表达式计算、建表达式树、\(DFS\)。题目简述给你一个中缀表达式,其中只有\(\&\)和\(\mid\)两种运算。求:\(\&\)和\(\mid\)运算中的“最短路”次数各出现了多少次。最短路的定义为:在\(a\)\(\&\)\(b\)运算中,如果\(a=0\),那么整个表达式的计算......
  • 2022 China Collegiate Programming Contest (CCPC) Weihai Site
    PrefaceVP到自己学校出的题了可海星,不得不说学长们出的题比起昨天VP的CCPC2022广州做起来要舒服地多这场前面写题都很顺基本都是一发过,中期的medium也没怎么卡思路和卡机子,一道一道地慢慢出最后一个小时徐神RushF可惜没Rush出来,然后我和祁神坐在下面把B的做法给搞出来了,但不知......
  • The 2022 ICPC Asia Shenyang Regional Contest
    C.ClampedSequence因为\(n\)的范围不大,并且可以猜到\(l,r\)中应该至少有一个在\(a_i,a_i-1,a_i+1\)上。所以直接暴力枚举\(l\)或\(r\)然后暴力的计算一下#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongusingvi=vector<int>;int32_tmain(){......