![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
暑假集训
TriAzure
靡不有初,鲜克有终。
展开
-
Day 2 J - Swaps and Inversion HDU 6318 (待补树状数组方法)| 归并排序
这道题的核心就在于,提供给我们的两种方法,找逆序对和通过交换相邻元素使升序本质上是一样的。归并排序从0 - n-1进行标号,调用时,(a[], 0, n-1)不确定有多少组时,可以while(scanf("%d%d%d", &n, &x, &y)!=EOF) 也可以while( ~ scanf("%d%d%d", &n, &x, &y) ) ...原创 2019-07-18 09:18:29 · 99 阅读 · 0 评论 -
Day 3 A - Ascending Rating HDU 6319 | 单调队列 | 思维
补题的时候去看了单调队列,贴一个最简单的最大子序和,有助于以后记不清楚的时候回顾一下。主要是注意head,tail的使用,具体表示什么,怎么判断±的条件。这道题需要注意的是,教练每一次挪动区间以后,都会重置Maxrating = -1, cnt = 0,所以才会需要我们使用单调队列。因为就算你对每个区间统计,可是如果每移动一次不重置,仔细想想就跟整个数列的Max更换没有区别。He start...原创 2019-07-21 20:45:53 · 92 阅读 · 0 评论 -
Day 5 B - Beautiful Now HDU 6351 | 暴力 | dfs | 搜索 | 剪枝(TLE之谜)
给你一串数字,和k上限的交换次数,问在k内最大可生成的值和最小可生成的值分别是多少。我的想法是,不论求最大最小,都是第x大/小的数在第x位置上,如果原本的数符合条件,那么跳过,不占用交换次数,循环到下一轮。所以我用struct来储存pos val的信息,写一个cmp来满足val升序排列,pos降序排列。之后依次取用。对于0的特殊情况,设置一个used属性,如果使用过就标记为1,对于有0的情况,临...原创 2019-07-25 21:09:58 · 116 阅读 · 0 评论 -
C - Aladdin and the Flying Carpet | 分解质因数 | 算术基本定理 | 数论 | 素数(疑问待解决)
题目大意是,给你两数x, y乘积和,与x,y所有取值情况中最小的可能的值,求x,y有多少种可能的情况。(也就是分解质因数)算术基本定理:每个正整数都可以被唯一地写成素数的乘积(此时素数根据其大小按照升序排列)。关于getprime()函数 - 素数的线性筛法 预处理,先找出1e6以内的所有素数。因为题目范围里area是1e12,所以最大的质因数就是1e6。注意要写在for(, t,...原创 2019-07-31 08:59:03 · 149 阅读 · 1 评论 -
Day 7 A - Age of Moyu HDU 6386 | 最短路 | SPFA | 链式前向星
松弛:原来用一根橡皮筋连接p和w两点,现在有一点v到w的路径更短,现在把橡皮筋w点的另一端p换成v点,这样缓解橡皮筋紧绷的压力,让其变得松弛。来自:原博关于SPFA算法来自:原博链式前向星#include <bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3f//可以使用memset//链式前向星+S...原创 2019-07-31 16:47:49 · 158 阅读 · 0 评论 -
E - Leading and Trailing | 数论 | 快速幂
For each case, print the case number and the three leading digits (most significant) and three trailing digits (least significant).题意:给你n k,要求求出n^k的前三位数和后三位数。n k会很大,直接算肯定不行,而写大数模拟的话肯定会T。所以需要数学知识来简化...原创 2019-07-27 09:17:47 · 100 阅读 · 0 评论 -
HDU 6033 Add More Zero | 数论 (位数疑问待解决)
题意:一台计算器支持[0, 2m-1]之间的整数的运算,现在给出m,求满足计算器运算条件的最大的10k,输出k。也就是已知m,求使得10k不超过2m-1的最大的k。10k <= 2m-1k = m * log102#include <bits/stdc++.h>using namespace std;#define ll long long#define endl...原创 2019-08-08 09:35:06 · 81 阅读 · 0 评论 -
C - KazaQ's Socks HDU 6043 | 规律
题意:小明有编号1-n的n双袜子。每天他会在衣柜里选取编号最小的袜子穿,并在晚上把这天穿的袜子放到篮子里。当他发现篮子里的袜子的数量为n-1时他会清洗篮子里的袜子,袜子晾干后会在第二天的晚上被收进衣柜。请问第k天的早晨他会穿编号为几的袜子?题意不难理解,最开始使用vector/set去模拟这个过程可以得出答案。但是问题是题目给出的k的范围是1e18,很明显这么大的数据是不可以直接模拟的。所以就要...原创 2019-08-08 15:49:18 · 68 阅读 · 0 评论 -
Zero Array | 思维题
题意:给你一个由n个正整数组成的数列,每次对两个数进行-1操作,最后能否将这个数列全部元素变为0主要是思维过程,我们减的过程实际就是一片片把板子拿下来,所以生成可以看作一片片放上去。观察生成的特点,可知不符合特点的一定无法减为全0序列。不难发现:生成序列每次+2,所以总的板子数目(数列和)一定是偶数想到这里交了,WA了。因为其实上面这个特点只是“每一次加两块板子放在任意位置”的生成方式...原创 2019-08-25 20:27:09 · 231 阅读 · 0 评论 -
Important Exam | 水题
题意:一个班级有n个学生,在进行一场共m道题的考试。每道题只有一个正确选项,提供ABCDE五个选项。已知所有学生的选择和每道题的分值,问如何拟定正确答案可以使全班的总分最高?统计每道题ABCDE的最大值即可。#include <cstdio>#include <algorithm>#include <iostream>using namespace s...原创 2019-08-25 20:46:30 · 249 阅读 · 0 评论 -
Maximum Median | 二分 | 本质暴力
参考题解:传送门题意:一组共有奇数个元素的数列,可以进行k次+1操作(在数列中任意选择数字)问可以生成的最大中位数是多少。这道题后来看题解看了很久才想明白二分是在干什么。其实,二分是在暴力的查询所有可能的中位数值,再验证能否在k次内生成。所有可能的中位数数值,最小的必然是原数列不经任何操作的中位数数值,最大的则要根据题目给出的数据范围确定,k最大1e9,数字最大1e9,所以最极端的情况就是这...原创 2019-08-27 10:19:40 · 261 阅读 · 0 评论 -
Water Lily | 大水题(待解决long double读入问题)
题意:勾股定理。但是遇到一个很狗屎的问题,小数位数很多的情况下用什么读。我最开始选择的Long double,但是scanf读不了(%f %lf %llf %Lf都不行),就换用cin。后来试了一下double也可以AC。double类型是双精度浮点数,占用8字节(Byte)即64位(bit),其精度是由32个bit的二进制尾数来确定的,因此准确精度是二进制精度而不是十进制精度,通常可以保...原创 2019-08-27 10:51:05 · 275 阅读 · 0 评论 -
Day 4 B - Harvest of Apples HDU 6333
大意是已知有n个苹果,问你从中最多取m个时,有共有多少种取的方案。原创 2019-07-25 12:27:46 · 71 阅读 · 0 评论 -
Day 1 A - Maximum Multiple HDU 6298 | 打表找规律
我比较菜orz后来才知道这种本质是数论的题都可以打表找规律做,以前包括这次都是自己写自己看。就很容易漏下…我最开始是发现了3 但是没注意到4的情况。再一个就是,这几天也有经验了,这种题都是数论/规律,不要像以前一样傻乎乎就写了个暴力交上去了,肯定T。#include <bits/stdc++.h>using namespace std;#define endl '\n'#...原创 2019-07-20 20:12:11 · 88 阅读 · 0 评论 -
Day 3 F - Grab The Tree HDU 6324 | 思维 | 博弈
最开始没有读清楚题,理解的是每个点的权值和它的编号相异或最后求和…后来又看成每个点编号异或的和(然后中间有一遍读入循环里i的边界写错了给T了)。题目的意思是The final score of each player is the bitwise XOR sum of his choosen vertices’ value.不过不管理解的是那种题意,都是借助异或的性质。因为是不能选相邻的点...原创 2019-07-20 20:06:30 · 150 阅读 · 0 评论 -
Day 2 G - Naive Operation HDU 6315 | 线段树 | 思维
RMQ离线算法(也就是Tarjan)不适合于区间值频繁修改的情况对区间查询问题,使用数组暴力相加的方法,求和复杂,但修改容易;通过前缀和预处理,则求和容易,修改困难;线段树是求和、修改均较高效的方法线段树在建树的时候是自上向下分割的,递归时注意mid+1的情况如果目标数组长度为n,那么tree数组简记需要4n,具体计算是要取离n最近并且比n大的一个2^n的数,并将之2(如n=5,那么最近的...原创 2019-07-18 15:28:03 · 164 阅读 · 0 评论 -
Day 1 G - Chiaki Sequence Revisited HDU 6304 | 打表找规律
https://www.cnblogs.com/mrclr/p/8423136.html里面求最大区间和的第二种方法之所以<0便将sum清零,是因为求的是最大和而非区间。所以只要更新最大和就可以。下面的ans = max(ans, sum),如果因为出现负数而开始减少那么这个和是不会被算进去的,一旦ans小于0就清空的意思是重新开始计数(找一个新的区间)。...原创 2019-07-16 14:05:42 · 170 阅读 · 0 评论 -
Day 4 D - Nothing is Impossible HDU 6335 | 水题 | 思维
看样例,每道题有(ai+bi)个选项,要出现一个人全对,那么就说明其他人要试错试出正确答案来,所有的组合方式就是(a1+b1) * (a2+b2) *…(ai+bi)#include <bits/stdc++.h>using namespace std;#define ll long longint T, n;//n个问题 m个学生ll m;int wans[200...原创 2019-07-23 20:25:42 · 90 阅读 · 0 评论 -
Day 4 L - Graph Theory Homework HDU 6343 | 水题 | 思维
题目中要求的是从编号为1的点到编号为n的点的最短路径,所以必然是直接从1到n。不过要注意只有一个点的情况orz。忘记这个WA了一发。#include <bits/stdc++.h>using namespace std;int T, n, first, last, ans;int main(){ scanf("%d", &T); while(T-...原创 2019-07-23 20:27:10 · 88 阅读 · 0 评论 -
Day 4 K - Expression in Memories HDU 6342 | 模拟
一开始想的很乱,后来发现如果先把?处理了可以大大减少讨论的难度。很多地方还是要多试几组自己想的输入数据才能发现问题……别莽交。?0??+?00?0*??0??00?00??00?0??0??0??0??2?0?3?0?3?0?00?30??0?3?000?20?0??0?0+?0?000*??0?2?00+4?0+2?0000?0?0+?*?0??3?+3?30???0+0??0000...原创 2019-07-23 20:29:39 · 78 阅读 · 0 评论 -
Day 2 B - Balanced Sequence HDU 6299 | 贪心
想到前后缀表达式那里处理括号要借助栈,处理了每个串自身内部可以成对的括号。但是由这一点,最初考虑的是,先把自身内部的处理了(除去首尾)再比较首尾的括号是和自身内部的匹配更优,还是与其他首尾匹配更优。但是一个是比较的过程不好记录,另一个是与其他首尾比较,没法像自身内部一样用栈(因为顺序是可以移动的),所以就卡住了。看了题解发现是贪心,我们其实不需要考虑首尾的括号究竟怎么处理。只要先把自己内部的能消...原创 2019-07-17 09:14:51 · 101 阅读 · 0 评论 -
Day 1 K - Time Zone HDU 6308 | 模拟 | 思维
C读入字符串的方式:char tim[10];scanf("%s", &tim);找UTC-XX.Y UTC-X.Y的情况时,因为小数是确定只有一位的,所以不需要根据长度分那么多情况来讨论,只要找小数点就好。小数点后面一位就是Y。大佬的写得非常简洁的提X Y的代码。for(int i=4;i<strlen(tim);i++) { ...原创 2019-07-17 10:19:49 · 86 阅读 · 0 评论 -
Day 6 A - oval-and-rectangle HDU 6362 | 数学 | 计算几何 | 椭圆 | 精度处理
注意对精度的处理。要求保留6位,所以应该是对第7位进行四舍五入,而如果.6f是对第六位进行四舍五入,故而需要对第七位数字-5这样不论如何都不会“入”到第6位产生问题。#include <bits/stdc++.h>using namespace std;int T, a, b;double ans;int main(){ scanf("%d", &T...原创 2019-07-29 11:11:10 · 110 阅读 · 0 评论 -
Day 4 E - Matrix from Arrays HDU 6336 | 打表找规律 | 二维矩阵前缀和
首先打表发现规律,如果L为奇数,那么行和列均以L为周期,若L为偶数,则均以2*L为周期。所以任何一个矩阵都可以拆解为若干个元矩阵+若干个部分元矩阵。二维矩阵前缀和对拍了半天没有找到不一样的地方但是就是WA……最开始数组越界藏在一个不太好发现的地方,就是getsum函数的最后一个分支,一开始我没有细分为究竟是x小于周期还是y小于周期,这样就会导致y小于周期但是x可能很大,而我的sum数组只开了...原创 2019-07-24 20:28:35 · 211 阅读 · 0 评论 -
Day 3 D - Euler Function HDU 6233 | 打表找规律
最开始犯了很蠢的错误没有T–,TLE了一发。以后都改写while(T–){}就好了。#include <bits/stdc++.h>using namespace std;#define ll long longint T;ll ans;int main(){ scanf("%d", &T); while(T) { ...原创 2019-07-20 19:54:54 · 134 阅读 · 0 评论 -
Day 3 L - Visual Cube HDU 6330 | 模拟
最开始写的时候很乱,想了大概就动手写了,到后来一直WA(要多测几组自己的样例)心态崩了,改循环的时候就一次次凭感觉改输出看效果,感觉冷静不下来去想了。出去上个厕所冷静一下之后回来重新先梳理一遍,又新开了个工程开始写orz 就,不是特别难的模拟,也没卡时间啥的,但是要耐心耐心耐心,而且要细心!这题写了三个多小时……唉#include <bits/stdc++.h>using nam...原创 2019-07-20 19:58:12 · 76 阅读 · 0 评论 -
Til the Cows Come Home | 最短路 | dijskra | 板子题
dijskra的本质是贪心,每次都找当前点下一步最近的点,然后这个找出来的点再找下去。这篇讲的很明白:传送门#include <cstdio>using namespace std;#define INF 1<<29#define maxn 2010int T, N;int Map[maxn][maxn],ans[maxn];bool vis[max...原创 2019-08-27 13:07:43 · 421 阅读 · 0 评论