- 博客(245)
- 资源 (10)
- 收藏
- 关注
原创 lintcode 骰子求和
/* 今天被问到了一道lintcode上的题目,然而想了好久才想明白,看来在STL处折腾得太久,当初看《挑战》时,粗浅地学的一点点动态规划,已经忘得所剩无几了... 这几天开始上课了,写acm题的时间又被压缩,不过还是尽力每天至少做一道算法题,保持题感。 此外,最近开始学java,偶尔也发些java的代码到博客,由于刚入门java,代码会比较简单,不过还是争取每天保证相当的代码量,
2017-09-05 22:54:31 1620
原创 C++ Primer 关联容器 单词转换程序
/* 此代码来自 C++ Primer,手敲一遍是因为: 1. 今天刚好开始学数据结构,好的算法的要满足 健壮性(数据非法时,也能适当作出反应或进行处理) 和 可读性 (便于理解和修改,按照老师的说法,主要体现在注释上),上完课后看C++ Primer,发现下面这段代码,在这两方面就做得比较好,值得学习 2. 因为STL学得还是不太扎实,只是在做题中偶尔用到,但没有系统地学...
2017-09-04 23:14:00 259
原创 UVA - 1595 Symmetry
/* 可用暴力破解的方法,思路如下: 先假设对称轴存在,且其为 x = xmid,那么对称轴肯定为为左端和最右端中点的平均数 xmid = ( xmin + xmax) / 2 如果x = x0真为对称轴,对任意的 xi,都会有 xj = 2 * xmid - xi; 鉴于求xmid涉及除以2,但是判断的时候,却可以用对称轴横坐标的两倍来判断,出于精度和误差方面的考
2017-09-04 00:00:14 181
原创 UVA - 10391 Compound Words
/* 这题我开始时的思路是:合成单词,两两合成,看组合得到的合成词是否在字典中,但这样很明显会超时 最后查完题解,发现正确的思路是分割,不过分隔的做法也不止一种,具体见下:*//* 法一: 参考博客:http://blog.csdn.net/czjxy881/article/details/8300237 A. 注意先说下博客里的代码,有两
2017-09-03 20:22:56 202
原创 UVA - 10763 Foreign Exchange
//这题虽然不算难题,而且因为还没学图论,不知道无向图是什么,所以查题解磕磕碰碰地完成了,过程可谓是一波三折,不过也算收获良多/* 法一: 参考blog1: http://blog.csdn.net/shihongliang1993/article/details/73500018 这个博主用了许多C++11的新特性,看得我大开眼界,将他用到的几种新用法弄明白,都用了不少的
2017-09-03 14:17:20 248
原创 曾经帮助我走出迷茫的一些书和博客(尤其推荐给计算机专业的同学)
/* 这些全部都是我自己看过的,基本都是自己曾经完整看完过的,不过,只能说各有所爱,我喜欢的,你也未必认可,留下自己觉得有启发的就好…价值观这种东西,本就没有所谓的对错,求同存异就好。 目前好像就想起来这么多,有些看了以后,虽然对我的行为和观念的影响还在,但我都忘记自己曾经看过这本书了,也许这就是润物细无声的力量吧… 不定期更新,想到再补上吧 这篇算是半技术向,迷茫的时候有些
2017-09-03 10:41:36 926
原创 写在成年之际--年度总结
(这真是一篇暴露年龄的博文T^T) 由于昨天把之前积攒的题解代码发了一下,达到了csdn一天最多发10篇文章的上限。所以只能今天发了,准确说是”写在成年的第一天”~ 过去的一年里,我经历了我的大一生涯,但是,总结大一生活之前,简单提一下高考吧,虽然这严格意义上说,并不属于过去的一年发生的事情。 1. 高考 高考可以算是我经
2017-09-03 01:05:22 610
原创 UVA - 10935 Throwing cards away I
/* 这题用到了队列的思想 BTW,查题解时,看到两个大佬的代码真是简洁,于是果断抛弃了自己写的,用他们的思路重新做了一遍 参考博客: http://www.cnblogs.com/AlgoWing/archive/2013/03/04/3189616.html http://blog.csdn.net/mobius_strip/article/details/45
2017-09-02 17:00:44 188
原创 C++中setiosflags()的用法
本文来自百度文库,留存以备日后查看,侵删原文地址:https://wenku.baidu.com/view/6017d02c2af90242a895e51e.htmlcout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2);setiosflags 是包含在命名空间iomanip 中的C++ 操作符,该
2017-09-02 15:51:58 1113 1
原创 UVA - 1594 Ducci Sequence
/* 做这题时的心路历程其实挺有趣的 一开始看到说Ducci序列最终要么全0,要么循环,我在想: 要怎么判断循环呢?是不是还得记录下循环节什么的?是该用数组记录循环节吗?还是想要让我们利用STL来记录? 后来又读了一次题,发现自己真是跑偏了,既然说全0或者循环,只要不是全0,最终就一定是循环嘛...我究竟是在纠结些什么 T^T 判断全0可不是比判断循环容易多了么?
2017-09-02 15:36:46 346
原创 UVA - 1593 Alignment of Code
/* 这题的收获 or 技巧 or 注意点 or 说明 1. getline函数读取整行 2. 流输入stringstream 3. string的size函数、length函数的返回类型都是size_type类型,在使用返回值之前,务必先进行强制类型转换 4. 此题有个坑点,每行的最后一列的单词,后面是没有空行的,直接回车,因此,要将最后一列的输出单独拿出来
2017-09-02 14:45:34 192
原创 UVA - 1585 Score
//得分 uva1585//这题好像没什么特别的收获,标准水题#include #include using namespace std;int main(){ int m; cin >> m; char s[100]; while (m--) { cin >> s; int n = strlen(s), t = 0, sum = 0; for (int i
2017-09-02 11:21:38 205
原创 UVA - 272 TEX Quotes
//入门经典P47 水题#include int main(){ int c, q = 1; while ((c = getchar()) != EOF) { if (c == '"') { printf("%s", q?"``":"''"); q = 1 - q; } else printf("%c", c); } return 0;}/*
2017-09-02 11:21:04 180
原创 UVA - 10079 Pizza Cutting
/* 主要是画图,画很多图,找规律,找到规律以后,发现算是简单题 思路的关键是:每次切割都与前(i-1)刀有交点的情况下,得到的块数是最大的*/#include typedef long long ll;using namespace std;const int N = 21e7 + 10;ll a[N];int main(){ a[0] =
2017-09-02 11:19:43 250
原创 UVA - 136 Ugly Numbers
/* 思路: 从小到大生成所有的丑数,最小的丑数为1,对于任意丑数x,2x,3x,5x也是丑数; 这样就可以用一个(数值越小,优先级越大的)优先队列来保存所有已生成的丑数,每次取出最小的丑数,生成3个新的丑数入队(生成的3个中,并不一定都是新的丑数,但只让新的入队),直到取出的丑数是第1500个丑数 但要注意: 同一个丑数可能有多种生成方式,例如(10 == 2 * 5
2017-09-02 11:16:05 173
原创 UVA - 814 The Letter Carrier's Rounds
/* 用到的处理手法 or 收获 or 注意事项: 1. substr函数分离邮箱的用户名和MTA,当需要有两个返回值时,通过传两个引用并改变它们来实现 2.对于map,在使用map[key]前,必须先检查一下key是否存在 如果map不包含key,使用下标有一个危险的副作用,会在map中插入一个key的元素,value取默认值,返回value。也就是说,map[key]不可
2017-09-02 11:14:47 264
原创 UVA - 400 Unix ls
/* 收获: 1. 我觉得最大的收获是,了解了该怎么进行竖向的数据输出 并且,以及《入门经典》的做法,并没有先转换为二维数组再输出,而是用了些别的技巧(好像也能算是技巧,具体的看代码吧,这个我也不太好描述) 2. string的size()函数的返回类型: 之前一直以为是int型,后来看到《入门经典》里面有对size返回值的强制类型转换,于是去查了一下,发现自己以前错得有
2017-09-02 11:14:11 149
原创 UVA - 1592 Database
/* A.该题思路: 如果四重循环枚举 r1, r2, c1, c2,那么枚举时间过大,肯定会TLE 解决方法: 只枚举 c1, c2, 然后从上到下扫描各行。每次碰到一个新的行r,把c1 和 c2两列的内容作为一个二维数组存入map,如果map的键值已经存在这个二元组,二元映射到的就是所要求的r1,而当前行就是r2 细节优化: 如何表示由c1
2017-09-02 11:12:33 248
原创 UVA - 207 PGA Tour Prize Money
/* 法一: 代码借鉴修改自blog: http://blog.csdn.net/aozil_yang/article/details/50543965 这个博客把思路和注意的地方说得很详细了,建议一看 收获: 1. 如何在字符串中招某个特定的字符? 可用strchr()函数: http://blog.csdn.net/tommy_wxie/article/
2017-09-02 11:10:19 286
原创 UVA - 221 Urban Elevations
/* 这题的基本思想是坐标离散化,之前看《挑战程序设计竞赛》时,做过类似的题如下: GCJ 2008 APAC local onsites C Millionaire 链接:http://blog.csdn.net/mofushaohua_ln/article/details/77647763 说明:这题是概率题,虽然不算是坐标离散化,不过思路也是离散化,当时做这题时,因为是
2017-09-02 10:25:24 232
原创 技巧 坐标离散化 (来自《挑战程序设计竞赛》P164)
/*#坐标离散化 (来自《挑战程序设计竞赛》P164)给出题目和主体代码:题目:区域的个数w*h的格子上画了n条或垂直或水平的宽度为1的直线。求出这些线将格子划分了多少个区域(w和h的范围都为[1, 1e6],n的范围为[1,500])思路:一般先想到的是类似水塘问题的处理,建立数组并深度优先搜索但是这个问题中w和h最大为1000000,所以没办法创建w*h的数组。因此我们要使
2017-09-02 09:36:41 766 1
原创 CodeForces - 820A Mister B and Book Reading
//水题#include using namespace std;int main(){ int c, v0, v1, a, l; while (cin >> c >> v0 >> v1 >> a >> l) { int day = 0; if (v0 >= c) { cout << 1 << endl; continue; } day++; c
2017-08-31 15:36:20 254
原创 UVA - 1583 Digit Generator
//生成元 uva1583//收获:有时候枚举耗时过多,且对某个数字n,要从0枚举到(n - 1),在这种情况下,最好是建表查表,以提高效率 #include #include using namespace std;const int maxn = 100005;int a [maxn];int main(){ memset(a, 0, sizeof(a)); for (
2017-08-31 15:35:46 232
原创 ZOJ - 3958 Cooking Competition
//水题#include #include using namespace std;int a[25];int main(){ int t, n; cin >> t; while (t--) { cin >> n; int mark1 = 0, mark2 = 0; for (int i = 0; i < n; i++) { cin >> a[i];
2017-08-31 15:35:02 219
原创 UVA - 10056 What is the Probability
/* 这题其实并不难,可以说,算是比较简单的概率题了...涉及到一点等比级数求和,但这也是高数里面学过公式的,总之,没做出来有些不应该 注意下:浮点数是有误差的,所以p为0时,要单独特判,并且特判时也要注意小数点位数,思考方面不太难,但如果不注重细节,很容易WA*/#include #include #include using namespace std;const
2017-08-31 15:34:28 229
原创 CodeForces 732B Cormen — The Best Friend Of a Man
//这题也是水题#include using namespace std;const int N = 505;int planned[N];int total[N];int main(){ int n, k; while (cin >> n >> k) { int ans = 0; // sum of additional hours for (int i = 0;
2017-08-31 15:32:32 195
原创 UVA - 455 Periodic Strings
//周期串 uva455//借鉴了代码思路: http://blog.csdn.net/mobius_strip/article/details/40584263/*收获:**1.暴力破解,但要注意,不是死列举,而是发现,循环节首先必定是长度的因子,再去暴力破解,不要蛮解**2.注意格式的控制*/#include using namespace std;char a[100];i
2017-08-31 15:31:45 207
原创 ZOJ - 3959 Problem Preparation
//水题,排序后就能直接按照要求判断了,没什么坑点#include #include #include using namespace std;const int N = 105;int a[N];int main(){ int T, n; scanf("%d", &T); while (T--) { scanf("%d", &n); for (int i =
2017-08-31 15:30:45 261 1
原创 CodeForces - 732C Sanatorium
/* 注意!!!题目的理解很重要,我当初就是因为题意理解有误,一直WA We shouldn't count as missed meals on the arrival day before Vasiliy's arrival and meals on the departure day after he left. 这句话表明了:如果在抵达的那天,或者离开的那天,没有吃满3顿
2017-08-31 15:30:09 179
原创 UVA - 10474 Where is the Marble
/* 算是水题,难度不大 有个值得注意的小细节是,CASE的每个字母都是大写的,而不仅仅是第一个,为此WA一次 值得学习的函数: sort对vector排序时:sort(v.begin(), v.end()) lower_bound: 查找“大于或等于x的第一个位置”*/#include #include #include using namespace
2017-08-31 15:29:23 195
原创 UVA - 1584 Circular Sequence
//环状序列 uva1584//收获://如何判断环状序列的字典序:取余的巧妙应用,但是注意仅比较长度次数,否则循环可能无法退出,故要 n = strlen(s) i从0到(n-1), 比较n次即可 #include #include using namespace std;int maxn = 105;//环状串s的表示法p是否比表示法q的字典序小 int CompareSe
2017-08-31 15:28:50 171
原创 UVA-10082 WERTYU
//WERTYU问题://收获:注意的就是,在字符串中表示\,仍然要用\\,前一个\是转义字符 //O S, GOMR YPFSU/#include #include using namespace std;char s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./"; // \\才表示\,前一个符号是转义字符int ma
2017-08-30 23:24:41 261
原创 UVA-10128 Queue
/* 这题是使用了动态规划算法,思路很是巧妙 动态规划的思路讲解,这个博客比较详细: http://blog.csdn.net/metaphysis/article/details/6566478 代码的简洁优雅,这个博客更胜一筹: http://blog.csdn.net/keshuai19940722/article/details/14230003*/#includ
2017-08-30 23:24:05 138
原创 GCJ 2008 Round1A A Minimum Scalar Product
//水题#include #include #include using namespace std;typedef long long ll;const int MAX_N = 1000;int n;int v1[MAX_N], v2[MAX_N];void solve();int main(){ int k; freopen("E:\\A-large-practi
2017-08-30 23:23:16 198
原创 UVA - 340 Master-Mind Hints
//例题3-4 猜数字游戏的提示//收获:处理思路:在猜测和答案中都出现某数字,且在猜测和答案位置不同的次数 = 都出现的次数 - 数字位置正确的次数; 都出现的次数 = min(答案中出现次数,猜测串中出现次数) #include using namespace std;int main(){ int n, *a, *b; int sum1, sum2, c1, c2, kas
2017-08-30 23:22:38 184
原创 poj3684 Physics Experiment
//挑战的分析已经很详细了,P157-158,我也就不再赘言//注意单位,输入单位是厘米,输出的要是米#include #include #include #include using namespace std;const double g = 10.0;const int maxn = 105;double y[maxn];int N, H, R, T;double
2017-08-30 23:22:04 169
原创 UVA - 156 Ananagrams
/* 收获: 1. map是从键到值的映射 例子:map month_name; month_name["July"] = 7; map除了支持set支持的insert、find、count、remove外,还支持 [] 运算符,故map可弹鼓奏数组使用,map也称为“关联数组” 2. 对string的sort排序,写法为: sort(s.begin(),
2017-08-30 23:21:14 130
原创 UVA - 10815 Andy's First Dictionary
/* 收获: 1. set是数学上的集合,每个元素最多出现一次,和sort函数一样,自定义类型也可定义set,但必须定义小于运算符 关于STL中的set,可见改blog: http://blog.csdn.net/sunshinewave/article/details/8068326 2. string类中除了size()以外,也有和它意义用法基本一样的length()
2017-08-30 23:20:30 152
原创 UVA - 101 The Blocks Problem
/* 收获: 1. 虽然不能返回两个值,但是可以用传引用作为参数,改变引用,来实现相同的效果 2. 不定长数组用 vecotr 保存比较合适 3. vector中的resize函数很好用,可以重新设定vector的长度,多余的元素全部删掉 有关resize()函数的更多介绍: http://blog.csdn.net/jocodeoe/article/details
2017-08-30 23:19:35 153
cuda_9.0.103_384.59_linux.run 百度网盘下载地址
2018-09-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人