首页 > 其他分享 >NOIP模拟赛(10.17):语言,色球,斐波,偶数

NOIP模拟赛(10.17):语言,色球,斐波,偶数

时间:2024-10-19 10:22:14浏览次数:7  
标签:单词 NOIP 名词 texttt 小球 斐波 动词 NP 10.17

语言

题面:

牛妹正在学习一种新的语言,在这种语言里,单词只有形容词(\(\texttt{A}\)),名词(\(\texttt{N}\))和动词(\(\texttt{V}\))三种词性。但是一个单词可以对应多种词性。

一个名词性词组(\(\texttt{NP}\))可以由一个名词(\(\texttt{N}\)),或者一个形容词修饰一个子名词性词组(\(\texttt{A} + \texttt{NP}_1\)),或者两个子名词性词组(\(\texttt{NP}_1 + \texttt{NP}_2\))组成。即:

\[\texttt{NP} ::= \texttt{N} \mid \texttt{A} + \texttt{NP}_1 \mid \texttt{NP}_1 + \texttt{NP}_2 \]

一个句子(\(\texttt{S}\))必须由一个名词性词组(\(\texttt{NP}_1\))加一个动词(\(\texttt{V}\))再加一个名词性词组(\(\texttt{NP}_2\))组成,即:

\[\texttt{S} ::= \texttt{NP}_1 + \texttt{V} + \texttt{NP}_2 \]

牛妹用这个语言写下一个单词的序列,现在你想知道这个单词序列是否能通过适当安排序列里每个单词的词性使之成为一个句子(不同位置的相同的单词也可以安排不同的词性)。

为了简单起见,她把每个单词编码对应为一个小写拉丁字母,不同的单词对应不同的字母(这里我们假设序列里面不同的单词的总数不超过 \(26\) 个)。每个单词用 \(1(001_{(2)})\) 到 \(7(111_{(2)})\) 来表示这个单词的词性。数字的二进制第 \(1\) 位为 \(1\) 表示这个单词可以作为形容词(\(\texttt{A}\)),否则表示无法作为形容词;第 \(2\) 位为 \(1\) 表示这个单词可以作为名词(\(\texttt{N}\)),否则表示无法作为名词;第 \(3\) 位为 \(1\) 表示这个单词可以作为动词(\(\texttt{V}\)),否则表示无法作为动词。

具体的对应关系如下表所示:

编码 词性
\(1\) \(\texttt{A}\)
\(2\) \(\texttt{N}\)
\(3\) \(\texttt{A} \text{ or } \texttt{N}\)
\(4\) \(\texttt{V}\)
\(5\) \(\texttt{A} \text{ or } \texttt{V}\)
\(6\) \(\texttt{N} \text{ or } \texttt{V}\)
\(7\) \(\texttt{A} \text{ or } \texttt{N} \text{ or } \texttt{V}\)

题解:

$O(Tn)$做法 ($100$pts):

注意到一个句子中动词有且仅有一个,所以对于类型4单词数大于1的情况,直接输出NO即可

根据题意,只要是一个不包含动词且以名词结尾的字符串则一定可以视为一个名词词组(即$NP$)

发现动词前必须为名词类型,结尾必须为名词类型

所以枚举动词位置,判断动词前及句末是否有名词即可,若存在类型4且数量为一,则动词一定为类型4单词

Code:
点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int w[26],a[N],n,cnt,pos;
string s1;
int main(){
  ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
//  freopen("language.in","r",stdin);
//  freopen("language.out","w",stdout);
  int t;
  cin>>t;
  while(t--){
    cnt=0,pos=0;
    for(int i=0;i<26;i++)cin>>w[i];
    cin>>s1;
    n=s1.length();
    for(int i=1;i<=n;i++){
      a[i]=w[s1[i-1]-'a'];
      if(a[i]==4)cnt++,pos=i;//记录类型4单词数量 
    }
    if(a[n]==1||a[n]==4||a[n]==5||cnt>1){
      cout<<"No\n";
      continue;
    }
    if(cnt==1){
      if(a[pos-1]==0||a[pos-1]==1||a[pos-1]==5){
        cout<<"No\n";
        continue;
      }else {
        cout<<"Yes\n";
        continue;
      }
    }
    bool suc=1;
    for(int i=2;i<n;i++){
      if((a[i]==5||a[i]==6||a[i]==7)&&(a[i-1]==2||a[i-1]==3||a[i-1]==6||a[i-1]==7)){
        cout<<"Yes\n";//枚举动词位置 
        suc=0;
        break;
      }
    }
    if(suc)cout<<"No\n";
  }
  return 0;
}

色球

题面:

