VIrtuoso

两把多兰剑加个布甲鞋

导航

2019年5月5日 #

hdu6464 线段树

摘要: 题意 一个空序列,q次操作,一种是往序列后插入x个y,另一种是查询序列中第x小到第y小的数字之和 题解 线段树维护区间和,区间个数 代码 c++ include define ll long long using namespace std; const int MAXN=1e5+5; const 阅读全文

posted @ 2019-05-05 23:46 VIrtuoso 阅读(191) 评论(0) 推荐(0) 编辑

hdu6468 dfs剪枝 or char数组 or 构造

摘要: 题意 有一个序列,是1到n的一种排列,排列的顺序是字典序小的在前,那么第k个数字是什么?($1 \leq n \leq 10^6,1 \leq k \leq n,多组T\leq 100$) 题解1 假如剪枝好的话,每次最多搜1e6,这样总共1e8,能过 dfs序 =k剪掉,num n剪掉 题解2 预 阅读全文

posted @ 2019-05-05 23:37 VIrtuoso 阅读(184) 评论(0) 推荐(0) 编辑

hdu6470 矩阵快速幂+构造矩阵

摘要: 题意 $f[n]=2f[n 2]+f[n 1]+n^3,n \leq 10^{18}$,求f[n] 题解 每一项只能由上一项经线性变换转移过来 代码 c++ include define P 123456789 define ll long long using namespace std; str 阅读全文

posted @ 2019-05-05 21:47 VIrtuoso 阅读(196) 评论(0) 推荐(0) 编辑

hdu 6465 线性变换高斯消元

