自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只冰熊

拨云

  • 博客(48)
  • 收藏
  • 关注

原创 Codeforces 472C - Design Tutorial: Make It Nondeterministic(模拟)

题意每个人可以选择first name 或者 last name 当自己的账号,现在给出最终的字典序排位,问能不能实现思路模拟一下。lst用于记录上一个人选择的账号。第一个人肯定要选择last name和first name里最小的,记为lst第二个人,如果其中小的比lst大,那么就选择那个。如果比lst小,那么再次比较较大的和lst,如果还

2014-09-29 15:39:24 1197

原创 Codeforces 472B - Design Tutorial: Learn from Life(模拟)

题意有一个载重量为K的电梯,有N个人,每个人都有想去的地方,求电梯送他们到站的最少时间。思路一开始我想从低到高来载,发现不好搞。换个思路,先运最高的人,如果还有空的话顺路载一下低一点的人。不过还是感觉我的思路很low。。。代码#include #include #include #include #include #inc

2014-09-29 15:27:31 1014

原创 HDU 5055 - Bob and math problem(贪心)

题意在条件下组成最大的数字。是奇数。0不能放在前面。思路取出一个最小的奇数放在最后,然后从最大的开始放。代码有点不优雅。。代码#include #include #include #include #include #include #include #include #include #include #

2014-09-28 22:19:58 840

原创 HDU 5056 - Boring count

题意统计一个字符串中子串每个字符最多重复k次的子串。思路用pos记录位置,当碰到cnt>k的时候就往前移代码#include #include #include #include #include #include #include #include #include #include #include #include #include

2014-09-28 22:16:40 987 2

原创 UVa 669 - Defragment(DFS)

题意这题看了好久才懂什么意思。简单地说就是给出一个数字原来的位置,和最后的位置,求移动顺序。输入簇(cluster)的总数和文件个数,每个文件个数后面跟着的是各个簇的原始位置。最后要按顺序排下来。思路分两种情况。如果没有环,直接DFS然后换掉。如果有环,从后面开始找到第一个空的位置,然后把数移过去,然后就递归了。

2014-09-28 12:41:01 835

原创 TopCoder SRM 634 Div2 Problem 500 - ShoppingSurvey

题意有N个人,现在知道每个商品被买了ki次,求最少的,买了全部商品的人数。思路要尽量不让一个人买完商品,也就是尽量把商品卖给不同的人。我用num[i],表示第i个人买的商品数,然后买就行。比如说5个人,商品为3,3,4。第一个商品卖给1,2,3第二个卖给4,5,1第三个卖给2,3,4,5。这样就没人买到全部的商品了。

2014-09-27 16:27:03 1072

原创 TopCoder SRM 634 Div2 Problem 1000 - SpecialStrings

题意给一个字符串,求满足条件的下一个字典序的字符串。条件:字符串首位和第i位的字符串的字典序比和i+1到末尾的字符串小思路从后面往前搜索。碰到第一个0,就把它变成1,然后检查之后的字符,看变为0能否符合条件。第一个字符不能为1代码#include #include #include #include #include #i

2014-09-27 16:18:59 1487

原创 CodeForces 471C - MUH and House of Cards(推导)

