T1 语言

解题思路

模拟即可,对于一个合法的句子直接判断每一个前缀和每一个后缀是否是合法的名词词组。

然后枚举动词的位置判断前后两段是否合法就好了。

code

#include<bits/stdc++.h>
#define int long long
#define ull unsigend long long
#define f() cout<<"Failed"<<endl
using namespace std;
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();};
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return x*f;
}
const int N=1e5+10;
int T,n,s[30];
char ch[N];
bool can1[N],can2[N];
inline bool juda(int x){return x&1;}
inline bool judn(int x){return x&2;}
inline bool judv(int x){return x&4;}
void solve()
{
for(int i=0;i<26;i++) s[i]=read();
scanf("%s",ch+1); n=strlen(ch+1);
for(int i=1;i<=n;i++) can1[i]=can2[i]=false;
for(int i=1;i<=n;i++)
if(!juda(s[ch[i]-'a'])&&!judn(s[ch[i]-'a'])) break;
else if(judn(s[ch[i]-'a'])) can1[i]=true;
if(judn(s[ch[n]-'a']))
for(int i=n;i>=1;i--)
if(!juda(s[ch[i]-'a'])&&!judn(s[ch[i]-'a'])) break;
else can2[i]=true;
for(int i=2;i<n;i++)
if(judv(s[ch[i]-'a'])&&can1[i-1]&&can2[i+1])
return printf("Yes\n"),void();
printf("No\n");
}
#undef int
int main()
{
#define int long long
freopen("language.in","r",stdin); freopen("language.out","w",stdout);
T=read(); while(T--) solve();
return 0;
}

T2 色球

解题思路

复杂度可以达到 \(\mathcal{O}(n)\) 用链表实现标记是否反转即可。。

当然我比较懒,暴力做法+双端队列启发式合并复杂度就是 \(\mathcal{O}{nlogn}\) 的了。

code

#include<bits/stdc++.h>
#define int long long
#define ull unsigend long long
#define f() cout<<"Failed"<<endl
using namespace std;
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();};
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return x*f;
}
const int N=2e5+10;
int n,m,id[N],rev[N];
deque<pair<int,int> > q[N];//col,sum
char opt[10];
inline void insert_front(int sum,int col,int x)
{
if(!q[x].size()) q[x].push_back(make_pair(col,sum));
else if(q[x].back().first==col){sum+=q[x].back().second;q[x].pop_back();q[x].push_back(make_pair(col,sum));}
else q[x].push_back(make_pair(col,sum));
}
inline void insert_back(int sum,int col,int x)
{
if(!q[x].size()) q[x].push_front(make_pair(col,sum));
else if(q[x].back().first==col){sum+=q[x].front().second;q[x].pop_front();q[x].push_front(make_pair(col,sum));}
else q[x].push_front(make_pair(col,sum));
}
inline void insert(int sum,int col,int x)
{
if(!rev[x]) insert_front(sum,col,x);
else insert_back(sum,col,x);
}
inline void move_front(int x,int y)
{
for(int sum=0;sum<y;)
{
pair<int,int> temp=q[x].back(); q[x].pop_back();
if(temp.second<y-sum){sum+=temp.second;continue;}
temp.second-=y-sum; q[x].push_back(temp);
return printf("%lld\n",temp.first),void();
}
}
inline void move_back(int x,int y)
{
for(int sum=0;sum<y;)
{
pair<int,int> temp=q[x].front(); q[x].pop_front();
if(temp.second<y-sum){sum+=temp.second;continue;}
temp.second-=y-sum; q[x].push_front(temp);
return printf("%lld\n",temp.first),void();
}
}
inline void move(int x,int y)
{
if(!rev[x]) move_front(x,y);
else move_back(x,y);
}
inline void merge_work(int x,int y)
{
if(!rev[x]) while(!q[x].empty()) insert(q[x].back().second,q[x].back().first,y),q[x].pop_back();
else while(!q[x].empty()) insert(q[x].front().second,q[x].front().first,y),q[x].pop_front();
}
inline void merge(int &x,int &y)
{
if(q[x].size()<q[y].size()) merge_work(x,y);
else merge_work(y,x),swap(x,y),rev[y]^=1;
}
#undef int
int main()
{
#define int long long
freopen("color.in","r",stdin); freopen("color.out","w",stdout);
n=read(); m=read();
for(int i=1;i<=n;i++) id[i]=i;
while(m--)
{
int x,y,z; scanf("%s",opt+1); x=read(); y=read();
if(strlen(opt+1)==4) z=read(),insert(x,y,id[z]);
else if(opt[2]=='o') move(id[y],x);
else merge(id[x],id[y]);
}
return 0;
}

