JZOJ 2022.02.26【提高A组】模拟
比赛总结
考场 \(T1,T2\) 思想切了
然而。。。
\(\text{T1}\) 飞行棋
当然要 \(dp\),然而发现后六格有后效性
姑且设 \(f_i\) 表示从第 \(i\) 格到终点的期望次数
那么如果成功特殊处理后六格,就可以倒着 \(dp\) 了
答案就是 \(f_0+\frac{1}{p_6}\)
考虑起飞的期望,有 \(x = p_6+(1-p_6)(x+1)\)
解得 \(x=\frac{1}{p_6}\)
那问题就落在处理六格格子上
其实也可以列出五元一次方程组,高斯消元即可
注意:判无解!
考场因为这个只剩 \(50\) (多测竟然能有 \(50pts\) !)
\(\text{Code}\)
#include <cstdio>
#include <iostream>
#define RE register
#define IN inline
using namespace std;
double p[9], f[59], a[7][7];
IN void GaoSi()
{
for(RE int i = 1; i <= 5; i++)
for(RE int j = 1; j <= 6; j++) a[i][j] = 0;
for(RE int i = 1; i <= 5; i++)
{
for(RE int j = 1; j <= 6; j++)
{
int k = i + j;
if (k == 6) continue;
if (k > 6) k = 12 - k;
a[i][k] += p[j];
}
a[i][i] -= 1, a[i][6] = -1;
}
int n = 5;
for(RE int i = 1; i <= n; i++)
{
for(RE int j = i; j <= n; j++)
if (a[i][j] != 0)
{
for(RE int k = 1; k <= n + 1; k++) swap(a[i][k], a[j][k]);
break;
}
for(RE int j = i + 1; j <= n + 1; j++) a[i][j] /= a[i][i];
a[i][i] = 1.0;
for(RE int j = 1; j <= n; j++)
if (i ^ j)
{
double p = a[j][i];
for(RE int k = 1; k <= n + 1; k++) a[j][k] -= a[i][k] * p;
}
}
}
int main()
{
int T; scanf("%d", &T);
for(; T; --T)
{
for(RE int i = 1; i <= 6; i++) scanf("%lf", &p[i]);
if (p[6] == 0 || p[6] + p[3] == 1){printf("T_T\n"); continue;}
GaoSi();
for(RE int i = 0; i <= 56; i++) f[i] = 0;
for(RE int i = 1; i <= 5; i++) f[50 + i] = a[i][6];
for(RE int i = 50; i >= 0; i--)
for(RE int j = 1; j <= 6; j++)
{
int k = i + j;
if (k == 18) k = 30;
if (k % 4 == 2 && k <= 46) k += 4;
if (k == 18) k = 30;
f[i] += p[j] * (f[k] + 1);
}
printf("%.8lf\n", f[0] + 1 / p[6]);
}
}
\(\text{T2}\) 大山王国的科举考试
看到数据范围就知道要发现一些东西
考虑 \(p\) 很小的时候,可以预处理模每个 \(p\) 下的答案
\(p\) 很大时,可以枚举 \(p\) 的倍数 \(K\),找数值范围在 \([K,K+p-1]\) 中的最大值,主席树即可
注意到时间和空间限制,可以平衡规划一下
又注意到数据范围有一档 \([34,1000]\) 不妨就取这个
然而又注意到题目范围有 \(p >= 2\)
于是可以节省空间把若干棵线段树的第 \(0,1\) 棵用上
于是光荣 \(45pts\) ?!!!
艹,数据有 \(p_i = 1\) !!!!
感谢!!!
\(\text{Code}\)
#include <cstdio>
#include <iostream>
#define RE register
#define IN inline
using namespace std;
const int N = 1e6 + 5;
int n, q, dch = 32, a[N], rt[N];
IN void read(int &x)
{
x = 0; char ch = getchar();
for(; !isdigit(ch); ch = getchar());
for(; isdigit(ch); x = (x<<3)+(x<<1)+(ch^48), ch = getchar());
}
struct Segment{
short tr[N * 4];
void build(int p, int l, int r, int k)
{
if (l == r) return tr[p] = a[l] % k, void();
int mid = l + r >> 1;
build(p << 1, l, mid, k), build(p << 1 | 1, mid + 1, r, k);
tr[p] = max(tr[p << 1], tr[p << 1 | 1]);
}
int Query(int p, int l, int r, int x, int y)
{
if (x <= l && r <= y) return tr[p];
int mid = l + r >> 1, res = 0;
if (x <= mid) res = Query(p << 1, l, mid, x, y);
if (y > mid) res = max(res, Query(p << 1 | 1, mid + 1, r, x, y));
return res;
}
}T[31];
struct Chairman{
int sum[N * 13], ls[N * 13], rs[N * 13], size;
void insert(int &p, int pre, int l, int r, int x)
{
sum[p = ++size] = sum[pre] + 1, ls[p] = ls[pre], rs[p] = rs[pre];
if (l == r) return;
int mid = l + r >> 1;
if (x <= mid) insert(ls[p], ls[pre], l, mid, x);
else insert(rs[p], rs[pre], mid + 1, r, x);
}
int Query(int p, int pre, int l, int r, int x)
{
if (sum[p] - sum[pre] == 0) return -1;
if (l == r) return l;
int mid = l + r >> 1, res = -1;
if (x > mid && sum[rs[p]] - sum[rs[pre]]) res = Query(rs[p], rs[pre], mid + 1, r, x);
if (res == -1 && sum[ls[p]] - sum[ls[pre]]) res = Query(ls[p], ls[pre], l, mid, x);
return res;
}
}C;
int main()
{
read(n), read(q);
for(RE int i = 1; i <= n; i++) read(a[i]), C.insert(rt[i], rt[i - 1], 0, 1000, a[i]);
for(RE int j = 2; j < dch; j++) T[j - 2].build(1, 1, n, j);
for(RE int p, l, r, ans; q; --q)
{
read(l), read(r), read(p), ++l, ++r, ans = 0;
if (p < 2){printf("0\n"); continue;}
if (p < dch) printf("%d\n", T[p - 2].Query(1, 1, n, l, r));
else{
for(RE int j = 0; j <= 1000; j += p)
ans = max(ans, C.Query(rt[r], rt[l - 1], 0, 1000, min(j + p - 1, 1000)) - j);
printf("%d\n", ans);
}
}
}
JZOJ 2022.02.26【提高A组】模拟的更多相关文章
- JZOJ 100029. 【NOIP2017提高A组模拟7.8】陪审团
100029. [NOIP2017提高A组模拟7.8]陪审团 Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits Got ...
- JZOJ 5818. 【NOIP提高A组模拟2018.8.15】 做运动
5818. [NOIP提高A组模拟2018.8.15] 做运动 (File IO): input:running.in output:running.out Time Limits: 2000 ms ...
- JZOJ 5812. 【NOIP提高A组模拟2018.8.14】 区间
5812. [NOIP提高A组模拟2018.8.14] 区间 (File IO): input:range.in output:range.out Time Limits: 1000 ms Memo ...
- JZOJ 4732. 【NOIP2016提高A组模拟8.23】函数
4732. [NOIP2016提高A组模拟8.23]函数 (Standard IO) Time Limits: 1500 ms Memory Limits: 262144 KB Detailed ...
- JZOJ 5328. 【NOIP2017提高A组模拟8.22】世界线
5328. [NOIP2017提高A组模拟8.22]世界线 (File IO): input:worldline.in output:worldline.out Time Limits: 1500 m ...
- JZOJ 5329. 【NOIP2017提高A组模拟8.22】时间机器
5329. [NOIP2017提高A组模拟8.22]时间机器 (File IO): input:machine.in output:machine.out Time Limits: 2000 ms M ...
- JZOJ 5307. 【NOIP2017提高A组模拟8.18】偷窃 (Standard IO)
5307. [NOIP2017提高A组模拟8.18]偷窃 (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Description ...
- JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林 (Standard IO)
5286. [NOIP2017提高A组模拟8.16]花花的森林 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Descript ...
- JZOJ 5305. 【NOIP2017提高A组模拟8.18】C (Standard IO)
5305. [NOIP2017提高A组模拟8.18]C (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description ...
- [jzoj 5781]【NOIP提高A组模拟2018.8.8】秘密通道 (最短路)
传送门 Description 有一副nm的地图,有nm块地,每块是下列四种中的一种: 墙:用#表示,墙有4个面,分别是前面,后面,左面,右面. 起点:用C表示,为主角的起点,是一片空地. 终点:用F ...
随机推荐
- 在CentOS编译Git源码
Git 是一个免费的开源分布式版本控制系统,旨在处理从小到小到的所有内容 具有速度和效率的超大型项目. Git易于学习,占用空间很小,性能快如闪电. 它超越了Subversion,CVS,Perfor ...
- vue3响应式原理以及ref和reactive区别还有vue2/3生命周期的对比,第二天
前言: 前天我们学了 ref 和 reactive ,提到了响应式数据和 Proxy ,那我们今天就来了解一下,vue3 的响应式 在了解之前,先复习一下之前 vue2 的响应式原理 vue2 的响应 ...
- 【每日一题】【动态规划】2022年2月22日-NC59 矩阵的最小路径和
描述 给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和. 例如:当输入[[1,3,5,9], ...
- 【Java EE】Day12 XML、约束(DTD、Schema)、解析方式、Jsoup、选择器(Selector、XPath)
一.XML介绍 1.概述 Extensible Markup Language--可扩展标记语言 标记语言 :标签构成 可扩展:可以自定义标签 2.功能 存储数据 作为配置文件使用 作为数据载体在网络 ...
- <五>function的实现原理
类模版std::function是一种通用.多态的函数封装.std::function的实例可以对任何可以调用的目标实体进行存储.复制.和调用操作,这些目标实体包括普通函数.Lambda表达式.函数指 ...
- Java 中的接口还可以这样用,你知道吗?
Java 程序员都知道要面向接口编程,那 Java 中的接口除了定义接口方法之外还能怎么用你知道吗?今天阿粉就来带大家看一下 Java 中的接口还可以有哪些用法. 基本特性 我们先看一下接口的基本特性 ...
- SpringBoot内置tomcat启动过程及原理
作者:李岩科 1 背景 SpringBoot 是一个框架,一种全新的编程规范,他的产生简化了框架的使用,同时也提供了很多便捷的功能,比如内置 tomcat 就是其中一项,他让我们省去了搭建 tomca ...
- 自研ORM框架 实现类似EF Core Include 拆分查询 支持自定义条件、排序、选择
Baozi, I'm Mr.Zhong I like to brush TikTok, I know that anchors like to call it that, haha!Recently, ...
- 基于SqlSugar的开发框架循序渐进介绍(23)-- Winform端管理系统中平滑增加对Web API对接的需求
在前面随笔介绍的基于SqlSugar的WInform端管理系统中,数据提供者是直接访问数据库的方式,不过窗体界面调用数据接口获取数据的时候,我们传递的是标准的接口,因此可扩展性比较好.我曾经在随笔&l ...
- python3使用OCR识别图片
放假三天,闲来无事,想学下python爬虫.本想跟着网上教程操作一遍,奈何安装使用过程中出现一堆问题,并且在网上搜了一堆复制黏贴的答案,关键都不能起作用,最后终于找到一篇生效,为了以后不至于再经历这种 ...