「NOI十联测」奥义商店
「NOI十联测」奥义商店
若lzz想花费最少的钱,那么显然要选择数目较少的颜色。
先考虑暴力的写法。
每次向两边统计,每个物品要求被买的概率可以由上一个物品推出。
now=1;//now 被买概率 M 选择的颜色的数目
for(int q=1;st+d*q<=n&&q<=cnt[1];++q){
now*=(M-q+1.0)/(n-1-q+1);//当前点被涂上选择的颜色的概率 * 先前的物品也涂上选择的颜色
ans+=val[st+d*q]*now;
}
now=1;
for(int q=1;st-d*q>0&&q<=cnt[1];++q){//同上
now*=(M-q+1.0)/(n-1-q+1);
ans+=val[st-d*q]*now;
}
观察到,当\(2 \leq t\),那么\(M \leq {n \over 2}\),而此时now的衰减极快,大约可以在\(log_2(10^8)\)次数内不再对答案的有贡献(精度问题)。因此可以做到查询复杂度\(o(log)\),修改复杂度\(o(1)\)。
当\(t=1\),颜色只有一种,故只要是在等差序列上的点,都要被选中。
对于\(\sqrt n \leq d\)的情况,可以暴力计算,询问复杂度\(o(\sqrt n)\),修改复杂度\(o(1 )\)。
对于\(\sqrt n \geq d\)的情况,可以对每个d和每个起始点都预处理一遍答案,询问复杂度\(o(1)\),修改复杂度\(o(\sqrt n )\)。
故可以得到时间和空间都为\(o(n \sqrt n)\)的算法。
#include<bits/stdc++.h>
#define rep(q,a,b) for(int q=a,q##_end_=b;q<=q##_end_;++q)
#define dep(q,a,b) for(int q=a,q##_end_=b;q>=q##_end_;--q)
#define mem(a,b) memset(a,b,sizeof a )
#define debug(a) cerr<<#a<<' '<<a<<"___"<<endl
using namespace std;
void in(int &r) {
static char c;
r=0;
while(c=getchar(),c<48);
do r=(r<<1)+(r<<3)+(c^48);
while(c=getchar(),c>47);
}
bool cur1;
const int mn=100005;
int n,m,val[mn];
int sq,sum[330][330];
void get1(int st,int d){
if(d<=sq)printf("%.4lf\n",(double)sum[d][st%d]);
else{
int ans=val[st];
for(int q=1;st+d*q<=n;++q)ans+=val[st+d*q];
for(int q=1;st-d*q>0;++q)ans+=val[st-d*q];
printf("%.4lf\n",(double)ans);
}
}
void get(int col,int st,int d,int M){
double ans=val[st],now=1;
for(int q=1;st+d*q<=n&&q<=M;++q){
if(now<1e-10)break;
now*=(M-q+1.0)/(n-1-q+1);
ans+=val[st+d*q]*now;
}
now=1;
for(int q=1;st-d*q>0&&q<=M;++q){
if(now<1e-10)break;
now*=(M-q+1.0)/(n-1-q+1);
ans+=val[st-d*q]*now;
}
printf("%.4lf\n",ans);
}
void change(int x,int v){
int d=v-val[x];
val[x]=v;
rep(w,1,sq)sum[w][x%w]+=d;
}
bool cur2;
int main(){
// cerr<<(&cur1-&cur2)/1024.0/1024.0;
freopen("lzz.in","r",stdin);
freopen("lzz.out","w",stdout);
in(n),in(m);
rep(q,1,n)in(val[q]);
sq=sqrt(n)+1;
rep(q,1,sq)rep(w,1,n)sum[q][w%q]+=val[w];
int a,b,c,d;
while(m--){
in(a),in(b),in(c);
if(a==1)change(b,c);
else{
in(d);
int M=1e9;
rep(q,1,b)in(a),M=min(a,M);
if(b==1)get1(c,d);
else get(b,c,d,M);
}
}
return 0;
}
「NOI十联测」奥义商店的更多相关文章
- 「NOI十联测」深邃
「NOI十联测」深邃 要使得最大的连通块最小,显然先二分答案. 先固定1结点为根. 对于一个果实,显然是先处理子树中未分配的点,再向外延伸. 每个结点记录一个\(si[]\),表示子树中未分配的点数, ...
- 「NOI十联测」黑暗
「NOI十联测」黑暗 \(n\) 个点的无向图,每条边都可能存在,一个图的权值是连通块个数的 \(m\) 次方,求所有可能的图的权值和.(n≤30000,m≤15) 令\(ans[n][m]\)为n个 ...
- 「NOI十联测」反函数
30pts 令(为1,)为-1: 暴力枚举每个点为起始点的路径,一条路径是合法的当且仅当路径权值和为0且路径上没有出现过负数. 将所有答案算出. 100pts 使用点分治. 要求知道经过重心root的 ...
- HHHOJ #153. 「NOI模拟 #2」Kotomi
抽代的成分远远大于OI的成分 首先把一个点定为原点,然后我们发现如果我们不旋转此时答案就是所有位置的\(\gcd\) 如果要选择怎么办,我们考虑把我们选定的网格边连同方向和大小看做单位向量\(\vec ...
- HHHOJ #151. 「NOI模拟 #2」Nagisa
计算几何板子题(我才没有拷板子的说--) 众所周知,三角形的重心坐标是\((\frac{x_1+x_2+x_3}{3},\frac{y_1+y_2+y_3}{3})\) 然后我们发现如果我们有一个点集 ...
- Solution -「NOI 模拟赛」彩色挂饰
\(\mathcal{Description}\) 给定一个含 \(n\) 个点 \(m\) 条边的简单无向图,设图中最大点双的大小为 \(s\),则保证 \(s\le6\).你将要用 \(k\) ...
- Solution -「NOI 模拟赛」出题人
\(\mathcal{Description}\) 给定 \(\{a_n\}\),求一个 \(\{b_{n-1}\}\),使得 \(\forall x\in\{a_n\},\exists i,j\ ...
- 「洛谷 P1801」黑匣子
好像很久没有更过博客了,因为博主这几周很忙.其实是在搞颓. 题意很难懂,所以就不重复了.其实是懒. 一眼看上去这是个 \(Splay\) 裸题,直接插入一个数,查询区间第 \(K\) 大,但是这样太不 ...
- Diary -「NOI 2021」酱油记
雨幕浓稠 远近一白 是水雾弥漫的天 还是泡沫撑起的海 雨真大呢. 前几天去 ZH 中学集训没啥好记的,就从会合日开始叭. [Day -1] 逃出 ZH,掉入梦麟.( 高中的同学们忘记带 ...
随机推荐
- 一个网关服务性能问题的Dump分析
本篇文章分为三部分,首先简单介绍一下分析的工具Windbg,其次针对一个网关服务性能问题进行逐步刨析,最后针对性能问题的分析总结. 一 Windbg介绍 1.Windbg是个非常强大的调试器,它设计了 ...
- Codeforces 888D: Almost Identity Permutations(错排公式,组合数)
A permutation \(p\) of size \(n\) is an array such that every integer from \(1\) to \(n\) occurs exa ...
- partial write bypass PIE
第一篇博客,请允许我水一下.BUUCTF上的一题:linkctf_2018.7_babypie 检查一下保护机制: 1 Arch: amd64-64-little 2 RELRO: Partial R ...
- 编写Java程序,实现从控制台输入对应个数的整数,输出对输入整数的从大到小显示
编写Java程序,实现从控制台输入对应个数的整数,输出对输入整数的从大到小显示 效果如下: 实现代码: import java.util.Arrays; import java.util.Scanne ...
- WiFi6模块 RW6852-PCIE
RW6852-PCIE是一款高度集成的模块,支持2T2R 802.11ax解决方案,具有MU-MIMO.无线LAN (WLAN) PCI Express网络接口控制器和HS-UART混合接口.它结合了 ...
- netty系列之:netty对SOCKS协议的支持
目录 简介 SocksMessage Socks4Message Socks5Message 总结 简介 SOCKS是一个优秀的网络协议,主要被用来做代理,它的两个主要版本是SOCKS4和SOCKS5 ...
- org.reflections 接口通过反射获取实现类源码研究
org.reflections 接口通过反射获取实现类源码研究 版本 org.reflections reflections 0.9.12 Reflections通过扫描classpath,索引元数据 ...
- 详解nginx的请求限制(连接限制和请求限制)
https://www.jb51.net/article/143682.htm 一,背景 我们经常会遇到这种情况,服务器流量异常,负载过大等等.对于大流量恶意的攻击访问,会带来带宽的浪费,服务器压力, ...
- AP原理与最终一致性 强一致性 弱一致性
转载自:http://www.blogjava.net/hello-yun/archive/2012/04/27/376744.html https://blog.csdn.net/c28905453 ...
- vue - public 引入 <script>报错 Uncaught SyntaxError: Unexpected token '<'
1.现象 原本我是直接在母版引入 <script type="application/javascript" src="static/config.js" ...