自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 ACM 学习心得

ACM 学习心得STL:完美的艺术品STL 由四大部分组成:算法、容器、迭代器、仿函数。算法(algorithm)        算法定义了一组与实现无关的操作,也是 ACM 学习的核心。C++ 算法库的内容全都是一些比较基本的算法,包括移动、转换、遍历、删除、过滤等等。C++ 算法库本身是基于抽象的,在迭代器的抽象下,使得这些算法可以在不同结构的容器中重用。一个比较坑的地方就是我高中的时候学完 C

2016-07-02 10:09:28 2271

原创 专题四 · 1011

代码及解释#include <algorithm>#include <limits.h>#include <stdio.h>#include <string.h>// 最后一道 ACM 题// 死活 A 不过去// 然后我就看了别人的代码 A 了// _:(´°ω°`」 ∠):_const int SIZE = 2000;int T, S, D, n;int map[SIZE][SIZ

2016-07-07 09:49:20 191

原创 专题四 · 1010

代码及解释#include <stdio.h>#include <iostream>#include <queue>// 最短路之后深搜// 用的队列优化////typedef struct n1 { int distens, flog; } node;node N[1005];int map[1005][1005], k;int direct[1005];void set(int n

2016-07-06 12:06:28 194

原创 专题四 · 1009

代码及解释#include <iostream>#include <cstring>// 简单的 Floyd// 初始化的一个技巧是用 unsigned int 然后初始化 -1// 更像是一个 trick// 还有一个是 INT_MAX 位于 limits.h// 更好的选择是// std::numeric_limits<decltype(G[0][0])>::max// 位于 li

2016-07-04 21:37:52 240

原创 专题四 · 1008

代码及解释#include<stdio.h>#include<string.h>#include<algorithm>// 并查集的应用// 判断边的两端是否在同一个联通分量里// 然后在最后合并成一个回路struct node { int u,v,val;} edge[100005];int set[10005], circle[10005];int find_f(int x) {

2016-07-03 22:45:42 209

原创 专题四 · 1005

代码及解释#include <iostream>#include <stdio.h>#include <string.h>//// 连续两次莫名 AC,结果发现各种脑残手误// 变量忘记初始化就使用// 这个特别坑的地方调试了好几次才发现……int n,ans;int imap[110][110],dis[110],vis[110];inline void Prim() { int

2016-07-03 18:32:16 213

原创 专题四 · 1006

代码及解释#include <iostream>#include <algorithm>// 天真的把上一道题稍微改了改,// 以为能过,结果 WA 了 (》:o 」∠)_// 然后又老老实实的重新写了using std::cin;using std::cout;using std::endl;char set[1000];int n,k;struct edge { char s,e

2016-07-02 22:45:00 255

原创 专题四 · 1004

代码及解释#include <iostream>#include <algorithm>// 刚刚考完计算机组成,赶快做一道题��// 连续好几道 Kruskal,代码几乎都不用改(感谢老师��)//using std::cin;using std::cout;using std::endl;const int N = 200;int set[N];int find_f(int x) {

2016-07-02 09:55:52 530

原创 专题四 · 1003

代码及解释#include <algorithm>#include <cmath>#include <cstdio>#include <iostream>// 上课讲的一道题// 并查集的思考:// 一种并查集是上课的时候老师讲的// 这种并查集的查询效率很快// 但是更新的速度比较慢// 实际上另外一种是查询效率慢// 更新速度很快// 这两种可以应用于不同的场景using s

2016-06-29 17:17:35 253

原创 专题四 · 1002

代码及解释#include <algorithm>#include <cmath>#include <cstdio>#include <iostream>// kruskal 求最小生成树,用到并查集struct Node { int x, y; double cost;} g[5005];int pre[105];int find(int n) { return n == pre[

2016-06-28 10:21:57 261

原创 专题四 · 1001

代码及解释#include <algorithm>#include <iostream>//// kruskal + 并查集 + 边表//struct node { int from; int to; int w;};node edge[102 * 100];int parent[102];bool cmp(node a, node b) { if (a.w <= b.w)

2016-06-13 20:45:17 270

原创 专题三 · 1006

代码及解释#include <algorithm>#include <cstring>#include <iostream>// 数字三角形// 感觉是最好理解的 DP// A 完之后想起来可以用滚动数组压缩//// O// |\// O O// |\|\// O O O////int orig[105][105];int f[105];int main() { int

2016-05-30 21:01:01 241

原创 专题三 · 1019

