
刷题小记
是算法啦
水能zai舟
每一次提交务必慎重,切勿基于样例解题。
展开
-
2018寒假集训-紫皮书-全排列
*提前标注:c++产生全排列的两种方法:1)递归枚举;2)STL next_permutation(p,p+n);人人都愿省事,STL对于懒人来说是一个最好的选择,下面就是STL next_permutation()的适用方法。#include#include#include#includeusing namespace std;int p[10];const原创 2018-01-17 15:58:05 · 317 阅读 · 0 评论 -
2018寒假训练-紫皮书-子集生成
位相量法#include#includeusing 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 · 245 阅读 · 0 评论 -
2018寒假训练-紫皮书-dfs与bfs
图的搜索包含dfs与bfs,两者使用的场合不同,dfs通常用于解决图的可行解问题,bfs通常用于解决最优解问题,下面是两个典型的问题来体会bfs与dfs。油田问题,见HDU 1241#includeusing 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 · 326 阅读 · 0 评论 -
2018寒假训练-动态规划
1.动态规划入门题目:数字三角形(POJ1163)The TriangleTime Limit:1000MSMemory Limit:10000KTotal Submissions:30397Accepted:17973Description73 88 1 02原创 2018-01-19 10:33:33 · 250 阅读 · 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 · 132 阅读 · 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 · 128 阅读 · 0 评论 -
HDU - 1548 基础bfs
将本题作为bfs模板#include <bits/stdc++.h>#define INF 0x3f3f3f3fusing 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 · 154 阅读 · 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 · 765 阅读 · 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 · 192 阅读 · 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 · 161 阅读 · 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 · 250 阅读 · 0 评论 -
map建立字典映射关系
题目:POJ2503我虽然菜,但我也很想喷POJ,为啥C++能过,G++不是超时就是RE?折腾那么长时间,你还不给数据,打扰了,我的锅我的锅。#include <iostream>#include <cstdio>#include <cstring>#include <string> #include <map>#de...原创 2019-01-24 12:53:22 · 668 阅读 · 1 评论 -
CCF201803-3 URL映射
前言海岛老师写的真的好,感觉代码全篇没有一句废话,自己的代码能力还是太弱了,第一回交了只拿了30分,后来看了海岛老师的博客,更换了思路交了80分,最后完善后(自己的想法还是有漏洞),最终AC,强烈推荐看海岛老师的博客题解,在此发篇博客向海岛老师致敬,https://blog.youkuaiyun.com/tigerisland45/article/details/81697594收获感觉此次最大的...原创 2019-02-24 17:36:59 · 322 阅读 · 0 评论 -
HDU - 1846 巴士博弈
从某博主的博客里看到的博弈论题目列表,感谢博主:https://blog.youkuaiyun.com/qq_33184171/article/details/50790076博弈问题巴士博弈HDU1846<-点击此处进入链接威尔夫博弈HDU1527<-点击此处进入链接斐波那契博弈HDU2516<-点击此处进入链接尼姆博弈HDUXXX<-点击此处进入链接公...原创 2018-12-22 23:22:50 · 271 阅读 · 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 · 311 阅读 · 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 · 375 阅读 · 0 评论 -
UVA - 442矩阵链乘
栈模拟即可,模的我一阵酸爽,多亏vs2017强大的调试。Code#include <bits/stdc++.h>#define MAX 30using 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 · 151 阅读 · 0 评论 -
STL vector与list
以前一直以为vector是用链表模拟的数组以实现不定长数组的性质(太菜了),但是直到今天做了一个题才纠正了我这个错误的观点:UVA - 12657这个题很简单,链表stl带走,但是一开始我用vector来模拟,始终超时,后来看了博客https://www.cnblogs.com/sooner/p/3273395.htmlvector容器概述 vector的数据安排以及操作方式,...原创 2019-01-27 11:50:28 · 157 阅读 · 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 · 262 阅读 · 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 · 254 阅读 · 0 评论 -
归并排序求逆序数
学习归并排序时看了:https://blog.youkuaiyun.com/yuehailin/article/details/68961304,写的挺好的,推荐大家看下。归并排序模板#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <...原创 2018-04-07 11:26:02 · 172 阅读 · 0 评论 -
归并排序与快速排序
归并排序归并的思想在于先分后排;“先分”:把整个序列划分为一个一个单段(O(logn))“后排”:将相邻段内数据按照顺序放入新的数组,最后再将新数组的数据放回原数组(O(n))由此总的时间复杂度为二者乘积=O(n*logn)Code#include <iostream>using namespace std;const int maxn = 1...原创 2018-11-29 23:21:29 · 193 阅读 · 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 · 188 阅读 · 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 · 324 阅读 · 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 · 163 阅读 · 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 · 506 阅读 · 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 · 225 阅读 · 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 · 2361 阅读 · 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 · 2117 阅读 · 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 · 389 阅读 · 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 · 518 阅读 · 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 · 157 阅读 · 0 评论 -
UVA - 202数组记录迭代寻找循环节
UVA - 202感谢Udebug,自己写的bug是真的多。易错点:1.可以整除的数小数位是0,但是要置12.在寻找循环节时要从小数部分开始记录,整数部分不能记录3.根据抽屉原理循环节长度<b4.注意换行Code//#define HelloWorld#include <bits/stdc++.h>#define MAX 100005#d...原创 2019-01-26 20:21:15 · 226 阅读 · 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 · 4803 阅读 · 1 评论 -
快速排序-分而治之
#include <bits/stdc++.h>#define max(x, y) x >= y ? x : y#define min(x, y) x <= y ? x : y#define INF 0x3f3f3f3fusing namespace std;const int maxn = 105; ...原创 2018-09-27 21:06:51 · 248 阅读 · 0 评论 -
分治法求最近对问题
首先感谢博主https://www.cnblogs.com/zuoyou151/p/9059903.html,让我收获很多,今天感觉很困,状态不佳,解析与讲解会改天补上,注明:我这里采用递归时是左闭右开区间,而博主采用的左闭右闭。还有感谢“NX”童鞋为我调好VS2017,之前因为环境问题一直装不上,不过VS2017的调试是真的好用啊,哈哈!Code#include <algor...原创 2018-11-30 13:43:02 · 416 阅读 · 0 评论 -
CodeForces - 93B 贪心+精度控制
题目大意:输入n, w, m 代表有n个桶,每桶w升牛奶,m个杯子等待分配牛奶,要求没个杯子中的牛奶量相同,且每个桶至多给2个杯子分配牛奶,若可以分配,输出YES,和个杯子是由第几个桶 分配了多少升,若不能分配输出NO。思路:用贪心的思想将每个桶中的牛奶每次最大量的分出,用vector<结构体>记录下分配过程,此外由于可能出现除不尽的情况,因此还要控制下精度,使用fa...原创 2018-10-25 19:58:52 · 277 阅读 · 0 评论 -
POJ - 2376 贪心-区间问题
题目容易陷入的误区:题目表面上是尽可能少的去覆盖区间,其实是尽可能的去覆盖点,这点容易导致大家WA思路:按照结束时间倒叙排列,从末端开始向前尽可能向前去包含更多的点注意:WA多半是你想成了包含区间段而不是点(去试一试下面的样例1,答案是4)RE多半是你省略了不存在的情况,循环没有跳出TLE多半是写的太暴力,优化下时间代码:#include...原创 2018-10-26 20:38:05 · 197 阅读 · 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 · 264 阅读 · 0 评论 -
POJ - 1017 贪心
这个题不难,关键是滤清思路,明确怎么放是最大利用空间的。还有POJ不晓得为啥子,炸了好几天,这道题隔了好久才交上。思路:6*6:一个就要独占一个箱子5*5:一个要独占一个箱子,放完后还可以再放11个1*14*4:一个要独占一个箱子,放完后可以再放5个2*2(先紧着大的放),然后如有空余再用1*1填补3*3:这个比较麻烦,要把情况分开考虑(看我代码里分的情况)2*2和1*...原创 2018-11-14 09:37:26 · 149 阅读 · 0 评论