摘要: 题意 给你三个点,再给你经过线性变换后的三个点,然后q次询问,给你一个点,需要你输出线性变换后的点 题解 线性变换: $a_1x+b_1y+c_1=X$ $a_2x+b_2y+c_2=Y$ 构造高斯消元矩阵,Y同理 $$ \left[ \begin{matrix} 1 & x_1 & y_1 \\ 阅读全文

posted @ 2019-05-05 21:20 VIrtuoso 阅读(106) 评论(0) 推荐(0) 编辑

hdu6494 dp

摘要: 题意 一个长n字符串(n,1e4),'A'代表A得分,'B'代表B得分,'?'代表不确定,一局比赛先得11分获胜,10比10以后先得两分者获胜,问你他们最多能比多少局 题解 定义$dp[i][j][k]$为第i个字符j比k的最大局数 10比10: $dp[i][10][10] dp[i+1][9][ 阅读全文

posted @ 2019-05-05 19:25 VIrtuoso 阅读(224) 评论(0) 推荐(0) 编辑

hdu6492 暴力预处理 + 枚举

摘要: 题意 他们一共有 n+m+2k 个人,包括 n+k 个男生,m+k 个女生,其中 k 对男女生为异性情侣,现在他们要找房间住。房间有三种类型,双人间 a 元一间,三人间 b 元一间,这两种只能同性一起住。情侣间能住一对异性情侣,一间 c 元。除了情侣间以外,其他房间都可以不住满。 求最少花多少钱,能 阅读全文

posted @ 2019-05-05 19:12 VIrtuoso 阅读(162) 评论(0) 推荐(0) 编辑

hdu6514 一维化 + 二维前缀和

摘要: 题意 给出一个大矩形($nm\leq10^7$),有p个矩形覆盖,然后有q次询问,询问指定矩形内是否覆盖完全 题解 ~~扫描线?~~ 因为不用修改,所以差分前缀和就好,注意重复覆盖点需要重新赋值 $n m \leq 10^7$,二维数组一维化, 一维化后一定要严格判边界,不然会导致访问混乱 代码 c 阅读全文

posted @ 2019-05-05 18:50 VIrtuoso 阅读(134) 评论(0) 推荐(0) 编辑

hdu 6495 dp

摘要: 题意 有n个挑战(1e3),假如接受,在挑战之前体力x会变成min(x,$b[i]$),然后会减去a[i],无论是否接受这个挑战,体力在结束后都会增加$c[i]$,问最多能完成多少个挑战 题解 定义$dp[i][j]$为前i个挑战接受了j个后剩下的最大体力 接受:$min(dp[i 1][j 1], 阅读全文

posted @ 2019-05-05 18:32 VIrtuoso 阅读(111) 评论(0) 推荐(0) 编辑

Manthan, Codefest 18 (rated, Div. 1 + Div. 2) F 单调栈 + 贡献 + 计数

摘要: 题意 c++ include define ll long long using namespace std; const ll P=1e9+7; const int MAXN=1e6+5; ll n,k; int S[MAXN],t,a[MAXN],L[MAXN],R[MAXN]; ll cal( 阅读全文

posted @ 2019-05-05 17:11 VIrtuoso 阅读(151) 评论(0) 推荐(0) 编辑

Manthan, Codefest 18 (rated, Div. 1 + Div. 2) E bfs + 离线处理

摘要: 题意 有n个人,m天,在第i天早上,x和y会成为朋友,每天晚上大家都要上车,假如一个人要上车那么他得有至少k个朋友上车,输出每天晚上上车人数 题解 一个点的度数 define MAXN 200005 define mk make_pair using namespace std; int n,m,k 阅读全文

posted @ 2019-05-05 15:38 VIrtuoso 阅读(161) 评论(0) 推荐(0) 编辑

Forethought Future Cup - Elimination Round D 贡献 + 推公式 + 最短路 + 贪心

摘要: 题意 有一只青蛙,一开始在0位置上,每次可以向前跳a,或者向后跳b,定义$f(x)$为青蛙在不跳出区间[0,x]能跳到多少个不同的位置上,计算$\sum^m_{i=0}f(i)$ 题解 计算点贡献,计算有多少个区间包含i即i的贡献,设d[i]为走到i经过的最大的点,假如i点能走到,那么包含他的区间就 阅读全文

posted @ 2019-05-05 15:12 VIrtuoso 阅读(171) 评论(0) 推荐(0) 编辑

Forethought Future Cup - Elimination Round C 二分 + 交互(求树的直径)

摘要: 题意 一颗大小为n的树,每次可以询问两个集合,返回两个集合中的点的最大距离,9次询问之内得出树的直径 题解 求树的直径:先找到一个点a,找到离他最远的一个点b,最后找到距离b最远的点c,b和c之间的距离就是树的直径 先询问离1最远的距离,然后二分找到这个点a,然后询问a的最远距离 代码 c++ in 阅读全文

posted @ 2019-05-05 14:38 VIrtuoso 阅读(93) 评论(0) 推荐(0) 编辑

Codeforces Round #554 (Div. 2) D 贪心 + 记忆化搜索

摘要: 题意 给你一个n代表合法括号序列的长度一半,一颗有所有合法括号序列构成的字典树上,选择最大的边集,边集的边没有公共点,问边集大小 题解 对于一颗字典树,从低向上贪心,最底层的边全拿,定义好状态,记忆化搜索计数 定义dp[i][j]为左括号数量为i,右括号数量为j的最大边集 $idfs(i+1,j)$ 阅读全文

posted @ 2019-05-05 14:24 VIrtuoso 阅读(133) 评论(0) 推荐(0) 编辑

Codeforces Round #554 (Div. 2) C 数论

摘要: 题意 a和b,找到k,使得lcm(a+k,b+k)最小(a,b:1e9) 题解 设gcd=gcd(a+k,b+k)且$a define ll long long using namespace std; ll a,b,ans,ansk,k,tp,x; int main(){ scanf("%lld% 阅读全文

posted @ 2019-05-05 14:03 VIrtuoso 阅读(101) 评论(0) 推荐(0) 编辑

Educational Codeforces Round 63 (Rated for Div. 2) E 带模高斯消元

摘要: 题意 $f(x)=a_0+a_1x+a_2x^2+...+a_kx^k,k \leq 10,0 \leq a_i define ll long long using namespace std; const ll P=1e6+3; ll a[15][15],b[15]; int ask(int i) 阅读全文

posted @ 2019-05-05 13:20 VIrtuoso 阅读(82) 评论(0) 推荐(0) 编辑

Educational Codeforces Round 63 (Rated for Div. 2) D dp(最大连续子序列)

摘要: 题意 一个n个数的数组$a[i]$,可以选择连续的一段乘x,求最大连续子序列的值 题解 错误思路:贪心,假如x define ll long long using namespace std; ll x[300005],sum[300005],f[300005],g[300005],ans,mx; 阅读全文

posted @ 2019-05-05 13:09 VIrtuoso 阅读(89) 评论(0) 推荐(0) 编辑

Codeforces Round #553 (Div. 2) E 贡献

摘要: 题意 一条长n的链,每个点上有值$a[i]$,定义$f(l,r)$为该区间的$值$所代表的点留下来后的联通块数量,求$\sum^n_{l=1} \sum^n_{r=1} f(l,r)$ 题解 计算贡献,计算每个点留下后作为联通块的第一个点的情况数就是这个点的贡献 代码 c++ include def 阅读全文

posted @ 2019-05-05 11:54 VIrtuoso 阅读(117) 评论(0) 推荐(0) 编辑

Codeforces Round #553 (Div. 2) C 等差数列求和 + 前缀和

摘要: 题意 有两个等差数列(1,3,5,..),(2,4,6,...),两个数列轮流取1,2,4,...,$2^n$组成一个新的数列,然后询问区间l,r的和 题解 一开始总想着怎么计算中间那一段,其实用前缀和很好处理 数太大,第二个数也要取模才能相乘 代码 c++ include define ll lo 阅读全文

posted @ 2019-05-05 11:45 VIrtuoso 阅读(263) 评论(0) 推荐(0) 编辑

Codeforces Round #552 (Div. 3) EFG(链表+set,dp,枚举公因数)

摘要: E 题意 一个大小为n(1e6)的数组$a[i]$(n),两个人轮流选数,先找到当前数组中最大的数然后选择以这个数为半径k的所有数,问两个人的选数情况 题解 set维护剩下数的最大 链表维护左右第一个存在的数的位置 代码 c++ include define inf 0x3f3f3f3f3f3f3f 阅读全文

posted @ 2019-05-05 10:13 VIrtuoso 阅读(136) 评论(0) 推荐(0) 编辑

Codeforces Round #551 (Div. 2) E 二分 + 交互

摘要: 题意 边长为n的正方形里面有一条蛇,每次可以询问一个矩形,然后会告诉你蛇身和矩形相交有几部分,你需要在最多2019询问中知道蛇的头和尾 题解 假如相交奇数部分,那么头和尾一定有一个在矩形里面,假如为偶数部分,头和尾都在里面或者都不在 利用上述性质,对每一行进行询问即(1,1)(i,n) (999次) 阅读全文

posted @ 2019-05-05 09:20 VIrtuoso 阅读(127) 评论(0) 推荐(0) 编辑