省选 模拟赛

今天考的是一套题目背景和描述会被【数据删除】的模拟赛。

犯了几个傻逼错。

\(T1\) 把两种情况的概率看反了,写的暴力。\(35->5\) pts.

\(T2\) 以为想到了正解,写了一堆树剖线段树甚至还有树上差分,码农一样码了一半发现比暴力的复杂度只有玄学优化了一些,不过可以过两个部分分。\(40\) pts.

\(T3\) 直接输出“infinity”就有20分,但是我稍微挣扎了一下,写了个if else,挣扎失败后 if 没删干净就交了/ll。CE \(20->0\) pts.


省选难度于是要尝试赛后AK。


艹,头一次发现我这么菜,看了一个下午加一个晚上,愣是没改完T1。


update on 21.6.24

T1T2改完了。

暂时不想写题解,放下代码。

两道题分别是T1T2

\(T1\):

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
ll n;ld p;
ld ans1(){
ll t=1;
ld ans=0;
while(t<=n){
double k=double(n/t/2*t)/n+double(max(0LL,n%(t*2)-t))/n;
ans+=2*k*(1-k)*t;
t*=2;
}
return ans;
}
ll a[101],an,k;
ld ans3(ll m,int an){
if(an==1){
if(a[an]==0)return 1.0/n;
else return 2.0/n;
}
ll t=pow(2,an-1);
ld ans=0;
if(a[an]==1){
ans+=double(t)/n*(m+t);
ans+=ans3(m/2,an-1);
}
else{
ans+=double(t)/n*t;
ans+=2*ans3(m/2,an-1);
}
return ans;
}
ld ans2(ll m){
if(m==0)return 0;
memset(a,0,sizeof(a));
an=0,k=m;
while(k){
if(k&1)a[++an]=1;
else a[++an]=0;
k>>=1;
}
ll t=pow(2,an-1);
ld ans=double((t*2-1))/n*(m-t+1)+double(t)/n*t;
if(an>1) ans+=ans3(t-1,an-1);
return ans;
}
signed main(){
scanf("%lld%Lf",&n,&p);
printf("%.6Lf",p*ans2(n-1)+(1-p)*ans1());
return 0;
}

\(T2\):

#include<bits/stdc++.h>
using namespace std;
#define in read()
#define int long long
const int N=300005;
inline int read(){
int p=0,f=1;
char c=getchar();
while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){p=p*10+c-'0';c=getchar();}
return p*f;
}
struct edge{
int v,next;
}e[2*N];
int head[N],en;
void insert(int u,int v){
e[++en].v=v;
e[en].next=head[u];
head[u]=en;
}
int n,q;
int fa[N],deep[N],size[N],dfn[N],df;
void dfs(int p,int f){
size[p]=1;fa[p]=f;deep[p]=deep[f]+1;dfn[p]=++df;
for(int i=head[p];i;i=e[i].next){
int v=e[i].v;
if(v==f)continue;
dfs(v,p);
size[p]+=size[v];
}
}
//segment_tree---------------
#define sum(x) st[x].sum
#define ls(x) st[x].ls
#define rs(x) st[x].rs
int rt[N],tot=1;
struct node{
int sum,ls,rs;
}st[N<<6];
int built(int p,int l,int r){
if(l==r)return p;
int mid=(l+r)>>1;
ls(p)=built(++tot,l,mid);
rs(p)=built(++tot,mid+1,r);
return p;
}
void cover(int p,int pre){
sum(p)=sum(pre);
ls(p)=ls(pre);
rs(p)=rs(pre);
}
void newroot(int x){
rt[x]=++tot;
cover(rt[x],rt[x-1]);
}
void modify(int &now,int pre,int l,int r,int pos,int d){
now=++tot;
cover(now,pre);
sum(now)+=d;
if(l==r&&l==pos)return ;
int mid=(l+r)>>1;
if(pos<=mid)modify(ls(now),ls(now),l,mid,pos,d);
else modify(rs(now),rs(now),mid+1,r,pos,d);
}
int query(int now,int l,int r,int ql,int qr){
if(l>=ql&&r<=qr) return sum(now);
int mid=(l+r)>>1,res=0;
if(ql<=mid)res+=query(ls(now),l,mid,ql,qr);
if(qr>mid)res+=query(rs(now),mid+1,r,ql,qr);
return res;
}
//---------------------------
signed main(){
//freopen("data.in","r",stdin);
//freopen("mine.out","w",stdout);
n=in,q=in;rt[0]=1;
for(int i=1;i<n;i++){
int u=in,v=in;
insert(u,v);
insert(v,u);
}
dfs(1,0); built(1,1,n);
newroot(1);
queue<int> qu;qu.push(1);
int tem=0,temp=1,last=1;df=1;
while(!qu.empty()){
int p=qu.front();qu.pop();
modify(rt[df],rt[df],1,n,dfn[p],size[p]-1);
for(int i=head[p];i;i=e[i].next){
int v=e[i].v;
if(v==fa[p])continue;
qu.push(v);
last++;
}
tem++;
if(tem==temp){
df++;
temp=last;
newroot(df);
}
}
df--; for(int i=1;i<=q;i++){
int p=in,k=in,ans=0;
ans+=min(deep[p]-1,k)*(size[p]-1);
int x=deep[p],y=min(deep[p]+k,df);
if(x<=y&&size[p]-1)
ans+=query(rt[y],1,n,dfn[p]+1,dfn[p]+size[p]-1)-query(rt[x],1,n,dfn[p]+1,dfn[p]+size[p]-1);
printf("%lld\n",ans);
}
return 0;
}

