
平时练习
文章平均质量分 78
风声sp
这个人很懒,还没想到说点啥
展开
-
牛客练习赛24---A
假设有n个位置需要我们去放石子,那么第一个位置我们可以放m个石子,而之后的每一个位置放的位置都要和前一个不同,那么每一个位置都有m-1个类型的石子可以放,那么答案就是,(m-1)*(n-1)+m 个石子代码如下#include <bits/stdc++.h>#define sc1(a) scanf("%d",&a)#define sc2(a,b)...原创 2018-08-11 10:21:22 · 387 阅读 · 0 评论 -
牛客练习赛24---C
当时写复杂了,发现其实就只有两种颜色,对于每一个颜色计数,然后记录每一种颜色出现的当前次数的时候是什么位置。然后每一个查询就可以做到O(1) 查询。代码如下,可以简化一下,has数组是可以不用开的吧。#include <bits/stdc++.h>#define sc1(a) scanf("%d",&a)#define sc2(a,b) sc...原创 2018-08-11 10:30:11 · 205 阅读 · 0 评论 -
牛客练习赛24---D
名字挺有意思的,排插树,虽然这是个图。算dijkstra的模版题,求最短路里面最长的那条,因为到讲台的距离总是取决于最短的那条路,但是又要求离讲台最远,那么我们通过dijkstra计算出起始点到所有点的最短路然后遍历找最大值就好。代码如下#include <bits/stdc++.h>using namespace std;typedef long lo...原创 2018-08-11 10:35:50 · 245 阅读 · 0 评论 -
牛客练习赛24---E
感觉可能有更好的方法?想到的是构图,因为n和m都很小,因此每两个点之间都可以建一条边,然后传送点之间再多建一条权值为1的边。然后跑dijkstra算法就可以找到最短路了。代码如下#include <bits/stdc++.h>#define sc1(a) scanf("%d",&a)#define sc2(a,b) scanf("%d%d",&a...原创 2018-08-11 10:41:05 · 775 阅读 · 0 评论 -
HDU-6182
打了一下数据范围,发现大概在15的时候不会爆1e18,那么就先预处理出所有的k的k次方,然后每读入一个n遍历一边查询当前的n对应的小于等于的最大的k是几。代码如下#include <bits/stdc++.h>#define sc1(a) scanf("%d",&a)#define sc2(a,b) scanf("%d%d",&a,&a...原创 2018-08-11 20:44:11 · 258 阅读 · 0 评论 -
HDU - 6186
因为这个and,or,xor都有区间的性质,因此个人感觉,可以线段树维护,查询log,查询 1 到p-1 ,然后p+1到n的这段区间得到答案,但是wa到死,有点难受。其实可以与预处理出所有的前缀和后缀,前k个and,or,xor的值,后k个这些值,在输入p的时候O(1) 查询即可。代码如下#include <bits/stdc++.h>#defi...原创 2018-08-28 22:02:57 · 304 阅读 · 0 评论 -
Codeforces Round #489 (Div. 2) ---- C - Nastya and a Wardrobe
这是一个求期望的题,因为每天有50%的可能出现被吃掉一件衣服的情况,因此这些每天的情况就构成了一颗二叉树根结点是x ,左节点是 x << 1 -1 右节点是 x << 1 ,那么假设有k天,根据二叉树的性质,在第k天就有2^k个节点,分别为2^k * x , 2^k*x -1 ,2^k*x - 2, 2^k*x - 3 ……2^k*x - (2^k-1) ,每个...原创 2018-09-15 16:54:18 · 216 阅读 · 0 评论 -
P1525 关押罪犯
并查集,自己的思路和食物链这题非常的像,把在并查集中和父亲关系为 1 记为和父亲节点在同一个集合里面,0记为不在同一个集合里面,类似的可以推出一个节点和爷爷节点的关系为value[now] = (value[father[now]] + value[now]) % 2;对边排序,从大的边开始,尽量边链接的两个点不在一个集合里面,如果在,判断关系是不是 1 ,如果是就和 ans 变量取max,最...原创 2019-02-17 15:27:07 · 207 阅读 · 0 评论