考场

乍一看都不可做

T1 算了半天样例,一直算出来 \(\frac{81}{400}\),直接丢了

T1 推了推发现是求最长连续 \(0\) 的数量,那就是线段树合并加上《玫瑰花精》

T3 完全不会。甚至不知道该状压还是乱搞

先敲了 T1 T3 两个暴力和 T3 完全图+边权相同的部分分,8 点多开始写 T2。结果出奇的顺利,9,00 就过了样例和测速(测速时发现线段树节点数忘 \(\times4\) 了,担心 MLE,换成了 merge 时不新建点的写法)。拍上后决定手模一些小数据,结果第一个就挂了。。。发现答案要和前缀 \(0\) 数+后缀 \(0\) 数取 \(\max\),暴力也没考虑,9.30 加上并过了自己造的小数据。

回头看 T1,还是没有想法。先加了个记忆化,又用分数类输出了一下样例,发现是 \(\frac{11}5\)???一直i疑惑到 10.00。交了T1 T3,发现编译器只有 C++11 gcc 8.2.0 一个选项,担心 T2 被卡常。造了链、菊花、二叉树的满数据,都在 0.3s 跑完了,感觉很稳。

res

rk4 20+100+20

T1 在求 \(\sum w_i\) 时没有模,导致算分母逆元时爆 LL 了,挂 25pts

T3 有完全图但边权不相等情况,挂 10pts

rk1 肖鸣孜 45+100+40

Hunter

考察了对期望的线性性本质的理解

要求的是在第一个猎人之前死的期望猎人数 \(+1\),即 \(\text{E}(\sum_{i=2}^nA_i)+1\),等于 \(\sum_{i=2}^n\text{E}(A_i)+1\),而每个猎人在第一个猎人之前死的期望是 \(\frac{w_i}{w_1+w_i}\times1\)。

code
const int N = 1e5+5, mod = 998244353;
int n;
LL a[N]; LL ans; LL Pow(LL x,LL y=mod-2)
{ LL res=1; for(;y;y>>=1,x=x*x%mod)if(y&1)res=res*x%mod; return res; } signed main() {
read(n);
For(i,1,n) read(a[i]);
For(i,2,n) ans = (ans + a[i] * Pow(a[1]+a[i])) %mod;
write((ans+1)%mod);
return iocl();
}

Defence

线段树合并+线段树求最长连续 \(0\) 数

考场代码
const int N = 1e5+5;
int n,m,q;
vector<int> to[N]; int rt[N],pre[N],suf[N],ans[N]; #define ls(u) t[u].ch[0]
#define rs(u) t[u].ch[1]
#define mid ((l+r)>>1)
int ind;
struct Node { int l,r; int len() { return r-l-1; } };
bool operator < (Node x,Node y) { return x.len() < y.len(); }
struct Seg { int ch[2],ll,rr; Node mx; } t[N*4*18];
void up(int u) {
t[u].mx = max(t[ls(u)].mx,t[rs(u)].mx);
if( ls(u) && rs(u) ) ckmax(t[u].mx,Node{t[ls(u)].rr,t[rs(u)].ll});
t[u].ll = t[ ls(u)?ls(u):rs(u) ].ll, t[u].rr = t[ rs(u)?rs(u):ls(u) ].rr;
}
void insert(int &u,int l,int r,int p) {
if( !u ) u = ++ind;
if( l == r ) {
t[u].ll = t[u].rr = p, t[u].mx = {p,p};
return;
}
if( p <= mid ) insert(ls(u),l,mid,p);
else insert(rs(u),mid+1,r,p);
up(u);
}
int merge(int u,int v,int l,int r) {
if( !u || !v ) return u | v;
if( l == r ) return u;
ls(u) = merge(ls(u),ls(v),l,mid), rs(u) = merge(rs(u),rs(v),mid+1,r);
up(u); return u;
}
#undef ls
#undef rs
#undef mid void dfs(int u,int fa) {
for(int v : to[u]) if( v != fa ) {
dfs(v,u);
rt[u] = merge(rt[u],rt[v],0,m);
ckmin(pre[u],pre[v]), ckmax(suf[u],suf[v]);
}
if( suf[u] ) ans[u] = max(t[rt[u]].mx.len(),pre[u]-0-1+m-suf[u]-1);
else ans[u] = -1;
} signed main() {
// printf("%d\n",sizeof(t));
// return 0;
// freopen("b1.in","r",stdin);
// freopen("b1.out","w",stdout);
read(n,m,q); ++m;
For(i,1,n-1) {
int x,y; read(x,y);
to[x].pb(y), to[y].pb(x);
}
For(i,1,n) pre[i] = m, insert(rt[i],0,m,0), insert(rt[i],0,m,m);
while( q-- ) {
int x,y; read(x,y);
insert(rt[x],0,m,y);
ckmin(pre[x],y), ckmax(suf[x],y);
}
dfs(1,0);
For(i,1,n) write(ans[i]);
return iocl();
}

