STD比赛题解
斯莱特林ttg
这个作者很懒,什么都没留下…
展开
-
杭电STD第四场比赛1007题解
题目是要求判断一个4*4的数字华容道是否在120步内有解判断是否有解可以依据三条定理直接判断:1.阶数为奇数时,逆序为偶数,不用判断空缺方块的位置;2.阶数为偶数,逆序数为偶数,空缺方块被打乱位置后所在的行数与空缺方块应该在的正确位置的行数的差值为偶数;3.阶数为偶数,逆序数为奇数,空缺方块被打乱位置后所在的行数与空缺方块应该在的正确位置的行数的差值为奇数;题目给出数字华容道为...原创 2019-08-01 09:40:24 · 502 阅读 · 0 评论 -
hdu多校赛第八场1009
题库6665传递门题意,在坐标轴上给出两个矩形的坐标,判断两个矩形能将无限的空间分成几部分两种做法:一、直接用给的坐标判断两个矩形的关系(相交还是分离还是重叠),直接写的话要写很多个if,很麻烦所以建议食用第二种解法;第一种解法可以点传送门二、将坐标离散化,用dfs求连通块:离散化这里借鉴焦队的博客传送门此处分别对x和y坐标进行离散化处理for(int i = 1;i <= 4...原创 2019-08-15 16:22:01 · 105 阅读 · 0 评论 -
hdu多校赛第八场1011
题库6667给出m个班级,每个班级所在人数 a[i] 和做的奶茶数量 b[i] ,每个班级的人不能喝自己做的奶茶,求最多有多少人可以喝到奶茶只要求出奶茶数的总和sum,然后for一边班级,将能喝到奶茶的人数加起来ans,最后输出sum和ans的最小值就可以了AC代码#include<bits/stdc++.h>using namespace std;int n,m;lon...原创 2019-08-15 09:37:04 · 92 阅读 · 0 评论 -
hdu多校赛第八场1010
题库6666 http://acm.hdu.edu.cn/showproblem.php?pid=6666题目就是考察结构体排序,过题数最高的且罚时最少的排名前,用到了sort(a,a+n,cmp)只要将cmp重写一下就可以了cmp代码int cmp(pp a,pp b){ if(a.score != b.score) return a.score > b.s...原创 2019-08-15 09:17:04 · 70 阅读 · 0 评论 -
hdu多校赛第7场1011Kejin Player
题库6656题意不再详讲,一开始以为是算期望的一道题,结果发现想错了和本题相关的算法有:输入输出外挂(适用于大量输入输出,加快速度)、费马小定理求逆元、前缀和输入输出外挂模板:int Scan() { //输入外挂 int res = 0, flag = 0; char ch; if((ch = getchar()) == '-') flag = 1; ...原创 2019-08-13 10:54:50 · 83 阅读 · 0 评论 -
hdu多校赛第7场1006 final exam
题库6651题目给出n道题,总分m,至少过k题,每道题分数可能为0-m,若有一道题分数为a,要过此题,复习时间为a+1,求过k题所需的最少时间想过k题,那么n-k+1必须过一道题,这道题由于分数未知,所以保证能过的话要复习m+1时间,剩下的(k-1)道题最大分数为(m+1)/(n-k+1)向上取整,所以总时间为:m+1+(k-1)*ceil((m+1)/(n-k+1))ac代码:#inc...原创 2019-08-13 14:43:31 · 100 阅读 · 0 评论 -
多校赛第五场1007 permutation 2(推理+简单斐波那契)
这道题可以从多个样例推出规律先附上学长dfs暴力枚举所有情况的代码(太大会T)const int maxn = 1e5 + 10;int num[maxn], used[maxn];int n, x, y;ll ans;vector<int> tmp;void dfs(int x, int cnt) { if(cnt == n-1) { i...原创 2019-08-06 14:48:37 · 74 阅读 · 0 评论 -
多校赛第五场1006 string matching(扩展KMP)
扩展KMP求的是对于原串S1的每一个后缀子串与模式串S2的最长公共前缀对KMP算法进行了优化,下面是模板int Next[maxn],extend[maxn];char s[1000050],t[1000050];void getNext(char* str){ int i=0,j,pos,len=strlen(str); Next[0]=len; whil...原创 2019-08-06 13:52:40 · 79 阅读 · 0 评论 -
hdu多校赛第六场1008 TDL
gcd是求最大公约数若想消除位异或符号,可等号两边同时异或,如:a ^ b = c —> a ^ b ^ b = c ^ b —> a = c ^ b本题k的范围(1,10^18),若将k异或n,二进制的前面部分不改变,变化的是n的二进制的位数,因为f(n, m) − n 不会超过第m个与n互质的质数,m最大为100,所以可以确定上限只要确定...原创 2019-08-08 10:45:02 · 99 阅读 · 0 评论 -
hdu多校赛第六场1012 Stay Real
这道题为签到题,首先对小根堆分析一下:小根堆中,每个点的权值总是不小于父亲节点的权值。所以无论怎么取,先拿走的数一定不小于后面拿走的所以只要贪心就可以AC了附上大佬的代码#include<cstdio> #include<algorithm> using namespace std; typedef long long ll; const int N=100010; ...原创 2019-08-08 10:20:57 · 147 阅读 · 0 评论 -
hdu多校赛第十场1003Valentine`s Day
题库6693 http://acm.hdu.edu.cn/showproblem.php?pid=6693计算概率的一道题,给出几个礼物成功概率,计算只有一个礼物成功的最大概率是多少例子:20.3 0.3ans = 0.3*0.7 + 0.7 * 0.3看懂题意直接暴力一遍标成代码#include<iostream>#include<algorithm>...原创 2019-08-22 09:58:27 · 162 阅读 · 0 评论