T3 斐波

大坑未补

T4 偶数

KMP 求最长 boder 可以得到 40pts (code)

大坑未补

NOIP模拟81的更多相关文章

  1. Noip模拟81 2021.10.20

    T1 语言 比较简单的题,然后就瞎写了,所以考场上就我一个写了线段树的,所以我的常数.... 所以就枚举动词的位置,找前面后面有没有出现$4$即可 1 #include<bits/stdc++. ...

  2. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  3. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

  4. NOIP 模拟4 T2

    本题属于二和一问题 子问题相互对称 考虑对于问题一:知a求b 那么根据b数组定义式 显然能发现问题在于如何求dis(最短路) 有很多算法可供选择 dijsktra,floyed,bfs/dfs,spf ...

  5. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  6. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  7. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  8. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  9. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  10. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

随机推荐

  1. 实用的SpringBoot生成License方案

    前言 License指的是版权许可证,当我们开发完系统后,如果不想让用户一直白嫖使用,比如说按时间续费,License的作用就有了. 我们可以给系统指定License的有效期,控制系统的可用时间. 那 ...

  2. 【SSH通道数据库连接池】连接远程linix服务器上面的mysql

    首先,我用的是阿里的druid数据库连接池,其次,需要第三方jar包,maven坐标如下: <dependency> <groupId>com.jcraft</group ...

  3. JavaScript中的事件模型如何理解?

    一.事件与事件流 javascript中的事件,可以理解就是在HTML文档或者浏览器中发生的一种交互操作,使得网页具备互动性, 常见的有加载事件.鼠标事件.自定义事件等 由于DOM是一个树结构,如果在 ...

  4. 使用ollama + AnythingLLM快速且简单的在本地部署llm3

    使用ollama + AnythingLLM快速且简单的在本地部署llm3 不多说,直接开始 一.安装ollama ollama官网:https://ollama.com/ 下载地址:https:// ...

  5. mysql8在Win10下安装教程

    一.准备工作 下载mysql8安装包,下载URL地址:https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/ 二.管理员权限执行 ...

  6. 力扣657(java & python)-机器人能否返回原点(简单)

    题目: 在二维平面上,有一个机器人从原点 (0, 0) 开始.给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束. 移动顺序由字符串 moves 表示.字符 move[i] 表示 ...

  7. 力扣263(java)-丑数(简单)

    题目: 丑数 就是只包含质因数 2.3 和 5 的正整数. 给你一个整数 n ,请你判断 n 是否为 丑数 .如果是,返回 true :否则,返回 false . 示例 1: 输入:n = 6输出:t ...

  8. Flink 如何实时分析 Iceberg 数据湖的 CDC 数据

    简介: 数据湖的架构中,CDC 数据实时读写的方案和原理 本文由李劲松.胡争分享,社区志愿者杨伟海.李培殿整理.主要介绍在数据湖的架构中,CDC 数据实时读写的方案和原理.文章主要分为 4 个部分内容 ...

  9. 连续三年入围 Gartner 容器竞争格局,阿里云容器服务新布局首次公开

    简介: 阿里云连续三年国内唯一入围Gartner容器竞争格局,解读业界'顶流'的产品布局. 近日,国际知名信息技术咨询机构Gartner发布2021年容器竞争格局报告,阿里云成为国内唯一连续三年入选的 ...

  10. [FE] 被动检测 iframe 加载 src 成功失败的一种思路和方式 (Vue)

    思路:设置定时器一个,n 秒后设置 404 或其它,此时给 iframe 的 onload 事件设置回调函数,加载完成则取消定时器. 示例: data () { return { handler: n ...