1.平面上每次加入直角边平行于坐标轴的等腰直角三角形,每次询问某个点被覆盖了多少次。

大常数算法:O(nlog^2)

 #include<bits/stdc++.h>
using namespace std;
const int maxn=3E5+;
int n,q;
inline int read()
{
char ch=getchar();
while(!isdigit(ch))ch=getchar();
int x=ch-'';
ch=getchar();
while(isdigit(ch)){x=x*+ch-'';ch=getchar();}
return x;
}
int G[];
inline void write(int x)
{
int g=;
do{G[++g]=x%;x/=;}while(x);
for(int i=g;i>=;--i)putchar(G[i]+'');putchar('\n');
}
//////////////////////////////////////////////////////////////////////////////////////// splay
int t[],fa[],val[],sum[],son[][],cnt[],TOT;
struct Splay
{
int root;
inline void update(int x)
{
sum[x]=sum[son[x][]]+sum[son[x][]]+cnt[x];
}
inline void rotate(int x)
{
int y=fa[x];
int c=son[y][]==x;
fa[x]=fa[y];
son[y][!c]=son[x][c];
if(son[x][c])
fa[son[x][c]]=y;
if(son[fa[y]][]==y)
son[fa[y]][]=x;
else
son[fa[y]][]=x;
son[x][c]=y;
fa[y]=x;
update(y);
update(x);
if(y==root)
root=x;
}
inline void splay(int x)
{
if(x==root)
return;
while(true)
{
int y=fa[x];
if(y==)
break;
if(y==root)
{
rotate(x);
break;
}
if((son[fa[y]][]==y)==(son[y][]==x))
rotate(y),rotate(x);
else
rotate(x),rotate(x);
}
}
inline void insert(int x)
{
if(root==)
{
root=++TOT;
sum[root]=cnt[root]=;
val[root]=x;
return;
}
int pos=root;
while(true)
{
++sum[pos];
if(val[pos]==x)
{
++cnt[pos];
break;
}
if(x<val[pos])
{
if(son[pos][]==)
{
son[pos][]=++TOT;
sum[TOT]=cnt[TOT]=;
val[TOT]=x;
fa[TOT]=pos;
break;
}
pos=son[pos][];
}
else
{
if(son[pos][]==)
{
son[pos][]=++TOT;
sum[TOT]=cnt[TOT]=;
val[TOT]=x;
fa[TOT]=pos;
break;
}
pos=son[pos][];
}
}
// splay(pos);
}
inline int askSmaller(int x)// how many numbers are <= x
{
int ans=;
int pos=root;
while(pos)
{
if(x<val[pos])
pos=son[pos][];
else
{
ans+=sum[son[pos][]]+cnt[pos];
pos=son[pos][];
}
}
return ans;
}
inline int askBigger(int x)// how many numbers are >= x
{
int ans=;
int pos=root;
while(pos)
{
if(x>val[pos])
pos=son[pos][];
else
{
ans+=sum[son[pos][]]+cnt[pos];
pos=son[pos][];
}
}
return ans;
}
void out()
{
cout<<root<<endl;
cout<<"FA :";for(int i=;i<=TOT;++i)cout<<fa[i]<<" ";cout<<endl;
cout<<"SUM :";for(int i=;i<=TOT;++i)cout<<sum[i]<<" ";cout<<endl;
cout<<"VAl :";for(int i=;i<=TOT;++i)cout<<val[i]<<" ";cout<<endl;
cout<<"SON :";for(int i=;i<=TOT;++i)cout<<son[i][]<<" ";cout<<endl;
cout<<" :";for(int i=;i<=TOT;++i)cout<<son[i][]<<" ";cout<<endl;
}
};
////////////////////////////////////////////////////////////////////////////////////////
struct Segment
{
Splay T[maxn*];
inline void add(int L,int R,int l,int r,int x,int num)
{
if(L<=l&&r<=R)
{
T[num].insert(x);
return;
}
int mid=(l+r)>>;
if(R<=mid)
add(L,R,l,mid,x,num<<);
else if(mid<L)
add(L,R,mid+,r,x,num<<|);
else
add(L,R,l,mid,x,num<<),add(L,R,mid+,r,x,num<<|);
}
inline int askSmaller(int l,int r,int pos,int x,int num)// <=
{
if(l==r)
return T[num].askSmaller(x);
int mid=(l+r)>>;
if(pos<=mid)
return askSmaller(l,mid,pos,x,num<<)+T[num].askSmaller(x);
else
return askSmaller(mid+,r,pos,x,num<<|)+T[num].askSmaller(x);
}
inline int askBigger(int l,int r,int pos,int x,int num)// >=
{
if(l==r)
return T[num].askBigger(x);
int mid=(l+r)>>;
if(pos<=mid)
return askBigger(l,mid,pos,x,num<<)+T[num].askBigger(x);
else
return askBigger(mid+,r,pos,x,num<<|)+T[num].askBigger(x);
}
}T[];
int main()
{
freopen("frontier.in","r",stdin);
freopen("frontier.out","w",stdout);
ios::sync_with_stdio(false);
int useless=read();
n=read(),q=read();
while(q--)
{
int opt=read();
if(opt==)
{
opt=read();
int x=read(),y=read(),z=read();
if(opt==)
{
T[].add(y,y+z,,n,x+y+z,);
T[].add(y,y+z,,n,x-,);
}
else if(opt==)
{
T[].add(y-z,y,,n,x-(y-z),);
T[].add(y-z,y,,n,x-,);
}
else if(opt==)
{
T[].add(y,y+z,,n,x-(y+z),);
T[].add(y,y+z,,n,x+,);
}
else
{
T[].add(y-z,y,,n,x+y-z,);
T[].add(y-z,y,,n,x+,);
}
}
else
{
int x=read(),y=read();
int ans1=T[].askBigger(,n,y,x+y,)-T[].askBigger(,n,y,x,);
int ans2=T[].askBigger(,n,y,x-y,);
int ans3=T[].askSmaller(,n,y,x-y,)-T[].askSmaller(,n,y,x,);
int ans4=T[].askSmaller(,n,y,x+y,);
write(ans1+ans2+ans3+ans4);
}
}
return ;
}