代码及解释#include <iostream>#include <cmath>#include <cstring>// 看电视的 01 背包// 开始把方程写错了,竟然过了样例 ( ̄ ̄▽ ̄ ̄)// 然后自己编了一个数据才发现手抖把符号打错了const int SIZE = 100010;int f[SIZE];int a[SIZE];int main() { int t;

2016-05-29 22:30:27 187

原创 专题三 · 1022

代码及解释#include <cfloat>#include <iostream>#include <algorithm>// 题目有点奇怪,帮小偷偷东西……// 还是个普通背包// 方程:// f[j] = std::max(f[j], f[j - m[i]] * p[i])// 有用的宏定义:DBL_EPSILONconst int SIZE = 10010;int m[SIZE];

2016-05-28 22:27:23 175

原创 专题三 · 1017

代码及解释#include <iostream>#include <string.h>#include <algorithm>// 01背包问题(竟然吃了个 PE ……)// 方程是 f[j] = max(f[j], f[j - w[i]] + v[i])const int SIZE = 1010;int w[SIZE];int v[SIZE];int f[SIZE];int main(

2016-05-28 18:57:47 198

原创 专题三 · 1014

代码及解释#include<iostream>// 开始的时候感觉这个题本身就有问题// 感觉一条折线是可以把平面分成三部分// 见下//______//|\ |//| \ 2|//| \ |//| \|//| 1 /|//| / |//| / |//|/ 3|//------//// 后来才反应过来平面是无穷的// 思路就是尽可能让线条交叉// 画几

2016-05-26 21:41:05 244

原创 专题三 · 1013

代码及解释#include <iostream>long long fibs[50] = {0, 1, 2, 3, 4};// 又双叒叕是递推数列int main() { int n; int flag = 4; while (std::cin >> n && n) { if (n <= flag) { std::cout << fibs

2016-05-26 21:26:11 238

原创 专题三 · 1012

代码及解释#include<iostream>// 似曾相识的感觉=-=// 刚刚的那道和这个一样诶// ('▽'*) ・・・ァハハlong long fibs[50] = {0, 1, 2};int main() { int n; int flag = 2; while (std::cin >> n && n) { if (n <= flag)

2016-05-25 22:28:33 195

原创 专题三 · 1011

代码及解释#include <iostream>#include <cstdint>// 很简单的题目// 但为什么就是会莫名WA ヾ(0д0∥)ノ// 就是 fibonacci 数列啊 ……// 然后经过 4、5次蜜汁WA 之后莫名的就 A 了(; ´_ゝ`) フッint64_t fibs[60];int main() { fibs[1] = 1; fibs[2] = 2;

2016-05-25 22:02:46 172

原创 专题三 · 1018

代码及解释#include <iostream>#include <climits>#include <algorithm>// 完全背包问题// 应该很简单了,但是一直 WA =-=// 检查了好几遍,转移方程,循环边界都没问题const size_t SIZE = 10005;int p[SIZE];int w[SIZE];int dp[SIZE];int main() {

2016-05-22 11:21:03 207

原创 专题三 · 1018

代码及解释#include <iostream>// 做的时候直接就是当递推做的// 没有反应过来这是 DP =。=// 数组直接离线计算出来// 感觉像 fib ……int main() { int n,c; std::cin >> c; int fib[21] = {0, 3, 7}; for(int i = 3; i <= 21; ++i) f

2016-05-18 21:08:22 228

原创 专题三 · 1015

代码及解释/// 又好久没刷题了(因为要考试)/// 今天怀着负罪感,找了一道最简单的 A 了// 十进制转二进制// 第一反应是 bitset// 后来感觉杭电的 g++ 不可能支持 btiset (-。-;// 还是手摸一个吧…… (^_^;)#include <iostream>int main() { int num,i,j; bool bitset[100];

2016-05-10 21:01:10 224

原创 专题二 · 1024

代码及解释#include // 按照给定的数字查找一个递增字序列// 一开始看题没有看懂,以为是 DP 里面的最长不下降子序列// 然后就一顿无脑的写了一下// 结果样例一直过不去=-=// 后来又重新审了一遍题int n, p, len, count;int num[1001];bool flag;struct { int n, pos; } tem[1001];

2016-04-23 09:39:09 179

原创 专题二 · 1016

代码及解释#include #include // 无脑三分法// 直接在固定一边的情况下三分就可以//// 比较恶心的就是要写很多运算=-=structpoint { double x, y; };double dis(point a, point b) { return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y)

2016-04-22 21:47:44 199

原创 专题二 · 1011

