
随笔记
悲伤的牛奶
保持努力,保持乐观。
展开
-
git使用vimdiff模式比对代码
今天看到同事用git diff看代码差异。。一整屏的凌乱的红绿色。。马上给他安利了vimdiff模式比对代码,效率高多了配置也非常简单,三个命令。第一个git config --global diff.tool vimdiff意思就是用vimdiff模式比对代码这样每次要输入git difftool,麻烦,alias一下git config --global alias.d difftool这样每次用git d 就可以了git d 发现每次会有确认的提示,一般不需要这个原创 2021-11-04 23:15:41 · 1035 阅读 · 1 评论 -
寒假训练总结
好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊好无聊想出门想出门想出门想出门想出门想出门想出门想出门想出门想出门想出门想出门想出门想出门想出门想出门想出门想出门想出门想出门想出门...原创 2020-01-31 15:44:05 · 354 阅读 · 0 评论 -
三角形最长周长nlogn解法
看了看白书,一个题目:给n根棍子,长度分别为a[i],选出3个组成周长尽可能长的三角形。书下面专门写了个有nlogn的解法,我还想不出来。。。惭愧。解决方法其实很简单,排个序,然后只需要挨个判断左边两个相邻的边能否组成三角形即可。因为如果相邻的无法组成三角形,更左边的就更不可能了。感觉自己好傻逼。。还是贴个代码吧#include<set>#include<...原创 2018-09-05 22:59:26 · 618 阅读 · 0 评论 -
计算中缀表达式的值
在openjudge上的一个题,想了想没思路去看了博客才知道。。题目链接就不发了,谁知道以后还在不在。题目大意如题。解题思路:有很多前缀表达式转成后缀表达式来做的,我觉得很麻烦(懒),所以就找了直接求值的开两个栈,分别保存符号和数字遇到数字就直接压入数字栈(转换一下即可),遇到符号的情况:1,‘(’ 直接压进去,等下一个右括号2,‘)’, 说明这个时候应该运算了,运算...原创 2018-09-13 18:04:54 · 784 阅读 · 0 评论 -
使用c++11生成随机数
c++的rand()函数只能生成小于3e4(int16)的随机数,很多时候不够用使用rand() * rand()实际上也不符合分布update:以前的删了,都没初始化种子,以后就用这个吧。#include<chrono>mt19937 rng((int)chrono::steady_clock::now().time_since_epoch().count());...原创 2018-09-25 21:37:40 · 434 阅读 · 0 评论 -
Rope学习
Rope大法好!不会写Splay,就算会也懒得写,一些基本操作:#include<iostream>#include<ext/rope>using namespace std;using __gnu_cxx::crope;/* crope test; test.push_back(x);//在末尾添加x test.insert(po...原创 2018-10-09 22:27:42 · 862 阅读 · 0 评论 -
个人头文件、预操作
#include<set>#include<map>#include<cmath>#include<ctime>#include<queue>#include<stack>#include<cstdio>#include<string>#include<vector>#i...原创 2018-11-02 21:31:30 · 572 阅读 · 3 评论 -
优先队列(priority_queue)的定义,重载
首先说简单的定义:priority_queue<int, vector<int>, less<int> > p;priority_queue<int, vector<int>, greater<int> > q;表示定义了两个优先队列,装的都是int,p从大到小排,q从小到大排(为啥与认知相反?大概是里面用的是堆吧...原创 2018-11-12 21:19:48 · 694 阅读 · 0 评论 -
欧拉函数模板
#include<bits/stdc++.h>#define rep(i, a, b) for(int i = a; i <= (b); i++)const int maxn = (int)1e5 + 5;using namespace std;//单个数的欧拉函数值int Euler(int n){ int ret = n; int m = sqrt(n);...原创 2018-11-17 15:40:52 · 160 阅读 · 0 评论 -
蔡勒公式求任意日期是星期几
原理不谈,直接百度“蔡勒公式”,本文直接谈代码实现(c++)传入年月日,返回的就是星期几了int Day(int year, int month, int day){ int ret = 0; int c, y, m, d; if(month <= 2){ c = ( year - 1 ) / 100; y = ( year - 1 ) % 100; m = mo...原创 2018-12-19 14:29:03 · 361 阅读 · 0 评论 -
快速读入、输出模板
inline int read(){ char ch = getchar(); int x = 0, f = 1; while(ch < '0' || ch > '9'){ if(ch == '-') f = -1; ch = getchar(); } while('0' <= ch && ch <= '9'){ x = x * 10...原创 2019-04-02 12:48:07 · 253 阅读 · 0 评论 -
武汉游记
赛前和队友开玩笑说这次来武汉主要就是来旅游的,没想到最后真的成了旅游队。。只能说除了比赛各方面的体验都挺好的,湖北省由于竞赛环境很差,才第二届省赛,所以能很明显感受到这个比赛很水,题目是由武汉大学学生自己出的。。比赛时间因为赞助商宣讲推迟了十分钟。。比完赛连个牌子都没有。。发了个空壳红证书拍照,拍完还被收了回去。。种种种种,要吐槽的地方太多了,不过来武汉朋友和姐姐都请我吃饭还是挺开心的哈哈。...原创 2019-04-15 08:16:31 · 586 阅读 · 1 评论 -
随手记
今天看到这样一个问题,说是能在sqrt(n)的时间里求出以下这个式子:由时间复杂度推解法,sqrt(n)就想到枚举因子,所以想到算贡献。所以其实就是把每一个均摊开,枚举因子算贡献,上式就变成了:当然这只是粗略的,很容易发现后面的本身为因子的贡献没有算进去,所以答案是:Over....原创 2019-09-11 12:49:40 · 213 阅读 · 0 评论 -
HDU 4815 : Little Tiger vs. Deep Monkey
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4815题目大意:n个问题,每个问题不同分值只有两个选项,随机选,给一个概率P,求最少有多少分才能保证赢的概率不小于P、解题思路:很容易想到是动态规划,然而有什么用呢?哈哈注意到每个题目的可能价值比较小,总价值最多不过4e4,用dp[i][j]表示做前i道题得到j分的概率,最后从0到总价值遍历...原创 2018-09-01 23:52:51 · 180 阅读 · 0 评论 -
进制转换
汇编课好无聊啊,随便写写给一个十进制数,转换成其他任意2-16进制数思路很简单,取模,倒序输出如何倒序?可以用stack,也可以用dfsCode:#include<set>#include<map>#include<cmath>#include<ctime>#include<queue>#include&l...原创 2018-09-05 23:09:28 · 170 阅读 · 0 评论 -
筛法求素数
求小于n的所有素数普通筛法#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<string>#include<ioma原创 2018-04-11 21:59:26 · 321 阅读 · 0 评论 -
求n!末尾0的个数
看了这篇文章的百分之九十九都顶了,还有百分之一的人默默点了转发,并且在转发的时候含泪说了一句:不转不是中国人 问题大意,给一个数n,求出n! 后面0的个数。解题思路:显然可以知道后面0的个数取决于约数5的个数,一个递推思路:1、 每隔5个,会产生一个0,比如 5, 10 ,15,20.。。 2 、每隔 5×5 个会多产生出一个0,比如 25,50,75,100 3 、每隔 5×5×5 会多出一个0...原创 2018-04-05 14:10:24 · 367 阅读 · 0 评论 -
快速幂(取模)
typedef long long ll;const int mod = (int)1e9 + 7;ll qpow(ll x, ll y){ ll ret = 1; for( ; y; y >>= 1, x = (x * x) % mod){ if(y & 1) ret = (ret * x) % mod; } return ret;}原创 2018-04-12 16:12:58 · 205 阅读 · 0 评论 -
八皇后问题
在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。回溯法求解,本质递归。#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<iostream>...原创 2018-07-09 23:43:07 · 208 阅读 · 2 评论 -
区间覆盖问题小结
好像接触过不少区间覆盖类的问题了,写个博客小结一下。1,求最大覆盖次数问题描述:相当于给你一些区间,每次给这些区间内的点值都加一(初始都为0),然后问最大的值是多少。(也就是单点的最大覆盖次数)解决思路:显然树状数组可以很好地解决,复杂度nlogn,显得有些大材小用了。现在有一个好写复杂度还低一点的办法:把所有区间的左端点标为1,右端点标为-1,再从头到尾遍历一遍加上当前点的值,维护a...原创 2018-07-25 23:58:46 · 2059 阅读 · 0 评论 -
树状数组模板
#define lowbit(x) x&(-x)int c[maxn];int getsum(int x){ int ret = 0; for( ; x > 0; ret += c[x], x -= lowbit(x)); return ret;}void update(int x, int val){ for ( ; x < maxn; c[x]...原创 2018-07-28 20:50:04 · 281 阅读 · 0 评论 -
并查集模板(裸)
int fa[maxn];int n;int Find(int x){ return x == fa[x] ? x : fa[x] = Find(fa[x]);}void uni(int x, int y){ fa[Find(x)] = Find(y);}void init(){ rep(i, 0, n) fa[i] = i;}原创 2018-07-28 20:51:56 · 268 阅读 · 0 评论 -
矩阵快速幂模板
啥也不会,先传板子可AC POJ3070 POJ3070#include<set>#include<map>#include<stack>#include<cmath>#include<queue>#include<cstdio>#include<string>#include&原创 2018-07-28 20:59:46 · 176 阅读 · 0 评论 -
计算组合数
一般有两种方法费马小定理ll fac[maxn]; ll qpow(ll x, ll y){ ll res = 1; while(y){ if(y & 1) res = (res * x) % mod; y >>= 1; x = (x * x) % mod; } return res;}void init(){//记得放到主函数里...原创 2018-07-28 10:17:11 · 666 阅读 · 1 评论 -
位运算
位运算分为以下几种:&、|、~、^、>>、<<运算规则:&: 相同位的两个数字都为1,则为1;若有一个不为1,则为0 0010101010 1001011001 0000001000(res)|:相同位只要一个为1即为1 11010 10100 11110~:按位取反,注意符号位的变化^:异或 参加运算的两个对象,...原创 2018-04-07 16:28:52 · 182 阅读 · 0 评论