21.6.23 test的更多相关文章

  1. JavaScript高级程序设计(第三版)学习笔记20、21、23章

    第20章,JSON JSON(JavaScript Object Notation,JavaScript对象表示法),是JavaScript的一个严格的子集. JSON可表示一下三种类型值: 简单值: ...

  2. C语言基础:内存 分类: iOS学习 c语言基础 2015-06-10 21:59 23人阅读 评论(0) 收藏

    全局变量:定义在函数之外.(不安全)   局部变量;定义在函数之内. 内存的划分:1栈区   2堆区  3静态区(全局区) 4常量区 5代码区 栈区..静态区.常量区.代码区的数据都是由系统分配和释放 ...

  3. 记录21.07.23 —— Vue.js基础(二)

    Vue基础(二) 过滤器 过滤器作用 全局过滤器 输出结果 私有过滤器 输出结果 把其中一个做点修改 错误信息 自定义指令 全局自定义指令 私有自定义指令 钩子函数 注意:fond-weight是粗细 ...

  4. Android View事件机制 21问21答

    原文: http://www.cnblogs.com/punkisnotdead/p/5179115.html#3358859 1.View的坐标参数 主要有哪些?分别有什么注意的要点? 答:Left ...

  5. [转]Material Design Library 23.1.0的新变化与代码实战

    Design Library出来已经快有一个月了,当时大概看了一下介绍这个新版本变化的译文,内容不多,给我印象最深的就是Percent lib.AppBarLayout 和NavigationView ...

  6. Android学习系列(23)--App主界面实现

    在上篇文章<Android学习系列(22)--App主界面比较>中我们浅略的分析了几个主界面布局,选了一个最大众化的经典布局.今天我们就这个经典布局,用代码具体的实现它. 1.预览图先看下 ...

  7. Gradle sync failed: failed to find Build Tools revision 21.1.2

    从github上下载了一个开源项目到Android Studio 出现以下问题: 下午2:56:05 Gradle sync started下午3:00:11 Gradle sync failed: ...

  8. 21个值得收藏的Javascript技巧

    1  Javascript数组转换为CSV格式 首先考虑如下的应用场景,有一个Javscript的字符型(或者数值型)数组,现在需要转换为以逗号分割的CSV格式文件.则我们可以使用如下的小技巧,代码如 ...

  9. 我的Python成长之路---第八天---Python基础(23)---2016年3月5日(晴)

    socketserver 之前讲道德socket模块是单进程的,只能接受一个客户端的连接和请求,只有当该客户端断开的之后才能再接受来自其他客户端的连接和请求.当然我们也可以通过python的多线程等模 ...

随机推荐

  1. freeswitch编译安装依赖

    ncurses:提供字符界面 zlib:数据压缩 libjpeg:JPEG图片格式数据的解码/编码/其他. lua:lua解释器 libedit:一种编辑操作的库,对一些可以交互操作的场景,或转为了自 ...

  2. 洛谷P1088——火星人(全排列+数学模拟)

    题目描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法.这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学 ...

  3. RestFul的认识与详解

    RestFul :是一种软件架构风格,设计风格,而不是标准.提供了一组设计原则和约束条件. 简单概述: REST -- REpresentational State Transfer 直接翻译:表现层 ...

  4. Kubernetes-Pod介绍(三)-Pod调度

    前言 本篇是Kubernetes第六篇,大家一定要把环境搭建起来,看是解决不了问题的,必须实战. Kubernetes系列文章: Kubernetes介绍 Kubernetes环境搭建 Kuberne ...

  5. linux centos windows服务器修改数据库最大连接数的方法

    1.可查询数据库最大连接数 show variables like '%max_connections%'; 2.修改数据库最大连接数,最大限制上限为16384. 找到数据库配置文件my.cnf,在配 ...

  6. 基于Docker构建企业Jenkins CI平台

  7. html网页乱码

    html乱码原因与网页乱码解决方法   html乱码原因与网页乱码解决方法,浏览器浏览网页内容出现乱码符合解决篇(html中文乱码) 造成html网页乱码原因主要是html源代码内中文字内容与html ...

  8. [转载]让你玩转代码的编辑神器phpstorm功能详解

    转载网址:http://wwwquan.com/show-66-121-1.html phpstorm包含了webstorm的全部功能,更能够支持php代码.PhpStorm是一个轻量级且便捷的PHP ...

  9. HTML 网页开发、CSS 基础语法——十一. CSS常用样式

    文字三属性 1.颜色color 2.字体font-family ① 常用字体 常用的中文字体: 宋体  SimSum 微软雅黑 Microsoft YaHei 常用的英文字体: 如果不设置字体属性,不 ...

  10. P7736-[NOI2021]路径交点【LGV引理】

    正题 题目链接:https://www.luogu.com.cn/problem/P7736 题目大意 有\(k\)层的图,第\(i\)层有\(n_i\)个点,每层的点从上到下排列,层从左到右排列.再 ...