牛牛有 \(n\) 种颜色的彩色小球(编号 \(1\) 到 \(n\)),每种颜色的小球他都有无限多个。他还有 \(n\) 个球桶(编号 \(1\) 到 \(n\)),球桶的内径与小球直径相当且高度是无限大的,因此能容纳无限多的小球。他想用这些小球和球桶玩游戏。

一开始这些球桶都是空的,紧接着他会依次做 \(m\) 个操作,每个操作都是以下 \(3\) 种操作中的一个:

  1. push x y z,表示把 \(x\) 个颜色为 \(y\) 的彩色小球放到第 \(z\) 个桶的最上面;
  2. pop x z,表示把最上面的 \(x\) 个小球从第 \(z\) 个桶内拿出来;
  3. put u v,表示把第 \(u\) 个桶的所有小球依次从顶部拿出放入第 \(v\) 个桶内。

现在他已经确定好了这 \(m\) 个操作都是什么,但在他开始玩之前,他想知道每次他进行第二类操作取出的最后一个小球是什么颜色。

标签:单词,NOIP,名词,texttt,小球,斐波,动词,NP,10.17
From: https://www.cnblogs.com/LISOP/p/18475552

相关文章

  • 10.18noip联考总结
    10.18noip联考总结T1数据造的很水,按道理来说,std的\(O(64\timesn\times\log_2n)\)的做法是不能过掉极限数据的,可以进行特殊构造把std卡掉。在考场上也想到了与std相同复杂度的做法,但是在算了之后发现是不能过的,期望分数与暴力相同,所以也就没打,后面写了一个很假的做法......
  • 洛谷 P1983 [NOIP2013 普及组] 车站分级(拓扑排序)
    题目传送门解题思路对于每一趟列车,我们可以知道其中没有经过的车站的级别肯定会比经过的车站的级别低。于是,我们可以根据这种关系来建一个图。将等级小的车站往等级大的车站建边。于是,我们可以发现这是一个DAG(有向无环图),所以我们可以拓扑排序。我们从等级最小的车站......
  • [49 & 50] (多校联训) A层冲刺NOIP2024模拟赛08 | CSP-S 模拟 12
    一小孩在奶茶店玩封盖机被绞断四根手指记者:你现在感觉怎么样小孩:......
  • NOIP 模拟赛:2024-10-17
    挂分100pts。T1:数组不清空导致的。题意:\(n\)个物品,第\(i\)个物品花费\(2^{a_i}\),价值\(b_i\)。问获得\(k\)的价值最少花多少钱。\(n\le10^5\)。二分,求\(x\)块能买到多少价值。按花费从小到大枚举\(i=0\sim30\),维护一个"当前物品集合"\(q\),初始只存储\(a=0\)的......
  • 2024.10.17(周四)
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="utf-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=......
  • 【题解】Solution Set - NOIP2024集训Day56 哈希杂题
    【题解】SolutionSet-NOIP2024集训Day56哈希杂题https://www.becoder.com.cn/contest/5640「CF568C」NewLanguage做过的2-sat。「NOI2024」集合做过。做法见提交记录。「CSP-S2022」星战简要题意:给定有向图。修改使一条边失效/恢复;使一个点的所有入边......
  • java学习10.17
    今天继续Java图形化页面的学习窗口的分别显示importjava.awt.;importjava.awt.event.;publicclass_1016{publicstaticvoidmain(String[]args){Frameframe=newFrame();frame.setBounds(500,500,300,300);frame.setAlwaysOnTop(true);//设置GridLay......
  • 10.17日
    使用java.io包进行文件操作文件写入javaimportjava.io.FileWriter;importjava.io.IOException;publicclassFileWriteExample{publicstaticvoidmain(String[]args){try(FileWriterwriter=newFileWriter("example.txt")){writer.write("Hello,Wor......
  • 10.17noip联考总结
    10.17noip联考总结今天的命题人是xde……T1最后大约两个小时的时候想到了正解,但是在处理边界的时候出了问题,大样例一直过不了。其实只需要把数值统计下来再计算就行了。T2其实我们把给定的数给二进制拆开,就会发现其实就是对数进行调整把0调整为1。根据这个思路可以构造出一......
  • 多校A层冲刺NOIP2024模拟赛08 排列
    多校A层冲刺NOIP2024模拟赛08排列一种连续段dp的解法。题面小Y最近在研究组合数学,他学会了如何枚举排列。小Z最近在研究数论,他学会了求最大公约数。于是小Y和小Z联手出了一个有趣的题目:有多少个长度为\(n\)且任意相邻两个数的最大公约数都不为\(k\)的排列?......