2019牛客国庆集训派对day5】的更多相关文章

2019牛客国庆集训派对day5 I.Strange Prime 题意 \(P=1e10+19\),求\(\sum x[i] mod P = 0\)的方案数,其中\(0 \leq x[i] < p - a[i]\) 做法 神仙容斥,太妙啦 首先考虑存在\(a[i] = 0\)时,其它数可任意选 枚举哪些位置违反条件进行容斥 列出式子发现,这简直就是二项式分解! 但当所有位置都违反时,不存在可能的解,所以需要把它剪掉,这也就是数据小于1e5的原因,简直太神奇了!…
链接:https://ac.nowcoder.com/acm/contest/1099/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K Special Judge, 64bit IO Format: %lld 题目描述 输入描述: 输出描述: For each test case, print an integer which denotes the result. 示例1 输入 复制 3 2 1 1 2 2 3 1 2 1 1…
链接:https://ac.nowcoder.com/acm/contest/1112/J来源:牛客网 题目描述 Bobo 有一个三角形和一个矩形,他想求他们交的面积. 具体地,三角形和矩形由 8 个整数 x1,y1,x2,y2,x3,y3,x4,y4x_1, y_1, x_2, y_2, x_3, y_3, x_4, y_4x1​,y1​,x2​,y2​,x3​,y3​,x4​,y4​ 描述. 表示三角形的顶点坐标是 (x1,y1),(x1,y2),(x2,y1)(x_1, y_1), (x_…
链接:https://ac.nowcoder.com/acm/problem/52800来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K Special Judge, 64bit IO Format: %lld 题目描述 给出正整数 n 和 m,统计满足以下条件的正整数对 (a, b) 的数量: 1. 1≤a≤n,1≤b≤m 2. a×b 是 2016 的倍数. 输入描述: 输入包含不超过 30 组数据.每组数据包含两个整数 n,…
链接:https://ac.nowcoder.com/acm/contest/1099#question A:可知符合条件的图中间肯定存在一个由1构成的矩形,找到由1构成矩形的边界,判断出现的1的数量等不等于矩形的面积即可. #include<bits/stdc++.h> using namespace std; ][]; int main() { int n, m; while(cin >> n >> m) { , x2 = ; , y2 = ; ; ;i <…
题目描述 终于活成了自己讨厌的样子. 这是她们都还没长大的时候发生的故事.那个时候,栗子米也不需要为了所谓的爱情苦恼. 她们可以在夏日的午后,花大把的时间去研究生活中一些琐碎而有趣的事情,比如数论. 有一天西柚柚问了栗子米一个题,她想知道中有多少不同的数,这些不同的数字里面第k大的是多少. 输入描述: 第一行一个整数T(T≤ 10 5 ),表示数据组数.每组数据第一行两个整数,表示n,k(1≤ n≤ 10 18 ),保证k不会超过不同的数字个数. 输出描述: 对于每组数据输出,输出两个整数,表示…
A    璀璨光滑 留坑. B    电音之王 蒙特马利大数乘模运算 #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long u64; typedef __int128_t i128; typedef __uint128_t u128; struct Mod64 { Mod64() :n_() {} Mod64(u64 n) :n_(init(n)) {} st…
题目链接: 题意:有n个点,n-1条单向边,每个点都销售一类商品 问从点1开始走,买第一样商品类型为x,买第二样商品类型为y,问不同有序对<x,y>的数量 解法: col[i]表示这个点的商品类型 last[col[i]]表示从1到点i过程中,点i的商品类型上次出现的时候的点的父亲 vis[col[i]]表示从1到点i过程中,点i的商品类型经过次数 num[i]表示从1到点i过程中不同商品类型数量和 每次扫到新的点v时,(u为v的父亲) num[u] - num[last[col[v]]]就是…
题目链接: 解法: 先建n颗平衡树,合并的时候将a中最右的结点翻转到根节点,b中最左的结点翻转到根节点,对合并后的根节点进行标记. #include <bits/stdc++.h> using namespace std; #define ls(p) p << 1 #define rs(p) p << 1 | 1 ; int n, m, cnt; int rt[M]; struct node{ ], val, cnt, sz, lazy; }spl[M]; bool i…
C 存每个值存在的位置,枚举末尾的值,再枚举前面的值,哈希二分出最长相同的,即剩下的为不同的 D \(f_{i,j,k}\)为前i位,最后一个3因子在j,次因子在k G bitset处理有多少位置符合的,有多少不符合的,然后按子集套即可…