
ACM/ICPC_多校联合训练
just_sort
Acdream.
展开
-
2015多校第7场 HDU 5372 Segment Game 树状数组,思维
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5372题意:给你n次操作,每次增加线段或者删除第i次增加操作中增加的线段,问你每次增加操作中,所增加的线段会覆盖多少条完整的线段。解法:对于新插入的线段,查询有多少个线段左端点大于等于该线段的左端点。 再查询有多少个线段的右端点大于该线段右端点, 两者之差就是答案。用两个树状数组搞定。时间复原创 2017-08-03 09:51:00 · 370 阅读 · 0 评论 -
HDU 5744 Keep On Movin 贪心,找规律
题目链接:这里 题意:有n个字符,每个字符ai个,你需要构造一些字符串,使得这些字符串都是回文串,而且这些回文串恰好用完所有字符而且最短的回文串最长,输出这个长度。 解法:贪心去构造,考虑奇数的字符,我们可以拆成偶数+1,那么显然我们知道,奇数的就一定是单独的一行,然后偶数一定要成对的扔进去。//HDU 5744#include <bits/stdc++.h>using namespace s原创 2017-03-20 15:23:22 · 375 阅读 · 0 评论 -
2016多校5 hdu 5783 Divide the Sequence 贪心
题目链接:这里 题意:说的是,给你n个数,让你分成最多的块,使得每一块的任何前缀,都是大于0的。问你最多分成多少块? 解法:把长度为n的序列分成尽量多的连续段,使得每一段的每个前缀和都不小于0。保证有解。 从后往前贪心分段即可。//HDU 5783#include <bits/stdc++.h>using namespace std;const int maxn = 1e6+7;long原创 2017-03-20 14:57:49 · 428 阅读 · 0 评论 -
HDU 5821 Ball (贪心排序) -2016杭电多校联合第8场
题目链接:这里 题意:T组数据,每组给定一个n一个m,在给定两个长度为n的数组a和b,再给定m次操作,每次给定l和r,每次可以把[l,r]的数进行任意调换位置,问能否在转换后使得a数组变成b数组。 解法:贪心,用结构体存储a数组,一共两个域,一个是值,一个是下标,这个下标指的是他最后应该在的位置即这个值在b数组中的下标。随后m次操作可以看做是对a数组的lr这个区间进行m次sort,sort是根据原创 2017-03-20 14:44:26 · 566 阅读 · 0 评论 -
2013 Multi-University Training Contest 4 Group(离线+BIT)
GroupTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2203 Accepted Submission(s): 1147Problem DescriptionThere are n men ,every m原创 2016-09-16 15:51:51 · 574 阅读 · 0 评论 -
多校第8场&&HDU 5821
【题意】题目给了两个代表颜色的序列,然后给了q个操作,每个操作有个[l,r]区间,表示你可以把[l,r]区间里面所有的数任意排列,问最后能否利用这些操作使得a变到b数组。【解题方法】【AC 代码】#include using namespace std;const int maxn=1002;pairp[maxn];int main(){ int T; int原创 2016-08-11 19:21:56 · 762 阅读 · 0 评论 -
2015 Multi-University Training Contest 1 OO’s Sequence
OO’s SequenceTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 3612 Accepted Submission(s): 1330Problem DescriptionOO has got a a原创 2016-09-13 20:26:39 · 654 阅读 · 0 评论 -
2015 Multi-University Training Contest 8 The sum of gcd
The sum of gcdTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1156 Accepted Submission(s): 508Problem DescriptionYou have an arra原创 2016-09-13 10:45:11 · 540 阅读 · 0 评论 -
2016多校联合训练7&&HDU5816
【题意】一个怪初始有P的血量,并且这个人初始有n次抽牌机会,并且这个抽牌是可以换两次抽牌机会的,还有M张攻击牌,问用这些攻击牌和N次抽牌机会杀死怪物的概率。【解题方法】状压DP+动态内存分配,这道题如果静态开会无线MLE。【AC 代码】#include #include #include #include using namespace std;#define LL lo原创 2016-08-10 08:46:58 · 788 阅读 · 0 评论 -
2015多校第九场 HDU 5400 Arithmetic Sequence 数学
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5400题意:定义(d1,d2)算术序列为:对于给定的序列b1,b2,...,bn,存在i使得bj+1=bj+d1( j∈[1,i) );bj+1=bj+d2(j∈[i,n)).现在给出d1,d2和一个序列a1,a2,...,an,找出有多少个区间[l,r]满足(d1,d2)算术序列。解法:我们可原创 2017-07-30 14:28:15 · 314 阅读 · 0 评论 -
2015多校第九场 HDU 5396 Expression 区间DP,组合数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5396题意:给你n个数和n-1个操作符(2解法:题解来自:点击打开链接设dp[i][j]为第i个数到第j个数的所有方案的和,那么假设我们已经枚举到区间i,j(i dp[i][j] += (dp[i][k] * A[j - (k + 1)] % mod + dp[k + 1][j] * A[k原创 2017-07-30 15:36:23 · 427 阅读 · 0 评论 -
2015多校第九场 HDU 5399 Too Simple
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5399题意:求满足f1(f2(...(fm(i))...))=i的未知的函数有多少种可能。解法:已经膜得如此明显了。。答案是(n!)^(m-1),m为-1的个数,因为m个不确定的函数,其中的m-1个固定了,那么还有一个也就固定了。每个不确定的都有n!种方案。如果m为0,则有0种或者1种方案。原创 2017-07-30 19:51:01 · 359 阅读 · 0 评论 -
2015多校第7场 HDU 5375 Gray code 格雷码,DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5375题意:给你一个二进制串,带’?’的位置可以由你来决定填’1’还是’0’,补充完整之后转换成格雷码表示,每一个位置都有一个权值a[i],只有格雷码为’1’的位可以加上权值,问你最终权值之和最大为多少。解法:简单DP。二进制a1 a2 ... an,对应的格雷码为a1 (a1 xo原创 2017-08-02 21:14:28 · 383 阅读 · 0 评论 -
2015多校第7场 HDU 5373 The shortest problem 规律,暴力
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5373题意:把一个数的数位之和加到这个数的后面,构成新数,继续这样操作,操作m轮,问最后这个数可以整除11吗?解法:能被11整除的数的特征 把一个数由右边向左边数,将奇位上的数字与偶位上的数字分别加起来,再求它们的差,如果这个差是11的倍数(包括0),那么,原来这个数就一定能被11整除。代码原创 2017-08-02 20:44:38 · 388 阅读 · 0 评论 -
2015多校第7场 HDU 5371 Segment Game 思维,Manacher算法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5371题意:求形如ABA(B与A对称0)的串的最大长度。解法:先用manacher预处理出以每个点为中心的最长回文子串长度,枚举第二个部分即B的起点,再枚举串的长度,发现可行则更新答案(代码中非常清楚了)。可以用已经得到的ans剪枝。我求答案的时候用i++,j--枚举T了,改成i+=2,j-原创 2017-08-02 16:24:00 · 293 阅读 · 0 评论 -
2015多校第九场 HDU 5402 Travelling Salesman Problem 棋盘染色法,构造
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5402题意:现有一个n*m的迷宫(n行m列),每一个格子都有一个非负整数,Teacher Mai想要从迷宫的左上角(1,1)到迷宫的右下角(n,m),并且使得他走过的路径的整数之和最大,问最大和为多少以及他走的路径。解法:为什么要这么做?看论文:点击打开链接 这是棋盘染色的论文知道这原创 2017-07-31 16:53:50 · 417 阅读 · 0 评论 -
2015多校第8场 HDU 5380 Travel with candy 贪心,单调队列
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5380题意:一个人从0走到n知道ai为i节点到0的距离,没行走单位距离要消耗一颗糖,在所有节点中可以进行买糖和卖糖价格为sell[i]和buy[i],问走到n节点话费最小为多少解法:1、保持油箱的油一直是满的。2、到达每个城市之后,先将到达这个城市的花费减掉,这些消耗掉的应该原创 2017-08-02 15:12:54 · 444 阅读 · 0 评论 -
2015多校第8场 HDU 5389 Zero Escape DP,递推
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5389题意:给出n个数和两个值A,B,要求将n个数分成两部分,使得每部分数和的数根的值等于A和B,求种数解法:DP。 dp[i][j]表示取前i个数字中的若干个,按给定规则,算出来的和为j的方案数,dp[i][j]=dp[i-1][j]+dp[i-1][tmp](tmp为j-arr[i],若原创 2017-08-01 10:53:18 · 362 阅读 · 0 评论 -
2015多校第8场 HDU 5385 贪心,最小生成树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5385题意:给了一个有向连通图,要给图中的每一条边加一个权值,使得满足dis[1]dis[x+1]>dis[n]成立,x可以取到n。解法:官方题解如果我们知道每个点的dis值和最短路径树的话,方案是很容易构造的我们可以采取贪心做法,一开始将1号点作为最短路径树的根,然后左原创 2017-08-02 10:17:05 · 337 阅读 · 0 评论 -
2015多校第8场 HDU 5387 Clock 模拟,计算时钟指针角度
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5387题意:给你一个格式为hh:mm:ss的时间,问改时间时针与分针、时针与秒针、分针与秒针之间夹角的度数是多少,若夹角度数不是整数,则输出最简分数形式A/B,即A与B互质。解法:该题的思路很简单,只需先将时针、分针、秒针代表的时间转换成距离0刻度的角度,然后再求两者之间夹角的度数就会方便许多,原创 2017-08-01 10:57:29 · 448 阅读 · 0 评论 -
多校联合训练7&&HDU 5810
【解题方法】【AC 代码】#include using namespace std;#define ll long longint main(){ ll n,m; while(scanf("%I64d%I64d",&n,&m)!=EOF) { if(n==0&&m==0) break; ll ans1=(m-1)*n;原创 2016-08-09 19:58:16 · 786 阅读 · 0 评论 -
多校联合训练7&&HDU5813
【题意】给定一个DAG上每个点和多少个点间接连接,然后要让我们自己搞一个图,满足这个条件。【解题方法】贪心水题。将顶点按能到达的点数从小到大排序,排好序之后每个点只能往前面的点连边. 因而如果存在一个排在第i位的点,要求到达的点数大于i-1,则不可行;否则就可以按照上述方法构造出图. 复杂度O(N^2).注意,这哥地方数字开小会TLE,队友把数组改成2010的才能过,不然TLE。。。可能姿势问原创 2016-08-09 19:35:24 · 525 阅读 · 0 评论 -
多校联合训练4&&HDU5775
【解题方法】考虑一个位置上的数字c在冒泡排序过程的变化情况。c会被其后面比c小的数字各交换一次,之后c就会只向前移动。数组从右向左扫,树状数组维护一下得到每个值右边有多少个比其小的值,加上原位置得到最右位置,最左位置为初始位置和最终位置的最小值。时间复杂度O(n lg n)O(n\ lg\ n)O(n lg n)【AC 代码】#includeusing namespace std原创 2016-07-28 20:08:52 · 782 阅读 · 0 评论 -
多校联合训练4 &&5773
【解题方法】0可以转化成任意整数,包括负数,显然求LIS时尽量把0都放进去必定是正确的。因此我们可以把0拿出来,对剩下的做O(nlogn)的LIS,统计结果的时候再算上0的数量。为了保证严格递增,我们可以将每个权值S[i]减去i前面0的个数,再做LIS,就能保证结果是严格递增的。【AC 代码】#include #include #include #include using n原创 2016-07-28 20:06:49 · 424 阅读 · 0 评论 -
多校联合训练4&&HDU 5763
【解题方法】对于这个问题,显然可以进行DP:令dp[i]表示到i结尾的字符串可以表示的不同含义数,那么考虑两种转移:末尾不替换含义:dp[i - 1]末尾替换含义:dp[i - |B|] (A.substr(i - |B| + 1,|B|) = B)那么对于末尾替换含义的转移,需要快速判断BBB能不能和当前位置的后缀匹配,kmp或者hash判断即可。复杂度:O(N)【原创 2016-07-28 20:04:56 · 803 阅读 · 0 评论 -
2016第三场多校联盟训练1011
【题意】平面上有n个点,问能不能找到4个点使得A->B的距离==C->D的距离,并且这两条线段不完全重合。还有一个条件整数点,点数1e6。【解题方法】【吐槽】这题没说清楚A【AC代码】#include using namespace std;const int maxn=3e5;struct node{ int x,y;}a[maxn];int原创 2016-07-27 09:31:28 · 626 阅读 · 0 评论 -
2016第三场多校联盟1002
【题意】不想解释了。【解题方法】【AC code】#includeusing namespace std;int a[10000];int main(){ int n; while(~scanf("%d",&n)){ for(int i=1;i<=n;i++){ scanf("%d",&a[i]); }原创 2016-07-27 09:41:37 · 906 阅读 · 0 评论 -
2016第三场多校联盟1001
【题意】给一个数,如果5次开方能开到1的话就输出次数,否则输出TAT。【解题方法】水题,考虑上界就可以了。【AC代码】#includeusing namespace std;#define L 100000string add(string a,string b)//只限两个非负整数相加{ string ans; int na[L]={0},nb[L]={0};原创 2016-07-27 09:37:22 · 452 阅读 · 0 评论 -
2016第三场多校联盟训练1010
【题意】一个人要从(0,a)点到达(0,0)点,并且必须满足行船时,船头的方向一直指向(0,0)点,问要到达(0,0)点的时间。【解题方法】首先这个题微分方程强解显然是可以的,但是可以发现如果设参比较巧妙就能得到很方便的做法。先分解v1v_1v1,【PS】这题纯属队友瞎搞过了,他也不知道怎么推出来的,反正那样写能过样例。。。就莽一波【AC 代码】#in原创 2016-07-27 09:25:27 · 615 阅读 · 0 评论 -
2016第三场多校联盟训练1003
【题意】给出N*M的棋盘和棋子的类型,两人以最优策略轮流走.棋子初始时在(1,1), 先走到(N,M)者获胜.(只能往右下角方向移动)。问对于给定的情形先手胜、败、平.【解题方法】博弈。king:可走到周围的8个格子.当前位置(i,j)的状态由(i+1,j) (i,j+1) (i+1,j+1)确定.rook:可以横着竖着走任意个格子.简单推理可得只有i==j时必败,其余必胜原创 2016-07-27 09:15:47 · 840 阅读 · 0 评论 -
多校2016&&HDU.5723 Abandoned country
【题意】给了一个图,求最小生成树,然后在n个点任意选两个点。问在这Cn2中选择中,每种选择的两个点的距离的和和Cn2的比值就是期望值!实际上对于每条边就是边权*左子树的大小*右子树的大小的和!今天队友写的这个题,贴他的代码!【AC代码】#includeusing namespace std;const int N =3e6;#define LL long longint hea原创 2016-07-19 19:48:19 · 1252 阅读 · 0 评论 -
多校&&HDU 5726 GCD
【题意】给了你n个数,然后q个查询,每次查询有多少个l,r区间队等于当前这个区间【L,R】的gcd!【解题方法】区间gcd用线段树维护,RMQ也可!然后map来暴力统计就行了,复杂度nlognlogn!【AC 代码】#include using namespace std;#define ll long longconst int maxn=1000010;struct nod原创 2016-07-19 20:42:44 · 1226 阅读 · 0 评论 -
多校&&HDU.5724 Chess
【题意】给出了n*20的矩阵,然后每一排有若干个棋子,这些棋子可以向右移动。如果相邻右边也有棋子,那么可以跳过棋子直到找到一个空白位置为止!反正我是对这道题没有想法,给队友说了题意,他马上就说出了预处理sg函数。ORZZZZZ。但是因为读题失误,这个题卡了好久好久。。。【AC代码】鉴于这道题写的代码太丑,就发一个类似于标程的代码吧!#include using namespace原创 2016-07-20 10:25:43 · 883 阅读 · 0 评论 -
2016多校联合训练7&&HDU5818
【题意】给出两个栈A B(初始时为空),有三种操作:push、pop、merge.其中merge是按照A B中元素进栈的相对顺序来重排的.【解题方法】模拟水题,优先队列模拟即可。【AC 代码】#include using namespace std;struct node{ int v,ti; bool operator<(const node &rhs) cons原创 2016-08-09 19:27:49 · 874 阅读 · 0 评论 -
多校联合训练10&&HDU 5861 Road
【题意】 给你n个村庄,每两个相邻的村庄有一条路,m个操作,每次都要从一个村庄走到另外一个村庄,每一条路每次都有一个维修的费用,每条路一开始是关闭的,你可以打开一次,关闭一次。问你最少的费用是多少。【解题方法】 copy一遍题解:为了使得花费最小,对于一段路来说,它的打开时间就是最早一次被用到到最后一次被用到这段时间.对于每一个操作a,b,在两原创 2016-08-19 18:09:39 · 1019 阅读 · 0 评论 -
2016多校联合训练10&&HDU5857 Median
Problem DescriptionThere is a sorted sequence A of length n. Give you m queries, each one contains four integers, l1, r1, l2, r2. You should use the elements A[l1], A[l1+1] ... A[r1-1], A[r1] and A[原创 2016-08-19 15:50:32 · 712 阅读 · 0 评论 -
多校训练10&&HDU5862 Counting Intersections
【题意】真水的题。。不知道我们队干了什么,卡在A题这个水题几个小时,太悲哀了。【解题方法】这不好说,去偷一份我同学的解题方法吧,思路大概都是这样,扫描线的基础题了,BIT维护信息,扫描线扫过去就完了。因为题目已经说明所有的线段都是平行于坐标轴的那么,线段无外乎两种:①平行于x轴;②平行于y轴那交点必定只有竖向与横向的线段才会产生另外,此题数据规模显然是不允许我们进行O(原创 2016-08-18 21:20:18 · 1894 阅读 · 1 评论 -
多校联合训练5&&HDU5792
【题意】求有多少种四个数满足Aa Ad,1 < =a < b < = n ,1 < = c < d < = n【解题方法】4个数两两不同,1 A_d。定义:rg(x)=∣{y∣x<y<=n,Ax<Ay}∣rg(x) = \left | { y | x < y <= n, A_x < A_y } \right |rg(x)=∣{y∣xy=n,AxAy}∣lg(x)=∣原创 2016-08-03 10:59:54 · 906 阅读 · 0 评论 -
多校联合训练5&&HDU.5791 Two
【题意】给了A,B两个序列,求A,B的公共序列的个数。【解题思路】dp[i][j]表示A序列前i个数和B序列前j个数的相同子序列对有多少个。复杂度O(n2)O(n^2)O(n2)【AC 代码】#includeusing namespace std;#define LL long longconst int N =2e3;const int MOD =1e9+7;int原创 2016-08-03 10:30:35 · 685 阅读 · 0 评论 -
2016多校联合训练5&&HDU5784 How Many Triangles
【题意】给了N(N【解题思路】赛后看别人题解学的,直接统计锐角三角形较困难,考虑问题的反面,统计直角三角形、钝角三角形、平角三角形(暂时这么叫吧QAQ)。 首先枚举三角形的一个端点A,对其他点进行象限为第一关键字,极角为第二关键字排序。 然后使用三个指针,进行O(n)的扫描。 具体做法为用 i 指针指向三角形的第二个端点B。我们可以假想通过平移和旋转,把A点置于平面直角坐标系原创 2016-08-03 09:52:57 · 1160 阅读 · 3 评论