JZOJ 2020.07.28【NOIP提高组】模拟
2020.07.28【NOIP提高组】模拟
考试时状态不好,暴力不想打
结束前勉勉强强骗点分
已经不想说什么了······
\(T1\) 复制&粘贴2
逆推答案,枚举 \(k\),分类讨论
\(T2\) 愉快的logo设计
暴力计算贡献改为前缀和,把原串复制一片,把目标串分成连续的多块,记录开头结尾,根据前缀和算成功匹配的个数,取最大的即可
\(T3\) Flower 特难的题,见我另一篇,这里不展开叙述
\(T4\) 有趣的有趣的家庭菜园 还可以,见我另一篇,这里不展开叙述
前两题代码:
\(Code1\)
#include<cstdio>
#include<cstring>
using namespace std;
const int N = 2e5 + 5;
int k , m , n , x[N] , y[N] , z[N];
char s[N];
int main()
{
freopen("copypaste.in" , "r" , stdin);
freopen("copypaste.out" , "w" , stdout);
scanf("%d%d%s%d" , &k , &m , s , &n);
for(register int i = 1; i <= n; i++) scanf("%d%d%d" , &x[i] , &y[i] , &z[i]);
int len = strlen(s);
for(register int i = len; i; i--) s[i] = s[i - 1];
for(register int i = 1; i <= k; i++)
{
int ans = i;
for(register int j = n; j; j--)
{
if (z[j] + y[j] - x[j] < ans) ans = ans - (y[j] - x[j]);
else if (ans > z[j]) ans = ans - z[j] + x[j];
}
printf("%c" , s[ans]);
}
}
\(Code2\)
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int N = 5000005;
int k , ans = N , tot = 0 , num[5][N];
char s[N] , str[13][N];
struct node{
int l , r , s;
}fl[N];
int main()
{
freopen("logo.in" , "r" , stdin);
freopen("logo.out" , "w" , stdout);
scanf("%d%s" , &k , s);
int p = 1;
str[0][0] = '0';
for(register int i = 1; i <= k; i++)
{
for(register int j = 1; j <= p; j++) str[i][j - 1] = 'J' , str[i][j + p - 1] = 'O' , str[i][j + p * 2 - 1] = 'I';
for(register int j = 3 * p; j < 4 * p; j++) str[i][j] = str[i - 1][j - 3 * p];
p *= 4;
}
for(register int i = 0; i < p - 1; i++)
{
int j = i;
fl[++tot].l = i;
fl[tot].s = str[k][i] == 'J' ? 1 : (str[k][i] == 'O' ? 2 : 3);
while (str[k][j] == str[k][j + 1]) j++;
fl[tot].r = j;
i = j;
}
p = strlen(s);
for(register int i = p; i <= p * 2 - 1; i++) s[i] = s[i - p];
for(register int i = 0; i <= p * 2 - 1; i++)
{
int x = s[i] == 'J' ? 1 : (s[i] == 'O' ? 2 : 3);
if (i != 0)
{
num[1][i] = num[1][i - 1];
num[2][i] = num[2][i - 1];
num[3][i] = num[3][i - 1];
}
num[x][i]++;
}
for(register int i = 0; i < p; i++)
{
int x = 0;
for(register int j = 1; j <= tot; j++)
x += fl[j].l + i != 0 ? num[fl[j].s][fl[j].r + i] - num[fl[j].s][fl[j].l + i - 1] : num[fl[j].s][fl[j].r + i];
ans = min(ans , p - x);
}
printf("%d" , ans - 1);
}
JZOJ 2020.07.28【NOIP提高组】模拟的更多相关文章
- 计蒜客 NOIP 提高组模拟竞赛第一试 补记
计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...
- 2017.07.07【NOIP提高组】模拟赛B组
Summary 因为某种无法抗拒的原因,今天没有打比赛,所以也就没有那种心态.今天的题目有状压DP和二分,这套题不难也不简单,适中,适合我这种渣渣来做.在改题时,发现了许多问题.我连欧拉函数的计算都记 ...
- 10-18 noip提高组模拟赛(codecomb)T1倍增[未填]
T1只想到了找环,> <倍增的思想没有学过,所以看题解看得雨里雾里的(最近真的打算学一下! 题目出的挺好的,觉得noip极有可能出现T1T2T3,所以在此mark 刚开始T1以为是模拟,还 ...
- 10-18 noip提高组模拟赛(codecomb)T2贪心
T2:找min:一直找最小的那个,直到a[i]-x+1小于0,就找次小的,以此类推: 求max,也是一样的,一直到最大的那个,直到次大的比之前最大的大,就找次大的: 这个模拟,可以用上priority ...
- HGOI20180815 (NOIP 提高组模拟赛 day2)
Day 2 rank 11 100+35+30=165 本题是一道数论题,求ax+by=c的正整数对(x,y) x>=0并且y>=0 先说下gcd: 求a,b公约数gcd(a,b) 如gc ...
- 【洛谷】NOIP提高组模拟赛Day2【动态开节点/树状数组】【双头链表模拟】
U41571 Agent2 题目背景 炎炎夏日还没有过去,Agent们没有一个想出去外面搞事情的.每当ENLIGHTENED总部组织活动时,人人都说有空,结果到了活动日,却一个接着一个咕咕咕了.只有不 ...
- 【洛谷】NOIP提高组模拟赛Day1【组合数学】【贪心+背包】【网络流判断是否满流以及流量方案】
U41568 Agent1 题目背景 2018年11月17日,中国香港将会迎来一场XM大战,是世界各地的ENLIGHTENED与RESISTANCE开战的地点,某地 的ENLIGHTENED总部也想派 ...
- noip提高组模拟赛(QBXT)T2
T2count题解 [ 问题描述]: 小 A 是一名热衷于优化各种算法的 OIER,有一天他给了你一个随机生成的 1~n 的排列, 并定 义区间[l,r]的价值为: \[ \huge C_{l,r}= ...
- [LUOGU] NOIP提高组模拟赛Day1
题外话:以Ingress为题材出的比赛好评,绿军好评 T1 考虑枚举第\(i\)个人作为左边必选的一个人,那左边剩余\(i-1\)个人,选法就是\(2^{i-1}\),也就是可以任意选或不选,右侧剩余 ...
- l洛谷 NOIP提高组模拟赛 Day2
传送门 ## T1 区间修改+单点查询.差分树状数组. #include<iostream> #include<cstdio> #include<cstring> ...
随机推荐
- fbterm的配置,纯文本终端显示中文
安装 fbterm sudo apt-get install fbterm 设置普通用户可以执行 fbterm 命令 sudo adduser username video #username为用户名 ...
- 【Shell案例】【wc记录单词长度、for循环和if、awk文本分析工具】7、打印字母数小于8的单词
描述写一个 bash脚本以统计一个文本文件 nowcoder.txt中字母数小于8的单词. 示例:假设 nowcoder.txt 内容如下:how they are implemented and a ...
- Android ViewPager2 + TabLayout + BottomNavigationView
Android ViewPager2 + TabLayout + BottomNavigationView 实际案例 本篇主要介绍一下 ViewPager2 + TabLayout + BottomN ...
- new的函数如果有return
1 function FnA() { return { a: 1 } } 2 function FnB() { return false } 3 function FnC() { return tru ...
- Hadoop如何保证自己的江湖地位?Yarn功不可没
前言 任何计算任务的运行都离不开计算资源,比如CPU.内存等,那么如何对于计算资源的管理调度就成为了一个重点.大数据领域中的Hadoop之所以一家独大,深受市场的欢迎,和他们设计了一个通用的资源管理调 ...
- 异常处理语法结构、yield生成器及其表达式
今日内容回顾 目录 今日内容回顾 异常处理语法结构 异常处理实战应用 生成器对象 自定义range功能 yield冷门用法 yield与return对比 生成器表达式 笔试题 异常处理语法结构 异常处 ...
- Spring IOC官方文档学习笔记(三)之依赖项
1.依赖注入 (1) 依赖注入(DI)的概念:某个bean的依赖项,由容器来负责注入维护,而非我们自己手动去维护,以此来达到bean之间解耦的目的,如下 //情况一:不使用依赖注入 public cl ...
- (已转)Linux基础第六章 信号
6.1 前言 本章简单描述信号.信号是Linux系统中,内核和进程通信的一种方式.如果内核希望打断进程的顺序执行,那么内核会在进程的PCB中记录信号.而当这个进程被分配到CPU,进入执行状态时,首先会 ...
- 每个Java程序员都必须知道的四种负载均衡算法
前言 一般来说,我们在设计系统的时候,为了系统的高扩展性,会尽可能的创建无状态的系统,这样我们就可以采用集群的方式部署,最终很方便的根据需要动态增减服务器数量.但是,要使系统具有更好的可扩展性,除了无 ...
- A. Greatest Convex【Codeforces Round #842 (Div. 2)】
A. Greatest Convex You are given an integer \(k\). Find the largest integer \(x\), where \(1≤x<k\ ...