题意给出n个木棒,问能叠成多少种不同高度的房子。思路算出某个高度最少所需木棒。如果这个高度所需木棒小于当前木棒,判断能否正好用完。对于第一个,可知从上往下分别是1个屋顶,两个屋顶......k个屋顶。这时候是最省的。这时候所用木棒为(1 + k) * k / 2 * 2(这是屋顶所用的) + k * (k - 1) / 2(连接屋顶的

2014-09-27 15:56:43 908

原创 USACO Section 1.5 - Superprime Rib(DFS + 枚举)

题意找出n位,每次去掉最后一位都是素数的数字。思路首先有几个特殊的数字。1 9不能作为第一位。2只能作为第一位。其余的数字都不行。然后DFS即可。一开始我是先枚举出数字再判断,T了。应该边枚举边判断代码/*ID: mycodeb1LANG: C++TASK: sprime*/#include

2014-09-25 20:14:05 834

原创 UVa 1401 - Remember the Word(Trie + DP)

题意给一个字符串,求几种方式组成,由给定的字典。思路这题纠结了好几天,一直想不懂是怎么递推的。在今天早上的电路课上,终于灵光一闪。。。。dp[i]表示从第i个开始的字符串,dp[i]=sum(i+len(x)),x是这个字符串的前缀。用以前的版本的字典树竟然无限TLE!姿势都一样。。看来以后只能用lrj版的字典树了。代码

2014-09-25 19:33:33 737

原创 USACO Section 1.4 - Arithmetic Progressions (暴力)

题意给出m,要求在[0, m]的范围内,由(0 p2+q2所组成的集合内,输出长度为n的等差数列。思路m最大才250,直接开个vis数组,记录达到的数。接下来我是把这些数都存在一个数组里,从这个数组里取出来,两两枚举k,然后判断接下来的数是否vis过。代码/*ID: mycodeb1LANG: C++TASK: ariprog*/

2014-09-23 18:30:39 820

原创 PKU 3630 - Phone List(Trie)

题意查找是否有串是其他串的子串。思路一开始的思路是将串按长度排序,如果有串走完了以后那个位置已经被人走过,就是子串,用的是new的方式,MLE了。后来释放了一下内存,TLE了。看了别人的题解,原来用静态的Trie才能过。改了一下静态,过了。值得一提的是一开始的版本我在HDU上提交是500ms,静态版本提交是60ms,虽然算法有有一点变化,但是效率差3

2014-09-22 19:02:58 744

原创 LeetCode - Maximum Depth of Binary Tree(DFS)

思路左右结点的最大值。代码class Solution {public: int DFS(int dep, TreeNode *cur) { int a = 0, b = 0; if (cur->left) a = DFS(dep + 1, cur->left); if (cur->ri

2014-09-21 18:38:04 695

原创 LeetCode - Remove Duplicates from Sorted Array

思路用两个数,一个表示当前的位置,另一个走完整个数组,如果数不同就替换掉代码class Solution {public: int removeDuplicates(int a[], int n) { if (n 1) return n; int pivot = 0, j = 1; for (j = 1; j

2014-09-21 18:20:55 488

原创 LeetCode - Pow(x, n) (快速幂)

思路一开始直接交了一发pow(x, n),RE了。后来按正常的方法写了一发,TLE了。只能用快速幂注意处理n 代码class Solution {public: double pow(double a, int m) { if (a == 1) return 1; if (a == 0) retur

2014-09-21 17:27:20 836

原创 UVa 10317 - Equating Equations(DFS)

题意不改变符号顺序,问能不能交换数字的位置使等式成立。思路一开始看数据量这么小果断暴力枚举全排列然后检查,爽快地TLE了。后来想了一下,可以把左边的-号的数字都移到右边,这样两边都是正的数字,只要找出sum / 2的数字组成就行。这里可以写DFS也可以写DP。然后就是输出。取出符号,如果在等号左边,而且符号是+,之后填上我们找到的数字,如果是

2014-09-21 16:22:52 708

原创 STL容器在ACM中的一些用法

今天突然想起前几个月刚接触STL容器的时候不知道从哪里下手,又找不到教程。现在就写一点自己使用STL容器的体会,希望给大家一些帮助。以后会慢慢加上例题(如果我还能回想起我挖过这个坑的话vectorvector是一个可变长的数组。用法:vector 名字; 例如 vector ve; vector ve;自己定义的结构体什么

2014-09-20 23:08:39 838

原创 LeetCode - Surrounded Regions(BFS)

题意把被包围的O全部变为X思路这题做得真是纠结啊。。一开始用DFS,一直RERERERERERERE,看了很久代码没问题。后来问了一下hcbbt巨巨,他说可能爆栈了,后来换了BFS才过。事实就是DFS不管怎么写都会爆栈。思路就是从边界是O的开始找,能找到的O全部变为T,最后扫描一遍,把T变为O,把O变为X。PS:看多了ACM里各位巨巨的代码之后再看网

2014-09-20 21:40:46 684

原创 UVa 1509 - Leet(MAP + DFS)

题意给一串字符串,和一个对应的Leet,问能否存在一个转化使其相等。其中,一个字符只能对应一种Leet,而一种Leet可以对应多个字符。也就是说,这样是可以的abc sss思路因为l 对原字符串逐个位置进行枚举对应的Leet和DFS,并用map存储。如果该字符之前出现过,判断存储的Leet是否和接下来的Leet相等,相等,

2014-09-20 16:21:43 733

原创 UVa 1346 - Songs

题意有N个唱片,每个唱片有ID,长度和频率sum = f[i] * (len[i] + len[i + 1]..... + len[n]),求sum最小的时候第k个唱片的id。思路可以用相邻交换法证明当f1 / l1 > f2 / l2时,sum1 > sum2。所以排个序就行。代码#include #include #i

2014-09-20 13:59:53 659

原创 HDU 5019 - Revenge of GCD

题意找出两个数的第k大公约数,如果不存在输出-1思路就是找最大公约数的第k大因子。代码#include #include #include #include #include #include #include #include #include #include #include #include #include #include #

2014-09-19 22:10:16 817 1

原创 TopCoder SRM 633 Div2 Problem 500 - Jumping

题意有个青蛙,给出目标点和跳的距离,求能否到达。思路其实能否跳到和跳的顺序是无关的。考虑不能跳到的情况距离之和小于到终点的距离。 不用说,就算一直跳直线也够不到。最大一步的距离比前面的距离都要大。 这样的话,就算一直朝反方向跳,最后一步也会跳出头。其余情况都可以跳到。代码#include #

2014-09-19 18:32:45 866

转载 C++里的几个常用的二进制位内置函数

转载自http://www.cnblogs.com/nysanier/archive/2011/04/19/2020778.html— Built-in Function: int __builtin_ffs (unsigned int x)Returns one plus the index of the least significant 1-bit of x, or if x

2014-09-19 15:07:52 2614

原创 ACDream 1191 - Dragon Maze

题意给一个图,每个点有能量,求出在能走到终点的情况下的最大能量,或者走不到。思路用优先队列,这样可以保证每一次取出来的都是当前最小步数的最大能量!重载结构体的小于号竟然无效?(求原因),只能写一个cmp函数。代码#include #include #include #include #include #include #inclu

2014-09-18 21:58:56 657

原创 ACDream 1209 - qj的招待会

思路单源最短路。从终点Dijkstra一遍就行。代码​#include #include #include #include #include #include #include #include #include #include #include #include #include #define LL long long#define lowbit(x)

2014-09-18 21:44:39 597

原创 UVa 1481 - Genome Evolution

题意统计两个集合中连续的,长度并且元素都相同的子序列的数量思路一开始想枚举A的子集,然后字典序排一下,存在MAP里。不过这样O(n3logn),明显超时了。转换一下思路。记录A集合中的各个元素在B集合中的位置。对于一个长度为len的A的子集,如果他的元素在B中的最大位置-最小位置 + 1 等于len,说明这个序列的其他元素都在他们中间,也就是说这个序列也在中

2014-09-18 17:54:07 679

原创 LeetCode - Count and Say

题意给一个字符串,他的下一个序列是每个连续的数字的个数+当前数字。求第N个序列。思路直接用string了。代码class Solution {public: string countAndSay(int n) { string str = "1"; for (int cnt = 2; cnt n;

2014-09-17 16:58:48 515

原创 LeetCode - Merge Sorted Array

题意把两个排好序的数组合并到第一个里。思路从后面开始合并,这样不用移动原来数组中的元素。代码class Solution {public: void merge(int A[], int m, int B[], int n) { int i = m - 1, j = n - 1, pos = m + n - 1;

2014-09-17 16:27:13 547

原创 UVa 1326 - Jurassic Remains

题意找出尽量多的串,使每个字母都出现偶数次思路因为N但是如果一直^到最后,复杂度为O(2n),TLE。考虑枚举一半的串的状态,然后在后一半中查找。因为只有两个相同的状态值异或才可以符合条件。这样复杂度就变成O(1.414n)代码#includebits/stdc++.h>#define LL long long#defin

2014-09-16 21:34:11 620

原创 LeetCode - Partition List

题意传入一个链表的头指针和一个数,把小于这个数的都放前面,大于的位置不变接着放后面。思路用了非常2的方法。开两个队列,分别存放大于的和小于的,再开一个队列一个个存放指针,最后拿出来接上去。。代码class Solution { queue qsml, qbig; queueListNode *> p;public:

2014-09-16 14:57:22 609

原创 UVa 1468 - Restaurant(贪心 + 扫描)

题意有A、B两个餐馆和其他餐馆,现在要建一个餐馆,使它到A或B的距离比任意一个餐馆到A或B的距离有一个短。求数目。思路一开始用暴力枚举,就算加了很多剪枝也TLE了TAT。还是参考的帆神和柯神的解题报告。要从每一列考虑。显然在A、B两个餐馆X轴之外是不可能放置的,因为这样距离一定会比A到B或者B到A长。所以放置地点就限制在了AB之间(X a

2014-09-15 19:35:28 805

原创 LeetCode - Flatten Binary Tree to Linked List

题意把一个链表弄成一条链思路先序遍历一下,记录上一结点,把上一结点的left变为0,right变为当前结点。代码class Solution { TreeNode *last;public: void DFS(TreeNode *root) { if (root != 0) {

2014-09-14 16:36:56 493

原创 LeetCode - Gas Station

题意判断从哪个加油站开始可以走一圈。思路一开始偷懒,直接再赋值一遍,这样就不用处理到头的情况了,MLE。不过只用一个变量来记录就行,如果超出了就让它等于0,意思就从第一个开始。走过的加油站的数量专门由k来统计。代码class Solution {public: int canCompleteCircuit(vecto

2014-09-14 16:35:47 576

原创 UVa 10917 - Walk Through the Forest(Dijkstra + DFS)

题意小明要从办公室回家,当从A到家里存在一条路比B到家的任何一条路都短的话,就走A。问他有几种走法。思路意思就是A到终点的最短路比B的最短路短的时候可以走A。先对终点进行一次Dijkstra,求出每个点到终点的距离,然后DFS。代码#includebits/stdc++.h>#define LL long long#define

2014-09-14 11:32:19 574

原创 LeetCode - Pascal's Triangle

题意输出杨辉三角思路照着输就行。代码class Solution { vectorvector >vve;public: vectorvector > generate(int numRows) { for (int i = 1; i numRows; i++) { vect

2014-09-13 16:47:47 428

原创 LeetCode - Evaluate Reverse Polish Notation

题意计算逆波兰表达式。思路用栈。 如果是数字就进栈,遇到运算符取出两个栈里的东西,算完以后进栈。最后留下一个元素在栈里。注意处理负号。。。代码class Solution { stack stk; public: int evalRPN(vector &tokens) { vector::

2014-09-13 16:24:37 438

原创 LeetCode - Reverse Words in a String

题意要求逆序输出一个字符串中的单词。思路我用了stack来处理。代码class Solution { bool first;public: void reverseWords(string &s) { first = true; int len = s.size(); string s

2014-09-13 13:52:08 587

原创 UVa 1344 - Tian Ji -- The Horse Racing

题意田忌赛马,求最好的结果。思路乍一看挺简单的,但是需要考虑的还是挺多的。如果田鸡最快的比齐王最快的快,直接比下去。如果田鸡最快的比齐王慢,这时候就要用最慢的赖一下齐王。但是,不能马上用最慢的去赖,因为可能田鸡最慢的马还比齐王最慢的马要快那么一丢丢,如果用这只马去赖就太亏了,他还有利用价值。这时候就顺便用这只马赢一下齐王最慢的马,然后接着比较

2014-09-11 23:56:04 676 2

原创 UVa 1450 - Airport(二分)

题意有两个方向的飞机要起飞,一次只能飞一架,求任意时刻飞机最大编号的最小值。思路大家应该都能想到二分,但是验证的时候有一些要注意。总的思路就是先储存着飞的飞机,如果有哪一方的飞机数大于mid了,让它飞,之后判断是不是都小于mid。有一些情况:某一时刻储存着的飞机不能多于目前的飞机总数。因为这时候可以飞完全部的飞机,不能继续飞了,也就不能存

2014-09-10 22:39:48 788

原创 USACO Section 1.4 - Mother's Milk(DFS + 记忆化)

题意有三个桶,刚开始第三个是满的,问第一个是0的时候第三个桶的情况。思路无脑倒水,只要有水就倒。记录每一种状态是否达到过。代码/*ID: mycodeb1LANG: C++TASK: milk3*/#include bits/stdc++.h>#define LL long long#define lowbit(x) ((x) & (-x

2014-09-09 19:12:13 590

空空如也

空空如也

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

TA关注的人

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