JZOJ 4211. 【五校联考1day2】送你一颗圣诞树
题目

解析

\(Code\)
#include<cstdio>
#include<map>
#include<iostream>
#include<cstring>
using namespace std;
typedef unsigned long long LL;
const int N = 70;
const LL P = 1e9 + 7;
map<pair<LL , pair<LL , LL> > , LL> vis_to;
map<pair<LL , LL> , LL> vis_all;
struct node{
LL a , b , c , d , l , sz , f;
}q[N];
inline LL get(LL x , LL u , LL v)
{
if (q[x].sz == 1 || u == v) return 0;
if (vis_to[make_pair(x , make_pair(u , v))]) return vis_to[make_pair(x , make_pair(u , v))];
LL res = 0 , a = q[x].a , b = q[x].b , c = q[x].c , d = q[x].d , l = q[x].l , sz = q[a].sz;
if (u > v) swap(u , v);
if (v <= sz) res = get(a , u , v);
else if (u > sz) res = get(b , u - sz , v - sz);
else res = (get(a , u , c) + l + get(b , v - sz , d)) % P;
vis_to[make_pair(x , make_pair(u , v))] = res;
return res;
}
inline LL all(LL x , LL u)
{
if (q[x].sz == 1) return 0;
if (vis_all[make_pair(x , u)]) return vis_all[make_pair(x , u)];
LL res = 0 , a = q[x].a , b = q[x].b , c = q[x].c , d = q[x].d , l = q[x].l , sz = q[a].sz;
if (u <= sz) res = ((all(a , u) + all(b , d)) % P + q[b].sz % P * ((l + get(a , u , c)) % P) % P) % P;
else res = ((all(b , u - sz) + all(a , c)) % P + q[a].sz % P * ((l + get(b , u - sz , d)) % P) % P) % P;
vis_all[make_pair(x , u)] = res;
return res;
}
int main()
{
int T;
scanf("%d" , &T);
for(; T; T--)
{
vis_to.clear() , vis_all.clear();
int n;
scanf("%d" , &n);
memset(q , 0 , sizeof q);
q[0] = node{0 , 0 , 0 , 0 , 0 , 1};
LL a , b , c , d , l;
for(register int i = 1; i <= n; i++)
{
scanf("%lld%lld%lld%lld%lld" , &a , &b , &c , &d , &l);
++c , ++d;
q[i] = node{a , b , c , d , l , q[a].sz + q[b].sz};
q[i].f = ((q[a].f + q[b].f) % P + q[a].sz % P * all(b , d) % P
+ q[b].sz % P * all(a , c) % P + q[a].sz % P * (q[b].sz % P) % P * l % P) % P;
printf("%lld\n" , q[i].f);
}
}
}
JZOJ 4211. 【五校联考1day2】送你一颗圣诞树的更多相关文章
- 【五校联考1day2】JZOJ2020年8月12日提高组T2 我想大声告诉你
[五校联考1day2]JZOJ2020年8月12日提高组T2 我想大声告诉你 题目 Description 因为小Y 是知名的白富美,所以自然也有很多的追求者,这一天这些追求者打算进行一次游戏来踢出一 ...
- 【五校联考1day2】JZOJ2020年8月12日提高组T1 对你的爱深不见底
[五校联考1day2]JZOJ2020年8月12日提高组T1 对你的爱深不见底 题目 Description 出乎意料的是,幸运E 的小R 居然赢了那个游戏.现在欣喜万分的小R 想要写一张明信片给小Y ...
- 五校联考 running (欧拉函数)
题面 \(solution:\) 讲真吧,这道题真的出得,嗯,太恐怖了.考场上这道题真的把我看懵了,这道题以前是见过的,但欧拉函数?我学过吗?一道容斥都要超时的题目,我都要为我自己点根香了,拿着gcd ...
- 【五校联考3day2】C
題意: 現有一平面直角坐標系,有n個點,每一個點必須向某一個方向發射射線,且任意一條射線必須與某一條坐標軸平行.定義一種發射射線的方案是合法的,則方案必須滿足: 1.沒有一條射線交叉 2.沒有一條射線 ...
- 五校联考R1 Day1T3 平面图planar(递推 矩阵快速幂)
题目链接 我们可以把棱柱拆成有\(n\)条高的矩形,尝试递推. 在计算的过程中,第\(i\)列(\(i\neq n\))只与\(i-1\)列有关,称\(i-1\)列的上面/下面为左上/左下,第\(i\ ...
- 五校联考R1 Day2T2 矩阵matrix(容斥)
题目链接 容易想到容斥,但是很恶心,因为要对行和列都容斥,然后行+列又要容斥.. 于是得到\(O(nm\log)\)的做法. 就有70分了: #include <cstdio> #incl ...
- 五校联考模拟赛Day2T2矩阵(容斥原理)
题意 $n * m$的网格,对其进行黑白染色,问每一行每一列至少有一个黑格子的方案数. Sol 考场上只会$n^3$的dp,还和指数级枚举一个分qwq 设$f[i][j]$表示到了第$i$行,已经有$ ...
- NOIP2016提高A组五校联考4总结
坑爹的第一题,我居然想了足足3个小时,而且还不确定是否正确. 于是,我就在这种情况下心惊胆跳的打了,好在ac了,否则就爆零了. 第二题,树形dp,本来差点就想到了正解,结果时间不够,没打完. 第三题, ...
- 【NOIP2016提高A组五校联考4】square
题目 分析 首先,设\(f_{i,j}\)表示最大的以(i,j)为左下角的正方形的边长. 转移显然,\(f_{i,j}=\max(f_{i-1,j},f_{i,j-1},f_{i-1,j-1})+1\ ...
- 【NOIP2016提高A组五校联考4】label
题目 题目 20%算法 设\(f_{i,j}\)表示第i个节点选了j这个权值的方案数. 显然转移方程为,\[f_{i,j}=\Pi_{v=son(i)}(\sum_{k=1}^{j-k}f_{v,k} ...
随机推荐
- pyinstaller 打包多个资源文件到一个可执行文件
前言 pyinstaller -w: 无终端状态 -F: 打包成一个可执行文件 开始 假设 main.py 脚本调用 test.mp4视频文件(main.py和test.mp4在同一级目录),那么将在 ...
- 7. PyQt5 中的多线程的使用(下)
专栏地址 ʅ(‾◡◝)ʃ 紧接着上一节, 这一节具体介绍 图形化界面 如何给 任务线程传递数据 7.1 from form import Ui_Form from PyQt5.QtWidgets im ...
- python3获取列表逆序的五种方式
前言 我们将这几种方式分为两类,一种是对列表本身进行操作,改变对应内存中的值,另一种是带有返回值的,相当于拷贝了一份 对列表内存中进行操作 sort() 函数 a = [1,2,3,4] a.sort ...
- Google地图瓦片
1.Web墨卡托空间参考 1.1.什么是Web墨卡托 墨卡托投影,又称正轴等角圆柱投影,由荷兰地图学家墨卡托(G.Mercator)于1569年创拟.假设地球被套在一个圆柱中,赤道与圆柱相切,然后在地 ...
- Python爬虫爬取彼岸网4K Picture
深夜爬取4k图片 下载流程 定义page_text函数,对第一页地址发送get请求,因为页面数据在页面源代码都能查到,所以发送get 请求就ok!,注意:要进行编码格式设置,可以去源代码查看, 定义p ...
- PyQt4编写界面的两种方式
PyQt4编写界面的两种方式 应用PyQt4开发图形化界面有两种方式,一种是直接通过QtDesigner通过提供的窗口部件拖拽进行GUI创建,另外一种是直接进行编程实现. 第一种,QtDesigner ...
- YonBuilder移动开发平台功能大盘点
YonBuilder是面向企业组织和个人开发者的低代码开发平台,实现无代码.低代码.专业代码开发三种模式.提供元数据驱动和画布构建两种开发方式,通过点击拖拽+自动化代码生成和移动多端编译的技术,与开放 ...
- JavaScript:对象:如何去遍历输出一个对象的属性?语句for-in
使用for-in的for循环语句,可以去遍历一个对象的属性,这类似于Java的增强for循环: 但是注意,这并不能遍历对象的所有属性,有些隐藏的属性,是无法遍历出来的,虽然我们可以通过控制台去查看这些 ...
- JS如何返回异步调用的结果?
这个问题作者认为是所有从后端转向前端开发的程序员,都会遇到的第一问题.JS前端编程与后端编程最大的不同,就是它的异步机制,同时这也是它的核心机制. 为了更好地说明如何返回异步调用的结果,先看三个尝试异 ...
- 使用APICloud AVM多端组件快速实现app中的搜索功能
很多 APP 中都有搜索功能的需求,本文介绍怎么使用 avm 多端组件快速实现搜索功能. 在 APICloud 模块库搜索 animate-UISearchBar,添加到项目.多端组件需要下载源码,引 ...