Connect

本质是要保留一条 \(1\) 到 \(n\) 的链,其他点与这条链只有一个交点,求删去边的最小权值和。

\(n\) 很小,考虑状压 DP。

设 \(f[s,i]\) 为当前考虑过的点集为 \(s\),链的结尾为 \(i\) 的保留,每次考虑添加一个点到链中或找一个联通块,使这个联通块中的点与这条链的交点为 \(i\)。具体看代码

code
const int N = 16;
int n,m;
int w[N][N]; int all,sum[1<<N],g[1<<N][N],f[1<<N][N]; signed main() {
read(n,m); all = (1<<(n--))-1;
For(i,1,m) {
int x,y,z; read(x,y,z); --x,--y;
w[x][y] = w[y][x] = z;
}
For(s,1,all) For(i,0,n) if( s & (1<<i) ) For(j,i+1,n) if( s & (1<<j) )
sum[s] += w[i][j]; // sum[s]: 集合s中内部连边的和
For(s,1,all) For(i,0,n) For(j,0,n) if( s & (1<<j) ) g[s][i] += w[i][j];
// g[s,i]: 集合s与点i连边的和
memset(f,0xcf,sizeof f);
f[1][0] = 0;
For(s,1,all) For(i,0,n) if( f[s][i] >= 0 ) {
For(j,0,n) if( !(s & (1<<j)) ) // 点j接到链上
ckmax(f[s|(1<<j)][j],f[s][i]+w[i][j]);
for(int ss = all^s, t = ss; t; t = (t-1)&ss) // 联通块t接到i上
ckmax(f[s|t][i],f[s][i]+g[t][i]+sum[t]);
}
write(sum[all]-f[all][n]);
return iocl();
}

20210808 Hunter,Defence,Connect的更多相关文章

  1. 8.8考试总结(NOIP模拟33)[Hunter·Defence·Connect]

    无法逃避的是自我,而无法挽回的是过去. 前言 还算可以,不过 T1 少 \(\bmod\) 了一下挂了 25pts,T2 没看清题面挂了 27pts. 下回注意吧.. T1 Hunter 解题思路 感 ...

  2. Connect() 2016 大会的主题 ---微软大法好

    文章首发于微信公众号"dotnet跨平台",欢迎关注,可以扫页面左面的二维码. 今年 Connect 大会的主题是 Big possibilities. Bold technolo ...

  3. “.Net 社区虚拟大会”(dotnetConf) 2016 Day 1 Keynote: Scott Hunter

    “.Net 社区虚拟大会”(dotnetConf) 2016 今天凌晨在Channel9 上召开,在Scott Hunter的30分钟的 Keynote上没有特别的亮点,所讲内容都是 微软“.Net社 ...

  4. IdentityServer4 使用OpenID Connect添加用户身份验证

    使用IdentityServer4 实现OpenID Connect服务端,添加用户身份验证.客户端调用,实现授权. IdentityServer4 目前已更新至1.0 版,在之前的文章中有所介绍.I ...

  5. 2003-Can't connect to mysql server on localhost (10061)

    mysql数据库出现2003-Can't connect to mysql server on localhost (10061)问题 解决办法:查看wampserver服务器是否启动,如果没有启动启 ...

  6. Error connecting to database [Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)]

    参照 http://stackoverflow.com/questions/4448467/cant-connect-to-local-mysql-server-through-socket-var- ...

  7. HTTP Method详细解读(`GET` `HEAD` `POST` `OPTIONS` `PUT` `DELETE` `TRACE` `CONNECT`)

    前言 HTTP Method的历史: HTTP 0.9 这个版本只有GET方法 HTTP 1.0 这个版本有GET HEAD POST这三个方法 HTTP 1.1 这个版本是当前版本,包含GET HE ...

  8. IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API

    IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...

  9. Connect to the DSP on C6A8168/DM8168/DM8148 using CCS

    转自ti-wiki  这份wiki,我曾经就收藏过,但是没有加以重视,以至于绕了一大圈的ccs开发环境的配置,现在正式收藏于自己的博客中...总结良多啊 Connecting to DSP on C6 ...

