省选 模拟赛

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

犯了几个傻逼错。

\(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. Nginx优化与防盗链

    目录: 一.隐藏版本号 二.修改用户与组 三.缓存时间 四.日志切割 五.连接超时 六.更改进程数 七.配置网页压缩 一.隐藏版本号 可以使用 Fiddler 工具抓取数据包,查看 Nginx版本 也 ...

  2. weblogic漏洞分析之CVE-2021-2394

    weblogic漏洞分析之CVE-2021-2394 简介 Oracle官方发布了2021年7月份安全更新通告,通告中披露了WebLogic组件存在高危漏洞,攻击者可以在未授权的情况下通过IIOP.T ...

  3. elementUI 表格 table 的表头错乱问题

    页面中多组件开发时,如果页面中有表格的,table表格头出现表头错乱 // 全局设置1 body .el-table th.gutter{ 2 display: table-cell!importan ...

  4. 自制计算器 v1.1

    之前的v1.0版本功能还不够完善,这个版本一并做了修改. 代码,每个sub表示哪个按钮做了注释. Dim a, temp, ans As Integer Dim op As String Sub sh ...

  5. 整理STC延时函数时遇到的玄学问题

    void Delay { unsigned char i, j; i = 11; j = 190; do { while (--j); } while (--i); } void Delay { un ...

  6. learn git(远程仓库github)

    |由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置: 第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa ...

  7. html jquey的选择器checkbox,select

    1 判断checkbox是否选中 用到 jquery的 is方法 jquery: <div id="divId" class="divTable"> ...

  8. dedecms编辑器不能复制word格式的处理方法

    在word文档中编辑一篇文章,格式段落都整理好后,粘贴到dede编辑器里面却发现,格式都无效了,可能dede有自己的打算,比如这样可以文章字体大小统一,样色统一,整体比较整洁.但是用惯了word编辑文 ...

  9. Linux系列(23) - echo

    作用:打印 格式:echo [选项] [输出内容] 选项:-e :支持反斜线控制的字符转换 前置条件:必须加选项-e才能使用 控制字符 作用 \a 输出警告音 \b 退格符,也就是向左删除键 \n 换 ...

  10. Shell系列(37)- while和until循环

    while循环 只要条件判断式成立则进行循环,并执行循环程序:一旦循环条件不成立,则终止循环 格式 while [ 条件判断式 ] do 程序 done 例子 需求:计算工具,1+2+--100的和 ...