
刷题小记
是算法啦
水能zai舟
每一次提交务必慎重,切勿基于样例解题。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2018寒假集训-紫皮书-全排列
*提前标注:c++产生全排列的两种方法: 1)递归枚举; 2)STL next_permutation(p,p+n); 人人都愿省事,STL对于懒人来说是一个最好的选择,下面就是STL next_permutation()的适用方法。 #include #include #include #include using namespace std; int p[10]; const原创 2018-01-17 15:58:05 · 322 阅读 · 0 评论 -
2018寒假训练-紫皮书-子集生成
位相量法 #include #include using namespace std; int p[10]={1,2,3,4}; int b[10]; const int n=4; void print_subset(int n,int cur){ if(cur==n){ for(int i=0;i<cur;i++) if(b[i])c原创 2018-01-17 18:06:06 · 255 阅读 · 0 评论 -
2018寒假训练-紫皮书-dfs与bfs
图的搜索包含dfs与bfs,两者使用的场合不同,dfs通常用于解决图的可行解问题,bfs通常用于解决最优解问题,下面是两个典型的问题来体会bfs与dfs。 油田问题,见HDU 1241 #include using namespace std; int m,n,sum,cnt; char g[101][101]; void dfs(int x,int y){ if(x=m|原创 2018-01-18 11:03:11 · 338 阅读 · 0 评论 -
2018寒假训练-动态规划
1.动态规划入门题目:数字三角形(POJ1163) The Triangle Time Limit:1000MS Memory Limit:10000K Total Submissions:30397 Accepted:17973 Description 7 3 8 8 1 0 2原创 2018-01-19 10:33:33 · 261 阅读 · 0 评论 -
HDU - 1181 dfs
之前做过的一道dfs简单题,但是这次交还是WA了几发RE了几发,然后总结了下dfs应该注意的问题。1.注意dfs的结束条件。2.要有标记量(vis数组),防止无限递归(RE所在)。<注意多组输入orz>上代码:#include <bits/stdc++.h> #define me(x,y) memset(x,y,sizeof(x)) #define sd(x) scanf(...原创 2018-05-03 22:22:04 · 139 阅读 · 0 评论 -
POJ - 3984 bfs记录路径
bfs的模板题,具体注意内容见代码部分。#include <bits/stdc++.h> #define me(x,y) memset(x,y,sizeof(x)) #define sd(x) scanf("%d",&x) #define ss(x) scanf("%s",x) #define sf(x) scanf("%f",&x) #define slf(x) sc...原创 2018-05-04 08:28:42 · 135 阅读 · 0 评论 -
HDU - 1548 基础bfs
将本题作为bfs模板 #include <bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; const int maxn = 305; int n, a, b; typedef struct node { int f; int s; node(int ff, int...原创 2018-10-23 21:08:59 · 161 阅读 · 0 评论 -
搜索基础讲解
前言:搜索可以解决什么样的问题? (1) 可行解的求解(例如 POJ - 3278:中文题意https://vjudge.net/problem/POJ-3278#author=hnshhslsh) (2) 二维图形的移动搜索(http://codevs.cn/problem/1215/) 等 1.什么是搜索? (1) 搜索算法的解决思路是尽可能的将问题的所有的可能性列出,再...原创 2018-11-02 17:38:16 · 772 阅读 · 0 评论 -
计算几何模板-未完待更
#include <bits/stdc++.h> #define EPS (1e-10) #define equals(a, b) (fabs((a) - (b)) < EPS) #define max(a, b) (a > b ? a : b) #define min(a, b) (a < b ? a : b) using namespace std; clas...原创 2019-01-22 21:57:44 · 196 阅读 · 0 评论 -
UVA - 537 文本中提炼有效信息
这个题过不了的,https://www.udebug.com/UVa/537,欢乐的Debug去吧!主要容易忽略的问题有:1.忽略负数2.M是兆要*10000003.m是毫要*0.001下面是ac代码,太长了,我觉得也不会有人有耐心去看的,总之耐下性子来,好好Debug,这个题就能出来。#include <bits/stdc++.h> #include <cstdio> #...原创 2018-04-29 16:03:54 · 165 阅读 · 0 评论 -
ALDS1_4_C 字符串哈希
//Aizu - ALDS1_4_C #include <bits/stdc++.h> #define sd(n) scanf("%d", &n) #define pd(n) printf("%d\n", n) #define max(a, b) (a > b ? a : b) #define min(a, b) (a < b ? a : b) #define ...原创 2018-12-31 22:23:05 · 254 阅读 · 0 评论 -
map建立字典映射关系
题目:POJ2503 我虽然菜,但我也很想喷POJ,为啥C++能过,G++不是超时就是RE?折腾那么长时间,你还不给数据,打扰了,我的锅我的锅。 #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <map> #de...原创 2019-01-24 12:53:22 · 676 阅读 · 1 评论 -
CCF201803-3 URL映射
前言 海岛老师写的真的好,感觉代码全篇没有一句废话,自己的代码能力还是太弱了,第一回交了只拿了30分,后来看了海岛老师的博客,更换了思路交了80分,最后完善后(自己的想法还是有漏洞),最终AC,强烈推荐看海岛老师的博客题解,在此发篇博客向海岛老师致敬,https://blog.youkuaiyun.com/tigerisland45/article/details/81697594 收获 感觉此次最大的...原创 2019-02-24 17:36:59 · 331 阅读 · 0 评论 -
HDU - 1846 巴士博弈
从某博主的博客里看到的博弈论题目列表,感谢博主:https://blog.youkuaiyun.com/qq_33184171/article/details/50790076 博弈问题 巴士博弈HDU1846<-点击此处进入链接 威尔夫博弈HDU1527<-点击此处进入链接 斐波那契博弈HDU2516<-点击此处进入链接 尼姆博弈HDUXXX<-点击此处进入链接 公...原创 2018-12-22 23:22:50 · 277 阅读 · 0 评论 -
POJ-2431 Expedition WA点总结
题目大意:你有一辆卡车,从初始位置出发,油箱里目前有油量P,汽车每走1的距离就要耗费1点油量,沿途有加油站可以加油(前提是你车的油量能保证开过去);要求输入:第一行:N(表示沿途加油站的数量)后N行:A B(输入两个数A、B,A是距离终点的位置!!!这算是一个坑点---是距离终点的位置,不是距离起始位置的距离,B是这个加油站能加的油量)最后一行:L P(L路程总长度,P是初始油量)我碰到的WA点:...原创 2018-03-19 20:51:25 · 316 阅读 · 0 评论 -
HDU-5929 双端队列+规律
2016CCPC东北地区大学生程序设计竞赛 HDU-5929;题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5929段前小絮今年是我第一次去外省打比赛,想在比赛前体验一把ccpc之前的题目,结果发现.....orz,这道题我改了两天,各种错误X(X>=10)次,你可以看下面我的提交列表,可以收每一次改正后的提交都是抱着一种绝望的心态交上去的,我...原创 2018-04-10 17:24:47 · 386 阅读 · 0 评论 -
UVA - 442矩阵链乘
栈模拟即可,模的我一阵酸爽,多亏vs2017强大的调试。 Code #include <bits/stdc++.h> #define MAX 30 using namespace std; typedef long long LL; struct Node { int x, y; Node() {} Node(int xx, int yy) { x = xx; y ...原创 2019-01-27 11:06:03 · 157 阅读 · 0 评论 -
STL vector与list
以前一直以为vector是用链表模拟的数组以实现不定长数组的性质(太菜了),但是直到今天做了一个题才纠正了我这个错误的观点:UVA - 12657 这个题很简单,链表stl带走,但是一开始我用vector来模拟,始终超时,后来看了博客https://www.cnblogs.com/sooner/p/3273395.html vector容器概述 vector的数据安排以及操作方式,...原创 2019-01-27 11:50:28 · 161 阅读 · 0 评论 -
KMP与拓展KMP
#include<iostream> #include<cstring> using namespace std; const int maxn=10005; char p[maxn],t[maxn]; int next[maxn]; void get_next(){ int len=strlen(t); int i=0,j=-1; next[0]=...原创 2018-03-17 13:16:40 · 269 阅读 · 0 评论 -
数字串匹配
题目链接:https://vjudge.net/contest/216955#problem/Bhttps://vjudge.net/contest/216955#problem/B思路:数字串的匹配与字符串的匹配相似,无非就是一个用字符数组存储比较字符,一个用int数组存储。代码#include<iostream> #include<cstring> using name...原创 2018-03-17 20:23:05 · 259 阅读 · 0 评论 -
归并排序求逆序数
学习归并排序时看了:https://blog.youkuaiyun.com/yuehailin/article/details/68961304,写的挺好的,推荐大家看下。归并排序模板#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <...原创 2018-04-07 11:26:02 · 185 阅读 · 0 评论 -
归并排序与快速排序
归并排序 归并的思想在于先分后排; “先分”:把整个序列划分为一个一个单段(O(logn)) “后排”:将相邻段内数据按照顺序放入新的数组,最后再将新数组的数据放回原数组(O(n)) 由此总的时间复杂度为二者乘积=O(n*logn) Code #include <iostream> using namespace std; const int maxn = 1...原创 2018-11-29 23:21:29 · 200 阅读 · 0 评论 -
HDU-1018 阶乘结果的位数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1018题意:给定一个数求此数阶乘结果的位数。公式:log10(1)+log10(2)+......+log10(n)+1代码:#include <bits/stdc++.h> using namespace std; typedef long long LL; typedef unsig...原创 2018-04-10 21:54:44 · 195 阅读 · 0 评论 -
矩阵乘法及矩阵快速幂模板
#include <iostream> #include <vector> #include <algorithm> #include <cstring> #include <cstdio> using namespace std; typedef long long LL; //自行修改,矩阵的最大值和模值 const int max...原创 2018-04-15 11:43:51 · 330 阅读 · 0 评论 -
HDU - 1576 逆元基础
当遇到让求(A/B)%mod时,可以转化为A*(B的逆元)再整体取模,进而转化为((A%mod)*(B'%mod))%mod,B'=B^mod-2,当然这里要使用快速幂求解。#include <bits/stdc++.h> #define me(x,y) memset(x,y,sizeof(x)) #define slld(x) scanf("%lld",&x) #define...原创 2018-05-04 10:48:54 · 173 阅读 · 0 评论 -
N的因子个数 HDU1492
题目链接:HDU - 1492题意:给定一个数求其因子数(该因子必须要以2、3、5、7作为基础因子)。思路:数论基础题,参考博客:http://blog.sina.com.cn/u/2173517203在此表示感谢!求取幂次,然后每项加1互乘,以12为例,其可以分解为2*2*3,其中2^2与3^1,在12的各项因子中可以由2的0、1、2次方再乘上3的0、1次方得到,所以有2*3=6种情况。代码...原创 2018-04-08 08:38:26 · 515 阅读 · 0 评论 -
快速幂取模-模板
链接:https://www.nowcoder.com/acm/contest/80/B来源:牛客网#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <vector> #include <cmath> #...原创 2018-04-06 21:02:47 · 232 阅读 · 0 评论 -
组合数取模(卢卡斯定理)
组合数取模(卢卡斯定理)模板const int N=1e5+5; const int mod=10007; ll fac[N];//用于求取阶乘取模 ll n; void init() { fac[0]=1; for(int i=1;i<=mod;i++) fac[i]=fac[i-1]*i%mod; } ll quick_pow(ll a,ll b) {...原创 2018-02-14 08:38:34 · 2364 阅读 · 0 评论 -
欧拉函数及欧拉打表
欧拉函数的功能:用于求小于n的与n互质数的个数欧拉函数模板:int eular(int n){ int ret=1,i; for(i=2;i*i<=n;i++){ if(n%i==0){ n/=i; ret*=i-1; while(n%i==0){ n/=i...原创 2018-05-04 11:22:49 · 2120 阅读 · 0 评论 -
素数相关操作
先介绍几种常用模板。1.素数的高效打表(这里打了100万以内的素数表)const int maxn=1000005; const int _maxn=78499+5; //1000000内拥有的素数 int prime[_maxn]; bool vis[maxn];//待打表完成后,vis数组中将保存素数的直接判断 int sum[maxn]; int get_prime() { //高效素...原创 2018-05-04 15:19:54 · 395 阅读 · 0 评论 -
Pollard_rho 因数分解
让我卡了好久的一道题:POJ - 2429Pollard_rho 模板#include <iostream> #include <cstdlib> #include <algorithm> #include <cstdio> #include <cmath> #define pb(x) push_back(x) #define me(x,...原创 2018-05-27 16:16:20 · 521 阅读 · 0 评论 -
折线分割平面
Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 36800Accepted Submission(s): 24663Problem Description我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条...原创 2018-06-07 09:38:02 · 162 阅读 · 0 评论 -
UVA - 202数组记录迭代寻找循环节
UVA - 202 感谢Udebug,自己写的bug是真的多。 易错点: 1.可以整除的数小数位是0,但是要置1 2.在寻找循环节时要从小数部分开始记录,整数部分不能记录 3.根据抽屉原理循环节长度<b 4.注意换行 Code //#define HelloWorld #include <bits/stdc++.h> #define MAX 100005 #d...原创 2019-01-26 20:21:15 · 231 阅读 · 0 评论 -
分治法寻找序列中的最大和最小值
输入原则:先输入要输入数据的个数,再逐个输入序列中的元素 代码: //采用分治法寻找序列中的最大和最小值 #include <bits/stdc++.h> #define max(x, y) x >= y ? x : y #define min(x, y) x <= y ? x : y #define INF ...原创 2018-09-27 17:15:42 · 4815 阅读 · 1 评论 -
快速排序-分而治之
#include <bits/stdc++.h> #define max(x, y) x >= y ? x : y #define min(x, y) x <= y ? x : y #define INF 0x3f3f3f3f using namespace std; const int maxn = 105; ...原创 2018-09-27 21:06:51 · 254 阅读 · 0 评论 -
分治法求最近对问题
首先感谢博主https://www.cnblogs.com/zuoyou151/p/9059903.html,让我收获很多,今天感觉很困,状态不佳,解析与讲解会改天补上,注明:我这里采用递归时是左闭右开区间,而博主采用的左闭右闭。 还有感谢“NX”童鞋为我调好VS2017,之前因为环境问题一直装不上,不过VS2017的调试是真的好用啊,哈哈! Code #include <algor...原创 2018-11-30 13:43:02 · 422 阅读 · 0 评论 -
CodeForces - 93B 贪心+精度控制
题目大意: 输入n, w, m 代表有n个桶,每桶w升牛奶,m个杯子等待分配牛奶,要求没个杯子中的牛奶量相同,且每个桶至多给2个杯子分配牛奶,若可以分配,输出YES,和个杯子是由第几个桶 分配了多少升,若不能分配输出NO。 思路: 用贪心的思想将每个桶中的牛奶每次最大量的分出,用vector<结构体>记录下分配过程,此外由于可能出现除不尽的情况,因此还要控制下精度,使用fa...原创 2018-10-25 19:58:52 · 287 阅读 · 0 评论 -
POJ - 2376 贪心-区间问题
题目容易陷入的误区: 题目表面上是尽可能少的去覆盖区间,其实是尽可能的去覆盖点,这点容易导致大家WA 思路: 按照结束时间倒叙排列,从末端开始向前尽可能向前去包含更多的点 注意: WA多半是你想成了包含区间段而不是点(去试一试下面的样例1,答案是4) RE多半是你省略了不存在的情况,循环没有跳出 TLE多半是写的太暴力,优化下时间 代码: #include...原创 2018-10-26 20:38:05 · 203 阅读 · 0 评论 -
POJ - 3190 贪心+优先队列
今天,吃饭,被SW教育了一波,堆是完全二叉树,堆是完全二叉树,堆是完全二叉树,重要的事情说三遍。 优先队列是堆,priority_queue——一个强大的STL,下面先介绍priority_queue的用法。 #include <iostream> #include <queue> using namespace std; typedef struct Test ...原创 2018-11-04 20:07:00 · 272 阅读 · 0 评论 -
POJ - 1017 贪心
这个题不难,关键是滤清思路,明确怎么放是最大利用空间的。 还有POJ不晓得为啥子,炸了好几天,这道题隔了好久才交上。 思路: 6*6:一个就要独占一个箱子 5*5:一个要独占一个箱子,放完后还可以再放11个1*1 4*4:一个要独占一个箱子,放完后可以再放5个2*2(先紧着大的放),然后如有空余再用1*1填补 3*3:这个比较麻烦,要把情况分开考虑(看我代码里分的情况) 2*2和1*...原创 2018-11-14 09:37:26 · 161 阅读 · 0 评论