离线做法:还没写


2.

    小L 的治疗总共分为N 个阶段,在第i 个阶段,小L 可以做出如下选择:
1.施放治愈法术,为永恒之树恢复xi + S 点生命力
2.为法杖注入能量,令法术强度S 增加yi
3.吟唱圣歌,召唤zi只木精灵
在每个阶段结束时,每只木精灵会使得法术强度S增加1
请帮助小L 计算在N个阶段结束后,能够为永恒之树恢复的最大生命力。
n <= 80

简单题。n^4

 #include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
const ll inf=1E15;
ll f[][][*];
ll n,a[],b[],c[];
inline ll max(ll x,ll y)
{
return x>y?x:y;
}
inline void U(ll&x,ll y)
{
x=max(x,y);
}
inline void solve()
{
cin>>n;
for(
int i=;i<=n;++i)
cin>>a[i]>>b[i]>>c[i];
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
for(int k=;k<=n*n;++k)
f[i][j][k]=-inf;
f[n][][]=;
f[n][][]=a[n];
for(int i=n;i>=;--i)
{
for(int j=;j<=n;++j)
{
for(int k=;k<=n*n;++k)
{
U(f[i-][j+][j+k],f[i][j][k]+a[i-]);
U(f[i-][j][j+k],f[i][j][k]+b[i-]*j);
U(f[i-][j][j+k],f[i][j][k]+c[i-]*(j+k));
}
}
}
ll ans=;
for(int i=;i<=n;++i)
for(int j=;j<=n*n;++j)
ans=max(ans,f[][i][j]);
cout<<ans<<endl;
}
int main()
{
freopen("fortune.in","r",stdin);
freopen("fortune.out","w",stdout);
ios::sync_with_stdio(false);
int useless,T;
cin>>useless>>T;
while(T--)
solve();
return ;
}

3.

    在小L 的努力下,永恒之树已经恢复了生命力。
渐渐恢复元气的X 国将进行一次占卜仪式,在仪式中,小L 将取下一段永恒之树的树枝。这里,我们将一段树枝抽象成
一张N个点,M 条边的无向图,恢复了生命力的永恒之树已经脱离了普通的树的范畴,但仍然具备一些树的特性,譬如每条边
都只在至多一个简单环中出现。
小L 将对取下的树枝使用分解魔法,此后,树枝的每一个节点都会在一个时辰内随机的一个时刻,连同其连出去的边一
起被分解。在被分解的瞬间,每个节点会释放出等同于当时还与其连通的节点数量的能量,将这些能量求和,便得到了X 国的
气运。
现在,小L 想要知道,X 国的气运期望会是多少。
请求出X 国气运的期望对998244353 取模的结果。

  

  

即求一个仙人掌随机点分治的期望复杂度。

若仙人掌是一棵树,考虑一对点之间的贡献。即x对y产生贡献,即x在被选中前始终与y联通的概率,为$\frac{1}{dist(x,y)}$,dist为两点之间的点的个数。