代码及解释#include #include #include // 简单的深搜// 直接寻找周围的油井// (似乎以前看过一个 flood 算法也可以用来解决这个问题char map[200][200];int count[200][200];int row, col;void DFS(int r, int c, int num) { if(r >=

2016-04-22 17:19:46 183

原创 专题二 · 1005

代码及解释#include #include // 拐弯的问题// 高中数学做过一个很类似的// 关键是在转向的时候,值不是单调的// 所以不用二分const double PI = acos(-1.0);double x,y,l,w,s,h;double ankle(double a) { s = l * cos(a) + w * sin(a) - x;

2016-04-21 15:33:40 250

原创 专题二 · 1014

代码及解释当我发现1013和1014一样的时候,我的内心是极其激动的23333

2016-04-20 22:20:16 255

原创 专题二 · 1013

代码及解释#include #include #include // 有一天我坐了一个奇怪的电梯// 这个电梯上下的时候会按照他的心情来走=-=// 然后问我用最少的路数到某一层// (想到了文理大楼老是夹人的电梯……// 很标准的广搜,寻找最优可行解int floor[1000];bool vis[1000];structInfo { int k; int po

2016-04-20 22:18:51 182

原创 专题二 · 1017

代码及解释#include#include#include#include#include// 上课讲的倒水问题// 第一眼看到这个题有点懵逼// 完全没有思路// 上网查了一下,是一个隐式图搜索// 思路是把整个倒水过程看成一张图// 倒水过程视为状态之间的转移// 最后状态作为搜索的最后状态// 在学完优先队列之后// 我有考虑了一下// 发现这个比较恶心

2016-04-20 21:29:40 216

原创 专题二 · 1008

代码及解释#include // 好久没刷题了,心里种罪恶感…… (°_°;)//// 第一次看到这道题// 啊……越短的题越难做// 陷入了深深的思考中// "费老师把这道题放到搜索里面,看起来不简单"// 思考半个小时之后:// 这真的仅仅是一个二分吗// 忐忑的写了一个交上去,A了// (・・;)int main() { using std::cin;

2016-04-17 21:44:26 229

原创 专题二 · 1009

代码及解释#include #include // 经典的 N皇后问题,以前讲剪枝的时候就刷过//// 人畜无害的数据范围,普通搜索也不会出问题// 但是第一次做竟然 TLE 了……// 然后改成位运算优化的,又 TLE了……// 然后改成 C 语言,AC了 ?!奇葩的评测机// l mid r三个变量分别是标记一个棋子对左下 正下和右下的影响int search(i

2016-04-06 15:07:27 210

原创 专题一 · 1004

代码及分析#include <cstring>#include <algorithm>#include <cstdio>//好几天之前 A 的题,//今天补博客的时候已经忘了当时怎么做的了//只是记得这道题很简单,一次就 A 了……//简单的贪心,也没有坑……int n;int ans;int maxn;struct s { int l,r;} h[101];bool cm

2016-04-01 21:24:52 390

原创 专题一 · 1002

代码及解释#include <iostream>#include <vector>#include <algorithm>//田忌赛马一直是一道比较迷的题,//NOIP 的碰到的时候就一直感觉很恶心,//这道题再次碰到又是花了很长时间去做。////第一次://排序,计算齐王的最小值在田忌的 lower_bound//排序,计算田忌的最大值在齐王的 upper_bound////W

2016-04-01 21:17:22 283

原创 专题一 · 1005

代码及解释#include <iostream>#include <cstdlib>#include <algorithm>//做这道题的时候想多了……//算最小值的时候很简单,// //但是算到最大值的时候,陷入了深深的沉思……////1)穷举会超时啊……////2)先从小面额算起,但是前面决策会对后面产生影响,// DP可以做,但是方程不好写。 不会一开始就有动规把……

2016-03-21 18:43:16 322

原创 专题一 · 1000

代码及解释#include <cstring>#include <cstdio>#include <algorithm>//这道题一开始认为是简单的贪心,//然后就按照结束时间来贪心,//结果发现 WA 了。//当时感觉是输入的问题,于是在输入的时候,//添加判断,把较小的调整到前面去,//结果还是 WA。//然后抱着试一试的想法修改了贪心的原则,//结果还是 WA ……//

2016-03-21 10:34:33 228

原创 专题一 · 1006

代码及解释#include <cstdio>//本题比较简单,//只要手动模拟电梯的运动就可以了int main() { int n; while(1) { scanf("%d",&n); if (!n) break; //a 记录当前楼层 int a = 0, b; int ans = 0;

2016-03-21 10:12:31 343

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除