随机推荐

  1. 修改Eureka的metadata脚本

    最近研究了一下Spring Cloud的灰度发布, 发现方法真是多. 这里先提供一个修改Eureka注册中心里的instance实例的metadata的脚本, 可以方便地用来测试效果. 使用举例: s ...

  2. Salesforce Integration 概览(三) Remote Process Invocation—Fire and Forget(远程进程调用-发后即弃)

    本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 我们在上一篇讲了远 ...

  3. SpringBoot系列——动态定时任务

    前言 定时器是我们项目中经常会用到的,SpringBoot使用@Scheduled注解可以快速启用一个简单的定时器(详情请看我们之前的博客<SpringBoot系列--定时器>),然而这种 ...

  4. Spring学习笔记-Hello Spring

    实现原理 采用XML方式配置Bean的时候,Bean的定义和实现分离的,采用注解的方式可以将两者合为一体,Bean的定义信息直接以注解形式定义在实现类中,从而实现了零配置. 控制反转是一种通过描述(X ...

  5. Java基础(一):I/O多路复用模型及Linux中的应用

    IO多路复用模型广泛的应用于各种高并发的中间件中,那么区别于其他模式他的优势是什么.其核心设计思想又是什么.其在Linux中是如何实现的? I/O模型 I/O模型主要有以下五种: 同步阻塞I/O:I/ ...

  6. i春秋-Phone number(union注入+hex转码)

    记一道union注入语句转十六进制的注入题. 这个网站的基本功能就是可以找出跟你用户名相同的注册的人数. 注册登录给了两个显位. 点击check可以显示出有多少人和你用户名相同. 同时在这个页面的源代 ...

  7. 有赞Android实习五面都挂了,复习半月再战,转拿腾讯offer!

    缘起 为了有赞的面试准备了半个月的样子,当时还投了美团.字节.滴滴.京东,目的只有一个,就是要进大厂,但是只有有赞扛过了一面,其他都是一面就挂了. 前三面都自我感觉良好,以为能稳拿offer的,没想到 ...

  8. C# 10 完整特性介绍

    前言 开头防杠:.NET 的基础库.语言.运行时团队从来都是相互独立各自更新的,.NET 6 在基础库.运行时上同样做了非常多的改进,不过本文仅仅介绍语言部分. 距离上次介绍 C# 10 的特性已经有 ...

  9. JVM的GC机制

    JVM的GC机制 1. 什么对象会被回收 引用计数法:如果一个对象被引用一次,则记录引用次数加一,如果引用取消,则减一,当减到0时,需要被回收. 问题:循环引用,A引用B,B引用A,除此之外,已经无法 ...

  10. msp432搭建平衡小车(二)

    前言 上一节掌握了使用pwm驱动电机,接下来介绍如何使用msp432读取mpu6050数据 正文 首先我们得知道mpu6050通信方式,由于mpu6050只能用i2c通信,所以学会使用msp432的i ...