[校内训练20_01_17]ABC的更多相关文章

  1. [校内训练20_01_22]ABC

    1.给出序列A,求序列B,使得bi|ai,lcm(b1,b2,...,bn)=lcm(a1,a2,...,an)且字典序最小. 可以发现,对于某个质数p,它有一个最大的次数k,将pk放在尽可能靠后且能 ...

  2. [校内训练20_01_20]ABC

    1.问有多少个大小为N的无标号无根树,直径恰好为L.$N,L \leq 200$ 2.问一个竞赛图中有多少个长度为3.4.5的环.$N \leq 2000$ 3.给出一些直线和单个点A,问这些直线的交 ...

  3. [校内训练20_01_19]ABC

    1.SB题 2.有n个点,m条边,每次加入一条边,你要挑出一些边,使得形成的图每个点度数都为奇数,且最长的边最短. 3.给一个N次多项式,问有多少个质数在任意整数处的点值都是p的倍数,输出它们.$N ...

  4. [4.14校内训练赛by hzwer]

    来自FallDream的博客,未经允许,请勿转载,谢谢. hzwer又出丧题虐人 4道noi....        很奇怪 每次黄学长出题总有一题我做过了. 嗯题目你们自己看看呗 好难解释 ----- ...

  5. [2017.4.7校内训练赛by hzwer]

    来自FallDream的博客,未经允许,请勿转载,谢谢. 报警啦.......hzwer又出丧题虐人啦..... 4道ctsc...有一道前几天做过了,一道傻逼哈希还wa了十几次,勉强过了3题..我好 ...

  6. [3.24校内训练赛by hzwer]

    来自FallDream的博客,未经允许,请勿转载,谢谢. ----------------------------------------------------------------------- ...

  7. 19_04_19校内训练[Game]

    题意 给出n,等概率地生成一个1~n的数列.现在有n个人从左到右站成一排,每个人拿有当前数列位置上的数字,并且一开始都不知道数字是多少(但知道n是多少).从左到右让每个人进行如下选择: 1.选择保留自 ...

  8. 19_04_02校内训练[deadline]

    题意 给出一个二分图,左边为A集合,右边为B集合,要求把A集合中每一个点染为黑白两色中的一种,B集合中的颜色已定.染色后对于原本相邻且颜色相同的点,建立新的二分图,即得到了两个新的二分图,它们是独立的 ...

  9. 平面图转对偶图&19_03_21校内训练 [Everfeel]

    对于每个平面图,都有唯一一个对偶图与之对应.若G‘是平面图G的对偶图,则满足: G'中每一条边的两个节点对应着G中有公共边的面,包括最外部无限大的面. 直观地讲,红色标出来的图就是蓝色标出的图的对偶图 ...

随机推荐

  1. JavaScript的bind方法

    bind的机制 var foo = function(){} var bar = foo; console.log(foo === bar) //true /*-------------------- ...

  2. springcloud玩转单点登录【oauth】

    随着公司项目的庞大,单点登录变得尤为重要,那么怎么实现单点登录,下面已oauth为标准实现单点登录. [特别鸣谢:魔乐科技,附上官网:www.mldn.cn] 1:项目组织结构 本项目为oAuth修改 ...

  3. 洛谷$P4040\ [AHOI2014/JSOI2014]$宅男计划 贪心

    正解:三分+贪心 解题报告: 传送门$QwQ$ 其实很久以前的寒假就考过了,,,但那时候$gql$没有好好落实,就只写了个二分,并没有二分套三分,就只拿到了$70pts$ #include <b ...

  4. $CH$ $0x50$ & $0x51$ 做题记录

    [X]$Mr.Young's\ Picture\ Permutations$ 前面这儿写了挺多道辣,,,懒得写辣$QAQ$ (后面所有同上都是同这个$QwQ$ [X]$LCIS$ 做过了,看这儿 $u ...

  5. MySQL基础篇(04):存储过程和视图,用法和特性详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.存储过程 1.概念简介 存储程序是被存储在服务器中的组合SQL语句,经编译创建并保存在数据库中,用户可通过存储过程的名字调用执行.存储过程 ...

  6. HDU3709 Balanced Number 题解 数位DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3709 题目大意: 求区间 \([x, y]\) 范围内"平衡数"的数量. 所谓平衡 ...

  7. docker练习-容器和服务

    使用定义容器 Dockerfile Dockerfile定义容器内环境中发生的事情.对网络接口和磁盘驱动器等资源的访问在此环境中进行虚拟化,该环境与系统的其他部分隔离,因此您需要将端口映射到外部世界, ...

  8. Linux 踩坑记

    # Linux docker内部执行apt-get install 报错 在某个项目中使用docker构建mysql容器后想要在容器中修改mysql的配置文件,使用vim后提示 bash: vim: ...

  9. rsync 服务介绍及相关实验

    一.rsync 简介 rsync 是类 unix 系统下的数据镜像备份工具.一款支持快速完全备份和增量备份的工具,支持本 地复制,远程同步等,类似于 scp 命令:rsync 命令在同步文件之前要先登 ...

  10. 基于 HTML5 + WebGL 的3D无人机 展示

    前言 近年来,无人机的发展越发迅速,既可民用于航拍,又可军用于侦察,涉及行业广泛,也被称为“会飞的照相机”.但作为军事使用,无人机的各项性能要求更加严格.重要.本系统则是通过 Hightopo 的   ...