小技巧
beckyUp
他强任他强,过题我在行
展开
-
codeforces 686D树的重心
题目分析要求树以及树的重心性质重心 子树个数 *2 ≥\ge≥ 所有个数代码详解#include <bits/stdc++.h>using namespace std;const int maxn = 3e5+50;vector<int>G[maxn];int ans[maxn];int sz[maxn];int fa[maxn];void dfs(...原创 2019-11-06 17:59:01 · 207 阅读 · 0 评论 -
牛客练习赛53 富豪凯匹配串【bitset】
题目大意给你一些01串 (1000个串,串长1000)然后给你q(3000)个询问 ,每个询问给一串 ,如1__0__由1,0,_ 组成,_ 表示可以匹配0或者1题目分析这个题显然不能暴力匹配由于符号只有0和1所以我们可以发现如果我们要匹配11&1 = 1如果我们要匹配01&0 = 0如果我们要匹配_0&1 = 0 ,0&0 =0因此,我...原创 2019-10-12 17:55:51 · 188 阅读 · 0 评论 -
codeforces C - Dwarves, Hats and Extrasensory Abilities
这个交互式的题目非常巧妙你给出一个点,他给你一种颜色,无论他给你什么颜色,你都可以找出一条线,能够把不同颜色的点分开思路如果两个点 颜色一样,那么第三个点必然不在两个点的中间,如果两个点颜色不一样,就把第三个点放在两个点的中间就好了#include <bits/stdc++.h>#define cl(a) memset(a,0,sizeof(a))#define ll lo...原创 2018-10-17 22:13:58 · 186 阅读 · 0 评论 -
uva 11300 分金币【单变量极值问题 】证明过程
原创 2019-01-10 22:13:26 · 144 阅读 · 0 评论 -
uva 10795 新汉诺塔问题【思维】
证明过程书上给的很详细了说几个易错点1、求2^(k-1) 时,可以使用快速幂,可以直接暴力,可以用 (1<<(k-1)) 但要注意,会超出int 范围,所以这里要用 1LL2、在我们分解只要找到最大的不在位置上的数。然后往下递归就可以了。递归的过程中就可以将其中的算好#include <bits/stdc++.h>#define cl(a) memset(a,0,...原创 2019-01-16 21:29:34 · 340 阅读 · 0 评论 -
UVA 11462 年龄排序【快速读入】
了解一下快速读入的代码inline int readint(){ char c = getchar(); while(!isdigit(c)) c=getchar(); int x=0; while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); } return x;}...原创 2019-01-16 23:44:20 · 163 阅读 · 0 评论 -
K个最小和【优先队列】
题目大意有k个整数数组,各包含k个元素。在每个数组中取一个元素加起来。可以得到kk个和。求这些和中最小的k个值(重复的值算多次)输入格式输入包含多组数据。每组数据第一行为一个整数k(2≤k≤750)。以下k行每行包含k个不超过106。输入结束标志位文件结束符(EOF)。输入文件不超过5MB.输出格式对于每组数据,输出k个最小和的值,并按照从小到大的顺序排序。题目分析若只有两列数 则有...原创 2019-04-17 23:21:23 · 374 阅读 · 0 评论 -
一些简化代码的小技巧
tips本文专门用于介绍一些非常好用的函数和操作,学习一个是一个。可以使得比赛的时候大大简化工作量。计算二进制中的1的个数__builtin_popcount(x)计算gcd__gcd(x,y)计算全排列next_permutation(a,a+n)...原创 2019-04-28 19:20:11 · 321 阅读 · 0 评论 -
Frequent values UVA - 11235【RMQ 区间最大值】
稍微转化一下,将若干个相同的数合并成一个区间,权值为数的个数,构成一个新的数据将这些数据求区间最值就可以了。#include <bits/stdc++.h>#define cl(a) memset(a,0,sizeof(a))#define sc(x) scanf("%d",&x)using namespace std;const int maxn = 2e5+50...原创 2019-04-25 10:33:57 · 242 阅读 · 0 评论 -
Wanaalfy Summer Camp Round 3 A Knight 【大规模贪心,小规模暴力】
题目分析:这个题和bzoj 1193 很类似,唯一的区别就是这个n,m特别大,所以要求我们在处理大数据的时候,尽可能的把答案缩减到一个合适的范围内,如果数据很大的话,一开始肯定是走 1*2往前走更合适,我们首先假设 x&gt;=y&gt;0,另外三个象限所在的点走法相同,所以在这种情况下,我们只要判断x,y的大小关系,如果x&gt;y 我们就往x方向走两步,y方向走1步,走到当x=y的时候,交...原创 2018-08-06 11:11:57 · 294 阅读 · 0 评论 -
CCPC-Wannafly Camp #4 电音之王 【O(1)快速乘法】
板子题 知道这个板子就可以很容易暴力了#include <bits/stdc++.h>#define cl(a) memset(a,0,sizeof(a))using namespace std;typedef long long LL;int n,m,k;const int maxn=1050;const LL inf=0x3f3f3f3f;inline ...原创 2018-08-06 09:30:44 · 516 阅读 · 2 评论 -
code forces 894C [分割构造gcd]
题目大意 给你一串序列,序列中的每一个数都为一个原始序列中的某一个连续子序列的GCD 让你构造一个原始的子序列题解,这个题对于构造一个原始的子序列,我们很容易发现,如果里面最小的那个数不是某一个数的GCD的话,那么必然构不成这样一个序列,但是我们发现如果要构造一个序列,其中不同的连续子序列的GCD要在给定序列中出现的复杂度就比较高了,所以我们尝试将该序列的每一个子序列的GCD 都变相同,这样我们用原创 2017-11-20 22:16:15 · 259 阅读 · 0 评论 -
codeforces 894B
题目大意:给定一个m*n的方格,在其中放入1或者-1 使得每行每列的乘积都为K 问有多少种放法思路:解法其实只有一句话,但是我想说的是,我真的想了很久没有想到这个角度,之前的时候Trader说想复杂了,其实很简单,但我觉得并不是的,并不是想复杂了的问题,而是角度的切入有问题,这个题我们对于一个图来说前M-1列和N-1行可以任意排,只要留下一行一列来控制他的最后的乘积就可以了,所以最后的结果是 2[原创 2017-11-20 22:05:32 · 244 阅读 · 0 评论 -
codeforces 920C【巧解】
这是一道非常简单的题,题目大意就是,给你一个从1-n的一个排列,再给你一个由0和1组成的串s,要求如果第i位出现了1 那么原先的排列中的第i个数和第i+1个数能进行交换,不限交换次数,问你最后能否使得该排列升序一般我们的解题思路都是 我们去找连续的1存在的位置,然后给这一串数据排好序,再对处理过的串进行升序分析。 思路很简单,我们也很容易想到,而且这样的话时间复杂度也是O(nlogn)当原创 2018-02-05 21:20:34 · 248 阅读 · 0 评论 -
2018年全国多校算法寒假训练营练习比赛(第四场) A 石油采集
链接:https://www.nowcoder.net/acm/contest/76/A 来源:牛客网题目描述随着海上运输石油泄漏的问题,一个新的有利可图的行业正在诞生,那就是撇油行业。如今,在墨西哥湾漂浮的大量石油,吸引了许多商人的目光。这些商人们有一种特殊的飞机,可以一瓢略过整个海面20米乘10米这么大的长方形。(上下相邻或者左右相邻的格子,不能斜着来)当然,这要求一瓢撇过去的全部是...原创 2018-02-11 23:03:54 · 470 阅读 · 0 评论 -
codeforces 963A/964C Alternating Sum【数学】
题目大意:给你一个n,a,b,k 有n+1个数据,让你求∑ni=0sian−ibi∑i=0nsian−ibi\sum_{i=0}^{n}s_{i}a^{n−i} b^i 答案取模1e9+9 条件是这n+1个数据每k个是一个循环 1<n,a,b<=1e91<n,a,b<=1e911<k<=1e51<k<=1e51bk/akbk/akb^{k}/...原创 2018-04-19 15:18:30 · 385 阅读 · 0 评论 -
矩阵快速幂的模板
struct matrix{ ll t[64][64];}re,x;int lim,n;matrix operator * (matrix a,matrix b){ int i,j,k; matrix c; for(i=0;i<=lim;i++) for(j=0;j<=lim;j++) { c.t[i][...原创 2018-04-24 09:36:47 · 413 阅读 · 0 评论 -
codeforce 964D Destruction of a Tree[dfs]
题目大意:给你一棵树,每次只能删除度为2的结点,问你能否将整棵树删除,如果可以的话,就输出路径题目分析,对于一棵树的某一个结点的子树来说,如果他的所有结点的度都是奇数,而该结点的度是偶数的话,那么其一定为一个能够先删除的结点,因为如果不先删除该结点,而先删除该结点的父结点,那么这个结点的度就会变为奇数,就不能被删除了 所以只要用dfs进行递归,找到需要的结点,再用dfs找路径即可#inc...原创 2018-04-25 21:22:22 · 249 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第四场) D Another Distinct Values(找规律)
这个题目要求给n*n的一个方阵中,填入0,-1,1 所有行和列的和都是不同的数 n是偶数的一个阵的话,前n/2行就依次减少1 第一行 111……111 第二行 111……110 第三行 111……100 …… 第n/2行 11…100…1 后n/2行把0放左边,但是0的个数从1开始 0 -1 -1 ……-1 -1 ...原创 2018-07-28 19:06:24 · 143 阅读 · 0 评论 -
区间求差 hihocoder 1305
题目大意:给定 A B两个区间,求在A区间不在B区间的线段长度 这个题一开始的时候想用线段树做,但是耗内存太多了,后来发现 我们对一个区间标记他的左右端点,遇到左端点+1,遇到右端点-1,这就可以判断某个点是否在区间内,同样这道题也用这样的方法,把所有的端点排序,当某一个端点在A内不在B内的时候,它到下一个断定建的距离,一定是要求的距离#include <bits/stdc++.h>usin原创 2017-10-21 21:11:57 · 275 阅读 · 0 评论