ACM_集训
长颜草
无话可说
展开
-
HDU_【2017 Multi-University Training Contest 2】——1001 Is Derek lying?
题目链接题目意思 给你总共有几道题,和两个人的分数,接下来给你两个人各自的答案,每道题一分,让你判断第一个人有没有说谎。解题思路 一道题一分,那么两个人的分数总和减去总题数就是两个人至少做的相同的题的数目,当然同时两个人不同的题数目至少也得是两人分数的差值。代码部分 #include<cstdio>#include<algorithm>#include<string.h>#include <i原创 2017-07-29 20:41:35 · 234 阅读 · 0 评论 -
HDU 6097 Mindis
题目链接题目意思在圆内有两点P,Q,满足OP=OQ。现在要在圆上找一点D,使得DP+DQ最短。解题思路我们可以分为两种情况来讨论: 1、OP = OQ = r 的情况。这是最短的距离应该就是PQ的连线距离了。 2、OP = OQ < 的情况。这时我们引进一个反演点的知识。反演点:已知圆O的半径为R,从圆心O出发任作一射线,在射线上任取两点M,N。若OM=m,ON=n,且mn=R^2,则称点M,N原创 2017-08-14 15:55:54 · 393 阅读 · 0 评论 -
HDU 6153 A Secret
题目链接题目意思给你两个字符串A,B,现在要你求B串的后缀在A串中出现的次数和后缀长度的乘积和为多少。解题思路扩展KMP模板题,将s和t串都逆序以后就变成了求前缀的问题了,扩展KMP求处从i位置开始的最长公共前缀存于数组,最后通过将数组的值不为0的进行一个等差数列和的和就可以了。代码部分#include <iostream>#include <string>#include <string.h原创 2017-08-19 19:47:12 · 1165 阅读 · 0 评论 -
HDU 6154 CaoHaha's staff
题目链接题目意思给你一个面积,让你求围成这个面积最少需要几条边,其中边的连线只能是在坐标轴上边长为1的的线或者是两个边长为1 的线的对角线。解题思路这其实就是一个找规律的题,我们列举前几个会发现,增加斜边,每增加一条边面积就能增加1.5,然后根据你所列出的边数跟面积的关系去找规律,其中每次能被4整除的数都能形成一个菱形,那是边数确定面积最大的。代码部分#include <bits/stdc++.h原创 2017-08-19 19:09:32 · 489 阅读 · 0 评论 -
HDU 6140 Hybrid Crystals
题目链接题目链接搞得好像阅读理解,就是给定一个序列。序列的每个值都有属性,N代表可加可减,L代表只能加,D代表只能减,当然这些都可以用或者不用。给定一个k,问k是否可能用这个序列构成。解题思路这道题就是固定左右的区间,不断地扩展,然后判断k是否在这个区间内就可。 感觉这道题就是阅读理解,给的式子也没啥用,关键竟然能够水过,根本就没有深究,考虑的不够严谨,竟然还有这种操作,表示很心累。代码部分#i原创 2017-08-17 20:08:36 · 404 阅读 · 0 评论 -
HDU 6127 Hard challenge
题目链接题目意思平面上有(n)个点,已知每个点的坐标为((x,y)),以及该点的权值为(val),任意两点之间可以连接成一条不经过原点的边,该边的权值是两个端点的权值的乘积。现在要求画一条经过原点的直线,定义这条直线的权值为这条直线穿过的所有线段的值的和,问权值的最大值。解题思路我们将所有的点按照极角排序,分别散落在y轴的左右两侧,y轴左端的点的和为suml,右端的点的和为sumr,则权值和为su原创 2017-08-17 09:24:00 · 563 阅读 · 0 评论 -
HDU 6129 Just do it
题目链接题目意思给你一个包含n个数的序列A和一个数m,序列B中的数是序列A经过异或得到的,比如:b[i]=a[1]^a[2]^…..^a[i]。现在让你求经过m次异或后,序列B的值。解题思路我们写下其前五项的值可以发现我们设定ans【i】【j】表示进行到第i次,第j个位子的答案的话,ans【i】【j】有推导式:ans【i】【j】=ans【i-1】【j】^ans【i】【j-1】; 从图中我们可以看原创 2017-08-16 10:49:52 · 1497 阅读 · 14 评论 -
HDU 6152 Friend-Graph
题目链接题目描述就是一个团队如果存在三个或者三个以上的人互为朋友的关系,或者都不是朋友的关系,那么就说明这个团队是一个坏团队,否则输出好团队。解题思路暴力大法好,将每个人之间的关系都存于一个w数组之中,注意这里的数组为bool类型,暴力任意三个节点,如果他们之间的关系都为true或者false,则输出 “Bad Team!”,否则输出”Great Team”。与此同时知道了能用bool类型的数组尽原创 2017-08-19 19:50:19 · 358 阅读 · 0 评论 -
HDU 6124 Euler theorem
题目链接题目意思有两个数a,b,计算a mod b。现在忘记了b,只知道a,问你可能的结果有多少种。解题思路这就是一道规律题,我们观察可以发现我们取模的结果要不是正好除尽为0,或者比他大余它本身,还有就是余下的不同个数,但是你会发现不管是什么数,它的结果总是自身的一半加上一或者二。因为奇数的时候要加上它自身的一半那个数和它自身那个数。偶数的时候直接加上它自身就够了。代码部分#include <io原创 2017-08-15 19:23:57 · 438 阅读 · 0 评论 -
HDU 6168 Numbers
题目链接题目意思给你两个序列A,B,序列B中的数是A中任意两个数的和。现在给出你A,B序列混在一起的数,让你找出A序列输出。解题思路B序列中的数是A中任意两个数的和,那么给定的序列中最小的两个数一定是A序列中的,最大的两个数一定是B序列中的,现在就根据A中的两个数依次找,两数相加的和是B中的,就用map,每次将两数的和在map中除去,剩余的一个加入A中,再一次往后推即可。代码部分#include原创 2017-08-22 19:30:40 · 351 阅读 · 0 评论 -
HDU 6130 Kolakoski
题目链接题目意思给你一个Kolakosiki 序列1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1……这个序列由1和2组成,相邻的相等的可以划分在一起,1,22,11,2,1,22,1,22,11,2,11,22,1……. 其中第i个模块的长度就是其中的数的个数。如对于上边的序列a[1]=1,a[2]=2,a[3]=2,a[4]=1……现在问你第n个数为什么。解题思路原创 2017-08-15 19:38:40 · 1657 阅读 · 0 评论 -
HDU 6315 Naive Operations【线段树】
题目链接题目意思初始a数组为0,给你一个b数组,q次询问add x y为a数组区间x y增加1,query x y查询区间x~y中a[i]/b[i]向下取正的和值。解题思路区间查询问题,我们首先想到的就是线段树。 我们用sum数组去维护区间的和值,由于分母是固定的,那么就维护一个数组sub[root]=min(b[i]-a[i]%b[i])的值。这样如果sub[root]...原创 2018-07-28 15:39:22 · 117 阅读 · 0 评论 -
HDU 6305 RMQ Similar Sequence【笛卡尔树】
题目链接题目意思定义RMQ(A,l,r)为:序列A中,满足A[i] = max(A[l],A[l+1],…,A[r])的最大的i。如果对于任意(l,r)都满足RMQ(A,l,r)=RMQ(B,l,r)则为A和B是RMQ Similar。现在出A序列,B串中每个元素服从于[0,1]上相互独立的均匀分布。问满足与A是RMQ Similar的所有B序列中所有数之和的期望。例如1,3,2和...原创 2018-07-30 10:06:43 · 217 阅读 · 0 评论 -
HDU 6335 Nothing is Impossible
题目链接题目意思有m个人参加比赛,现在有n道题,每道题有ai个正确答案,bi个错误答案,现在每道题每个人选择一个选项,选对得一分,分数高获胜。现在问你赢家的最小分数是多少解题思路其实我也不知道啥解题思路,比赛时体面更改了两次,开始时不太理解,后来改过体面就懵懵懂懂,也不知道就A了。。。。 其实它给出每道题的正确选项个数个错误选项个数,就相当给了你选择正确答案的概率。先对b...原创 2018-08-03 19:32:28 · 218 阅读 · 0 评论 -
HDU 6325 Interstellar Travel【凸包】
题目链接Problem Description After trying hard for many years, Little Q has finally received an astronaut license. To celebrate the fact, he intends to buy himself a spaceship and make an interst...原创 2018-08-03 19:53:49 · 235 阅读 · 0 评论 -
HDU 6319 Ascending Rating【单调队列】
题目链接题目意思有一个长度为n的序列,现在给出你序列的前k个数和一个递推公式,让你计算序列的所有值。然后现在划分一个长度为m的连续区间,问你所画的所有区间中最大值异或i的和值,和区间中最大值变化次数异或i的和值。解题思路大白话这题的关键就在于求一个序列的最大值和最大值变化的次数,我们就会想到用单调队列,用单调队列维护,我们将数列倒过来去维护一个递减的单调队列,这样队头元素就...原创 2018-07-31 10:56:19 · 154 阅读 · 0 评论 -
HDU 6324 Grab The Tree【异或】
题目链接题目意思小Q和小T要玩一个游戏,现在有一颗节点数为N的树,每个节点有一个权值。现在小Q可以选择任意不相邻的节点,小Q选完以后剩余的所有节点都归小T。现在小Q和小T的分数就是所选的所有节点的权异或和,谁的分数高谁就赢了,如果分数相同就是平局。谁赢输出谁,平局输出D。解题思路根据异或的性质Q异或T会等于全部异或和。所以Q只要取异或总和最高为为1的那部分。剩下肯定比他小。但如果全...原创 2018-07-31 11:15:34 · 293 阅读 · 0 评论 -
HDU_【2017 Multi-University Training Contest 1】——1003 color tree
题目链接题目意思给你一个包含n个节点的树,用一个数字代表一种颜色,树上的路径权值为在这条路径上包含的颜色数量,这棵树总共有n*(n-1)/2条路径。求这棵树上所有路径的总权值。解题思路我们要考虑每条路上有多少颜色经过,这样求所有路径上的权值和,但是这种方法不好实现。所以我们反过来思考,我们假设每条路径上都包含了所有的颜色,那么总的路径权值和就是用颜色数*路径数,那么我们现在只要找到每种颜色没有经过那原创 2017-07-28 18:16:36 · 295 阅读 · 0 评论 -
位运算详解
基本的位运算符有与、或、异或、取反、左移、右移这6中,它们的运算规则如下:注意:在这6种操作符,只有~取反是单目操作符,其它5种都是双目操作符。位操作只能用于整形数据,对float和double类型进行位操作会被编译器报错。位操作符的运算优先级比较低,因为尽量使用括号来确保运算顺序,否则很可能会得到莫明其妙的结果。比如要得到像1,3,5,9这些2^i+1的数字。写成int a = 1 << i原创 2017-08-10 10:40:47 · 538 阅读 · 0 评论 -
HDU 6058 Kanade's sum
题目链接题目意思给你两个数n,k。接着给你一个包含1~n的序列,让你求这个序列中所有子序列中第k大值的和,当然了序列是不能改变的。解题思路一开始以为是主席树,也是类似求在不改变序列的条件下,求区间的第k大值,然后就是把所有情况都加一遍。 我们只要求出对于一个数x左边最近的k个比他大的和右边最近k个比他大的,扫一下就可以知道有几个区间的k大值是x。我们考虑从小到大枚举x,每次维护一个链表,链表里只有原创 2017-08-05 16:21:43 · 260 阅读 · 0 评论 -
HDU_【2017 Multi-University Training Contest 2】——1011 Regular polygon
题目链接 Problem Description On a two-dimensional plane, give you n integer points. Your task is to figure out how many different regular polygon these points can make. Input The input fil原创 2017-07-30 10:35:44 · 157 阅读 · 0 评论 -
HDU_【2017 Multi-University Training Contest 2】——1003 Maximum Sequence
HDU_6047题目链接题目意思给你两个含有n个整数的序列a,b,其下标从1到n,现在要求满足 a[i]≤max{a[j]-j│b[k] ≤ j < i} 这个关系式的a[n+1]到a[2n],其中bk是从序列b中任意选取的,且b中的每个数只能使用一次。现在后要求a[n+1]到a[2n]的和,并使最后的和最大。解题思路由关系式可以知道a[i]{ i | n < i ≤ 2n }的值为a[b[k]]-原创 2017-07-31 20:45:28 · 199 阅读 · 0 评论 -
HDU 6070 Dirt Ratio
题目链接题目意思给出n个数,求任意区间【left,right】的AC率中最小的那个值。 区间AC率=distinct【left,right】/(right-left+1) distinct的中文意思是唯一的,特殊的,表示区间【left,right】中不同数字的个数解题思路我们求AC率,它无非就是0~1之间的一个数字,因此采用二分答案的方法求解。 现在假设答案为mid,则 distinct【le原创 2017-08-08 10:31:29 · 226 阅读 · 0 评论 -
HDU 6060 RXD and dividing
题目链接题目意思给一棵树T,有n个结点。 给一个k,表示有k个集合,我们需要把2,3,4,…n号节点放入集合,要保证k个集合的并集等于{2,3,4,5n},并且集合互不相交。(集合可以为空) 然后每次取一个集合Si与{1}求并,得到比如{1,2,3},那么tempi = f({1,2,3});f({1}并Si)的意思是把合内的所有点连接起来的边的权值和。最后把所有权值和相加的到答案。 最后问你原创 2017-08-08 11:00:56 · 220 阅读 · 0 评论 -
HDU_【2017 Multi-University Training Contest 2】——1006 Funny Function
题目链接题目意思根据上图中所给的规律,求给定的m,n的时候,F(m,1)的值为多少。在求解过程中的结果会比较大。所以求解过程要对1e9+7取余。解题思路为了讲解方便,先将其打表:n=2 1 1 3 5 11 21 43 852 4 8 16 32 64 128 2566 12 24 48 96原创 2017-08-01 11:51:10 · 266 阅读 · 0 评论 -
HDU 6095 Rikka with Competition
题目链接题目意思给你一组n个数,代表n个选手的能量高低,现在再给你一个k,任意在n个选手中挑取两个选手比赛,如果 |ai−aj|>K那么能量高的选手获胜,另一个将被淘汰,否则两个人都有机会获胜,现在要你求有多少人有获胜的可能。解题思路如果把n个选手的能量值进行排序,那么两两相减,如果大于k,就结束一轮的循环,否则两人都有可能获胜,那么让ans++即可。具体过程看代码吧。代码部分#include <i原创 2017-08-08 19:43:37 · 637 阅读 · 1 评论 -
HDU 6092 Rikka with Subset
题目意思题目意思给你一个序列A,从A1~An,b[i] 表示元素和为i的集合个数。给你一个数列 b[] ,长度为m+1(m<=10000),让你求 序列A,并按照其字典序最小输出。解题思路设想a子集中肯定会有一个集合为空集,所以b[0],为空集的个数。那么除了空集以外b[i]如果不为零,则i为a集合中最小的值,并想办法将其在b集合中去除。 这里用了dp的思想,从i下表开始之后的动态转移方程 b[i原创 2017-08-08 20:41:44 · 205 阅读 · 0 评论 -
HDU 6090 Rikka with Graph
题目链接题目意思给你一个包含n个点m条边的无向图,现在要求这个无向图的最小权值。无向图的权值等于每对点经过的边的条数,如果两点之间没有路径,那么权值就等于n。解题思路这是一道思路题,我们很容易找到规律,可以分成三种情况。包含n个顶点的无向图最多有n*(n-1)/2条边。当m大于n*(n-1)/2时,是一种情况,那时我们直接让m等于n*(n-1)/2;此外,当m小于(n-1)时,就会有孤立的点,这是就原创 2017-08-08 20:07:38 · 283 阅读 · 0 评论 -
HDU_【2017 Multi-University Training Contest 2】——1008 To my boyfriend
题目链接代码部分#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=105;int num[maxn][maxn];int n,m;ll cal(int x, int y){ ll res=0; int c=num[x][y],L=1,R=m; for (原创 2017-08-01 11:55:15 · 256 阅读 · 0 评论 -
HDU 6103 Kirinriki
题目链接题目描述给定一个字符串,问最大字串长度为多少的时候交叉相减的绝对值之和小于等于输入的m,注意,子串不能重合。解题思路假设i是左边s1串的头位置,j是右边s2串尾位置,那么状态转移的方程不就是看abs(str[j]-str[i])+ len[i+1][j-1])是否小于等于n(len[i][j]表示这俩个串所能组成最长子串的花费是多少),如果是直接 dp[i][j] = dp[i+1][j-原创 2017-08-10 20:20:39 · 857 阅读 · 2 评论 -
HDU 6098 Inversion
题目链接题目意思首先先普及一下’a|b’代表a是b的因子,即b%a=0,’a∤b’也就是b%a!=0 给定一个序列,求i从2开始不是i倍数的序列中的最大值,依次输出解题思路暴力大法好,首先用一个结构体数组保存值与下标。然后对值进行从大到小的排序,然后依此对每个下标i找出对i取余不为零的输出。代码部分#include<bits/stdc++.h>typedef long long ll;usin原创 2017-08-10 19:23:20 · 176 阅读 · 0 评论 -
HDU 6106 Classes
题目链接题目描述学校有A,B,C三类课程,N个班的学生选课,每个班给你7个数据,代表选课程A,B,C,AB,BC,AC,ABC,的人数,数据中可能有错误的,但是至少有一个是正确的。现在要你求这N个班中至少选了1门课的最大人数。解题思路首先我们要判断数据是否错误,如果数据错误,那么直接就可以跳过不用计算。否则,我们只需要算出选A,B,C三类课程的人数就可以知道至少选一门课的人数,然后将N个班级的人数进原创 2017-08-10 19:41:57 · 450 阅读 · 0 评论 -
HDU 6105 Gameia
题目链接题目意思Bob和Alice玩游戏,要将一颗没有颜色的树进行涂色。Alice先走,图白色,Bob图黑色,并且可以将与它直接相连的点染成黑色,不管这点以前是空白的还是白色的。由于Bob是VIP玩家,可以随时在游戏中切断一条边。解题思路只有当n为偶数且Bob可以根据他的特权将这棵树切成两两相连的时候,才可以获得胜利,否则都是Alice赢。代码部分#include <bits/stdc++.h>u原创 2017-08-11 11:01:47 · 297 阅读 · 0 评论 -
HDU_【2017 Multi-University Training Contest 1】———1006 Function
题目链接题目意思给两个序列a,b;问其满足关系式f(i) = b[f(a[i])];有多少种。解题思路若想满足关系式,则a与a[i]需要成环,b与b[i]需要成环,并且a与b需要同时成环时,又因为a环包着b环,则当b环长度为a环长度的约数的时候就可以满足关系式。其中a环和b环是不会相交的。若a的其中一个循环节长度为l,那么b循环节肯定为l的因数,把满足条件的b环将其长度与数量相乘再与a循环节个数相乘原创 2017-07-28 09:24:42 · 206 阅读 · 0 评论 -
HDU_6069 Counting Divisors
题目链接题目意思给你三个数L,R,K让你求满足下面公式的答案 解题思路由题意我们可以知道L,R最大为1e12,所以我们可以用筛法筛选sqrt(1e12)之内的所有素数。 有数论中的结论我们知道,任何一个正整数x,都可以分解成若干个素数幂的积。 则 x = (p1^m1)* (p2^m2)* (p3^m3)* …..* (pn^mn); 其中p1,p2,p3…pn都是素数,m1,m2,m3原创 2017-08-05 11:13:10 · 253 阅读 · 0 评论 -
HDU_6078 Wavel Sequence
题目链接题目意思给你两个序列a,b,让你找出两个函数 f 和 g 使得 a[f]=b[g],并且a[f1],a[f2],a[f3]……a[fk]满足序列a1 < a2 > a3 < a4……为你满足关系的 f 和 g有多少种解题思路用两个二维数组sum和dp来存储b数组中每个数字作为波峰和波谷的两种情况: dp[ ][0]用来表示当前数字为波谷时的情况 dp[ ][1]用来表示当前数字为波峰时的原创 2017-08-04 16:40:12 · 234 阅读 · 0 评论 -
HDU 6318 Swaps and Inversions【归并排序】
题目链接题目意思现在有一个n个数值的无序序列,现在要求这个序列中的逆序对个数,并且每个逆序对需要支付x元。但是那你可以耍一个小把戏就是支付y元将这个序列中相邻的两个数值交换。现在问你你需要的最小支付是多少元。解题思路题目意思就是问你一个序列中有多少个逆序对。我们如果支付y元将两个相邻的数值进行交换,那么就消除了一个逆序对,和直接算逆序对的个数是相同的意思。那么问题就在于怎样才能有最...原创 2018-07-28 09:59:18 · 174 阅读 · 0 评论