H - Lawn of the Dead HDU - 6992 用每一行可以走到的区间去更新下一行可以走到的区间,二分找到上一行的可走区间中 左端点小于当前区间的左端点,且左端点距离当前区间的左端点的距离最近的区间,判两个区间是否相交,根据相交情况更新当前行的可走区间,代码方面需要注意一些细节。
HDU - 3555 Bomb 题目分析:查出从1~n之间有多少个49 数位DP #include<cstdio> #include<cstring> typedef long long ll; ll dp[22][4],digit[22]; void init() { dp[0][0]=1; for(int i=1;i<21;i++) { dp[i][0]=dp[i-1][0]*10-dp[i-1][1];//代表长度为len不含49的方案
Description 给你一颗n个点的树,边有边权。有m次询问,每次询问给出[l,r],要求编号为[l,r]之间的点组成的虚树边权和*2。 n , m ≤ 1
2021暑假 HDU中超 第四场 1004 Display Substring Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1055 Accepted Submission(s): 212 题意 给一个字符串,告知每个小写字母对应的价值,求价值和第k名的子串 Sample Inp
HDU 6979. Photoshop Layers 题意: 颜色可以通过\((R,G,B)\)来表示,其中\(R,G,B\)是\([0,255]\)上的整数,从而一个像素的颜色可以用一个\(6\)位十六进制数表示。例如:\((R=100,G=255,B=50)\)可以被表示成64FF32。 现有\(n\)个图层,每一图层的所有像素颜色都相同,从底到顶依次编
hdu-6983 #include<bits/stdc++.h> using namespace std; typedef long long ll; map <ll, ll> ma; ll n, k; ll f(ll x)// x是区间长度 { if(ma[x]) return ma[x]; if(x <= k) return ma[x] = 1; else return ma[x] = f(x / 2) + f(x - x / 2) + 1; } void wo
https://acm.hdu.edu.cn/showproblem.php?pid=2098 时间复杂度 #include<bits/stdc++.h> using namespace std; typedef long long ll; const ll N=2e4+520; bool st[N]; ll prime[N],cnt; void get_prime(ll n) { for(int i=2;i<=n;i++) { if(!st[i]) prime[cnt++]=
题目链接:HDU 2089 不要62 题目大意: 题解: 很典型的数位\(dp\)题。 \(dp[i][0]\):长度为\(i\)且第\(i+1\)位不是\(6\)的个数; \(dp[i][1]\):长度为\(i\)且第\(i+1\)位是\(6\)的个数。 从高位开始记忆化搜索即可。 #include <iostream> using namespace std; int dp[10][2], digit[10]
题目链接:HDU 1400 Mondriaan's Dream 题目大意: 用\(1\times 2\)的矩形完全覆盖一个\(n\times m\)矩形区域,求覆盖方案数。 题解: 将某一行用二进制来表示是否被覆盖了,压缩信息到一个整数中,进行状态转移。 设\(dp[i][j]\)表示前\(i\)行,除最后一行其他都完全覆盖,而最后一行在\(j\)的二
题目链接:HDU 2376 Average distance 题目大意: 计算一棵树中任意两点之间的距离的平均值。 题解: 如果暴力枚举两点再求距离是显然会超时的。 转换一下思路,我们可以对每条边,求所有可能的路径经过此边的次数:设这条边两端的点数分别为\(a\)和\(b\),那么这条边被经过的次数就是\(a\times
学习链接:点击进入 题目链接:点击进入 题目 题意 n 个数 分出 m 段无交集的子序列,m 段子序列的总和最大,求 m 段子序列中,最大的一段子序列和是多少。 思路 贴个板纸 代码 // #pragma GCC optimize("Ofast","inline","-ffast-math") // #pragma GCC target("avx,sse2,sse3,sse4,
题目大意 有一棵 \(n\) 个点的数以及 \(q\) 个操作,每个点的点权初始时为0,操作1将从 \(a\) 到 \(b\) 的路径上点的权值分别加上 \(1,4,9,16,\dots\),操作2询问一个点的点权。\((1\leq n,q\leq 10^5)\) 题解 首先肯定可以用树链剖分来维护。 注意到 \(1,4,9,16,\dots\) 差分后是一个
Color the blocks Problem Description Given you an N∗N grid graph,you can color any block black or white,but you have to meet the condition: For each block (x,y),it can’t be the same color as (x−3,y),(x−1,y+2),(x+1,y+2),(x+3,y). You need to calculate
非常可乐 原题链接 Problem Description 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M
题目大意:给出一个矩阵,要求从中找到每一列都是不下降数列的最大子矩阵,输出它的大小。 寻找最大子矩阵问题一般用悬线法解决。设 $u_{i,j}$ 为点 $(i,j)$ 向上延伸的最大长度;$l_{i,j}$ 与 $r_{i,j}$ 是向左右延伸的最大长度。 我们可得,当 $a_{i-1,j} \le a_{i,j}$ 时,$u
传送门 题目大意:给你一个长度为n的数组,要求你在其中找到一个长度最短的连续子序列使得它们的异或和不小于k。如果有多个符合要求的序列,则输出左端点最小的。 根据异或的性质,我们很容易想到异或前缀和快速计算一个区间的异或和。如何快速判断是否有一个数与选中
I love permutation 题意: 给一个正整数 a a a和一个奇质数 p ( a <
题目链接:https://acm.dingbacode.com/showproblem.php?pid=5248 序列变换 *Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3527 Accepted Submission(s): 1288 * Problem Description 给定序列A={A1,A2,…,An},
转载:https://blog.csdn.net/yueshehanjiang/article/details/117717599 题目:Stacks vjudge提交链接 题意: 有n个栈,编号从1到n,初始栈内只有元素 i , 现给出m条操作,每条操作a,b, a,b表示栈a中元素放入到栈b中(先进后出原则). 最后输出每个站内元素数量和元素(从顶到底输出). 题解: n,m范围
目录 问题分析代码 问题 HDU 2112 HDU Today - https://acm.hdu.edu.cn/showproblem.php?pid=2112 分析 题目描述是“从s到e的时间”,但实际代码是“s与e”间,因此是无向图 代码 方法一:邻接矩阵 + 优先队列 #include<bits/stdc++.h> using namespace std; #define MXLOC 16
给一个01的矩阵,相邻的1可以分成1组组成一个建筑物,问有多少个建筑物 dfs: ```cpp #include<stdio.h> #include<iostream> #include<algorithm> #define MAXN_ROW 100 #define MAXN_COL 100 using namespace std; int dx[4] = { 0,0,-1,1 }; int dy[4] = { -1,1,0,0 }; int ma
HDU-5727 Problem Description: SJX has 2*N magic gems. N of them have Yin energy inside while others have Yang energy. SJX wants to make a necklace with these magic gems for his beloved BHB. To avoid making the necklace too Yin or too Yang, he must place
HDU6942. CCPC Strings 题意:长度为\(n\)的只含有"C"或"P"的字符串共有\(2^n\)个,问:这所有\(2^n\)个字符串中含有多少个"CCPC"(每一个"CCPC"之间不能相互重叠,即"CCPCCPC"中只能算\(1\)个"CCPC") 分析: 假设所有长度为\(n\)的"CP"字符串中互不重叠的"CCPC&
原题链接 考察:欧拉回路(?) 思路: 每个点\(u\)与\(a = (u<<1)\&((1<<n)-1),a+1\)有一条有向边,也就是每个点的入度 = 出度 = 2.必然存在欧拉回路,\(dfs\)即可 但是看了网上的题解都没说为啥可以这样\(dfs\),这里如果遇到遍历后的点回退,这个点与上一个遍历过的点一定有边
https://vjudge.net/problem/HDU-1253 AC代码 #include<cstdio> #include<iostream> #include<algorithm> #include<queue> #include<cmath> #include<cstring> using namespace std; const int N=55; int a,b,c,t; int g[N][N][N]; int bk