hdu
hdu
erci_fc2336
我今天一定努力੭ ᐕ)੭*⁾⁾
展开
-
hdu3 1004 Game On Plane
题意:Alice和Bob正在玩游戏,在这个游戏中,2d平面上共有n条直线。Alice会在所有 n 条直线中选择 k 条直线 l1、l2、…、lk,然后Bob将绘制额外的一条直线 L。对 Bob 的惩罚定义为 L 与Alice选择的 k 条直线有交点的直线的数量。(请注意,两条重叠线也算有交点。) Alice想最大化对 Bob 的处罚,而 Bob 想最小化处罚。你将得到这n行,请编写一个程序来预测当 k = 1, 2, 3,…,n时,如果两个玩家都发挥最佳状态,求Bob 的惩罚。 输入描述: 第一行包含一个.原创 2022-03-04 09:44:21 · 57 阅读 · 0 评论 -
hdu7 1010 Smzzl with Tropical Taste ...
题意:一个泳池里初始有1L的饮料,之后每秒商店主人都会倒入qVL,男孩会喝掉pVL,注意此处的V是变化的。T组数据,每一组都会给出p、q,问 任意G > 0,T > 0,问是否任意t > T,男孩喝下的饮料量都大于G,是的话输出“N0 M0R3 BL4CK 1CE TEA!”,否则输出“ENJ0Y YOURS3LF!” 思路:比较前后时间段的差,第一秒倒进qL,被喝掉pL,则第一秒后泳池剩余V = 1 + q - p 第二秒倒进q × (1 + q - p),被喝掉p × (1 +..原创 2022-03-03 08:30:21 · 120 阅读 · 0 评论 -
HDU 6440 费马小定理
题意:给出一个数字p,要求打印符合(m+n)p=mp+np(m + n) ^p = m^p + n^p(m+n)p=mp+np的加法表和乘法表。 费马小定理:若p是素数且a是整数则ap≡a(modp)a^p≡a(mod p)ap≡a(modp),特别的若a不能被p整除,则a^(p-1)≡1(mod p) (m+n)p=mp+np(m+n)^p=m^p+n^p(m+n)p=mp+np都是在 %p 的运算下进行,那么等式可以写为m+n=m+n(modp)m+n=m+n(mod p)m+n=m+n(mod原创 2022-03-03 08:24:16 · 98 阅读 · 0 评论 -
hdu2 1005 I love string ...
题意:给一输入序列,要求用其构成字典序最小的序列,除第一字符外,每次往序列添加字符时有两种选择的操作:添加在序列第一个或最后一个位置,求可能的构造方案数。 思路:易得该题的答案等于 2^输入序列前端的相同字符个数,因为只有这里会生成不同的构成顺序但构造的序列相同。 accode: #include<bits/stdc++.h> using namespace std; typedef long long ll; char s[100010]; ll qk(ll a, ll b) { .原创 2022-03-04 09:44:55 · 51 阅读 · 0 评论 -
HDU 1003 Max Sum 最大字段和
序列的最大字段和问题,动态规划,可用拖累思想去求解,如果上一次的子段和+当前遍历到的这个元素数值<当前遍历到的这个元素数值(其实也就是上次的sum<0),那么你上一次的子段和就拖累了当前元素,就应把sum新设为当前元素值,让当前元素去开始它的新天地。若>,则帮助了当前元素,就把当前元素并到上次sum中继续前进。 PE了,注意输出格式 accode: #include <stdio.h> #include <iostream> using namespac..原创 2022-03-03 08:27:19 · 349 阅读 · 0 评论 -
hdu3 1011 Segment Tree with Pruning 记忆化搜索
题意:对区间 [l, r] 建线段树,且线段树每个节点所代表的区间长度不小于k。求这样的线段树总共有多少个节点。 思路:线段树上代表区间长度相同的节点的子树点数相同,据此进行记忆化搜索,将各区间长度的节点个数记下来。 accode: #include <stdio.h> #include <iostream> #include <string.h> #include <algorithm> #include <math.h> #includ.原创 2022-03-03 08:39:57 · 70 阅读 · 0 评论 -
hdu5 1006 Cute Tree ...
题解:就是根据给的代码片改成C++语言 第一发超时:把给的代码片中没用的 for 循环去掉 第二发runtime error:将数组大小开大一点过了 accode: #include <stdio.h> #include <math.h> using namespace std; typedef long long ll; const int maxn = 2e6 + 10; int a[maxn], key[maxn]; int son[maxn][4]; int tot;原创 2022-03-03 08:34:39 · 265 阅读 · 0 评论 -
hdu2 1008 I love exam 背包+dp
题意:求一个学生在最多挂P门课程的情况下,有T天时间让他复习课程,有n门课程,m本复习材料,问他能取得的最高分数是多少。 注意:没有满足条件的情况出现,要输出-1,没看到这句wa了好几发… 思路: 状态表示 f [ i ][ j ] 表示第 i 门课用 j 天复习能得到的最多分数 dp[ i ][ j ][ k ] 表示前 i 门课花 j 天挂 k 门的最多分数 f[ ] 数组使用背包维护 dp[ ][ ][ ]数组:需要枚举当前第 i 门课的学习天数 k 状态转移 (当 f [ i ].原创 2022-03-04 09:44:36 · 88 阅读 · 0 评论 -
hdu2 1001 I love cube 思维题
题意:给一个长度为 n - 1 的立方体,求这个立方体内能构成多少个等边三角形。 思路:可以发现一个 1 × 1 × 1 的立方体能构成 8 个等边三角形,那么题目就等价于求给定的立方体能构成多少个 i × i × i 的立方体(1 <= i <= n-1) 1=8×(13)1 = 8 × (1^3)1=8×(13) 2=8×(13+23)2 = 8 × (1 ^ 3 + 2 ^3)2=8×(13+23) 3=8×(13+23+33)3 = 8 × (1^3 +2^3 + 3^3)3=8×.原创 2022-03-04 09:45:10 · 87 阅读 · 0 评论 -
HDU 6441 Find Integer 费马大定理
题意:题意:给你两个数 n ,a,要求输出b,c,满足an+bn=cna^n+b^n=c^nan+bn=cn ,否则输出-1,-1 分析:根据费马大定理内容:当整数 n > 2时,关于x, y, z的方程xn+yn=znx^n + y^n = z^nxn+yn=zn 没有正整数解。 所以①当 n > 2 或 n = 0时无解,输出-1,-1。 ②当 n == 2时,将公式变形:a2+b2=c2 ⟹ a2=c2−b2 ⟹ a2=(c+b)(c−b)a^2+b^2=c^2 \\ \i.原创 2022-03-03 08:18:37 · 147 阅读 · 0 评论 -
hdu3 1007 Photoshop Layers 思维
题意:每个像素点的颜色都用六位十六进制数表示,如RGB(100,255,50)表示为64FF32 现有n个图层,每个图层内所有像素点的颜色均相同用一个RGB值来表示。图层的叠加有两种模式: 1、“Normal”:当前图层的颜色直接覆盖掉前一图层 2、“Linear Dodge”:新图层颜色由当前图层和前一图层相加而得(不得超过255) 先给出所需查询图层序号的上下区间,输出最终看到的图层的颜色(六位十六进制表示) 分析:只要所查询的区间中出现了1模式的图层,那么该区间就可以转换为这一点和右端点之间的查.原创 2022-03-04 09:43:57 · 71 阅读 · 0 评论 -
hdu5 1007 Banzhuan 思维+计算
题意:三维空间 n×n×n 内放正方体1×1×1,保证前面看是 n×n ,左面看是 n×n,上面看是 n×n 。放置一块方块的代价是x×(y2)×zx × ( y ^ 2 ) × zx×(y2)×z,求最大代价跟最小代价。 思路:最大代价就是放置 n×n×n 个立方体,不过这个放置的时候有技巧,就是在最高的地方放,然后让方块掉下去,越高放置代价越大,所以我们只要让所有方块都是从 z = n 的地方放下去就可以了,最大代价计算: 最小代价:第一层铺满,然后补充前面、左边的竖直部分(与另一种斜对角线补充.原创 2022-03-03 08:32:52 · 79 阅读 · 0 评论 -
hdu5 1003 VC Is All You Need 结论题
题意:输入 n 个点和 k 维平面,问能不能满足对于随意的一个2n2^n2n二染色方案,都有一个k-1维超平面可以严格分开这两种颜色的点。 结论:Nmax = k+1 accode: #include <stdio.h> using namespace std; typedef long long ll; ll n, k; int main() { int T; scanf("%d", &T); while(T--) { scan.原创 2022-03-03 08:37:17 · 38 阅读 · 0 评论 -
hdu1 1008 Maximal submatrix (dp)
题意:在给出的 n × m 矩阵里找到每列不递减的最大子矩阵的大小并输出。 思路:用 dp[ i ][ j ] 表示是否满足每列不减,当满足条件时 dp[ i ][ j ] = dp[ i - 1][ j ] + 1;不满足条件时,dp[ i ][ j ] = 1;最后循环每行,判断连续的个数 × 其中dp值的最小值就是答案。 accode: #include <stdio.h> #include <string.h> #include <iostream> #i.原创 2022-03-04 09:45:29 · 57 阅读 · 0 评论 -
hdu1 1005 Minimum spanning tree 线性筛+前缀和
题意:给定n-1个点,编号从2到n,两点a和b之间的边权重为lcm(a,b)。请找出它们形成的最小生成树。 (2<=n<=10000000) 思路: 要让lcm最小,容易想到一种是包含关系,即lcm(a, b)==a, 让每个数向其约数连边。对于没有约数的质数,将其与2相连是最优的,因为在> 不能包含的情况下,最小的倍数就是2倍。 总的边权和为(质数的和×2+合数的和),可以用线性筛法预处理出前缀和,复杂度O(n)。 accode: #include <stdio.h&g.原创 2022-03-06 10:11:57 · 53 阅读 · 0 评论 -
hdu1 1001 Mod, Or and Everything 找规律
打表,i从小到大表达二次方,发现输入的n<2in < 2^in<2i时,输出结果为2^(i-1) -1 accode: #include <stdio.h> #include <string.h> #include <iostream> #include <vector> #include <algorithm> using namespace std; typedef long long ll; const ll maxn原创 2022-03-06 10:12:47 · 64 阅读 · 0 评论 -
hdu6 1005 Median
accode: #include <stdio.h> #include <iostream> #include <string.h> #include <algorithm> #include <math.h> #include <map> using namespace std; typedef long long ll; int main() { ios::sync_with_stdio(false), cin.tie(.原创 2022-03-10 08:51:35 · 87 阅读 · 0 评论 -
hdu4 1001 Calculus
题意:判断所给函数是否收敛 思路:判断字符串里系数是否为0 accode: #include <stdio.h> #include <iostream> #include <string.h> #include <algorithm> #include <math.h> #include <map> using namespace std; typedef long long ll; int main() { int T, l原创 2022-03-10 08:55:25 · 67 阅读 · 0 评论 -
hdu6 1001 Yes, Prime Minister
思路:素数筛+二分 Accode: #include <stdio.h> #include <iostream> #include <string.h> #include <algorithm> #include <math.h> #include <map> using namespace std; typedef long long ll; const int maxn = 1e8 + 10; bool vis[maxn]; int原创 2022-03-10 08:53:59 · 85 阅读 · 0 评论 -
hdu8 1006 GCD Game
题意:爱丽丝和鲍勃正在玩游戏。 他们轮流操作。有n个数字,a1,a2,…,an。每次,玩家分3 步进行游戏。 1.任意选择一个数字ai。 2.任意选择另一个数x(1≤x<ai)。 3. 用 gcd(ai,x) 替换数字 ai。 这里,gcd(u,v) 指的是 u 和 v 的最大公约数。 当玩家不能移动时,他/她就输掉了游戏。爱丽丝先走,她让你告诉她,如果两个玩家都有最佳策略,谁将赢得比赛。 思路:每次的操作都分为三步,要将其转化为自己的一个因数,那么对于某一个数字而言,它最多可操作的次数就取决于自己有原创 2022-03-10 08:48:06 · 4129 阅读 · 0 评论 -
hdu9 1002 Just another board game
题意:一棋子初始位于(1,1),A先手,A可以横移棋子,B可以竖移棋子,或者,到某人行动的时候可以立刻终止游戏。游戏执行k轮后会结束。最终棋子停留的底下的值为最终得分,A目标是最大化,B目标是最小化。求最终答案。 思路: accode: #include <stdio.h> #include <iostream> #include <string.h> #include <algorithm> #include <math.h> #include原创 2022-03-10 08:45:49 · 4121 阅读 · 0 评论