随笔分类 -  ACM-模拟题

摘要:水题一道,以后还是不做水题,没什么收获Source CodeProblem: 2017User: yangliuACMerMemory: 244KTime: 0MSLanguage: C++Result: Accepted#include <iostream>using namespace std;int main(){ int n,s[11],t[11]; int i,ret; while(cin>>n, n != -1){ ret = 0; memset(s, 0, sizeof(s)); memset(t, 0, sizeof(t)); for(i = 1; i 阅读全文
posted @ 2012-02-10 16:54 yangleo 阅读(217) 评论(0) 推荐(0)
摘要:本题很简单,变形虫的长度合成满足一定公式,只要每次从所有变形虫当中取出最长的两只合成新虫放进长度集合即可由于要不断取最大值,可以考虑用优先权队列或者堆Source CodeProblem: 1862User: yangliuACMerMemory: 272KTime: 47MSLanguage: C++Result: Accepted#include <iostream> #include <queue> #include <cmath> using namespace std; int main(){ int n,i; double a,b,t; prio 阅读全文
posted @ 2011-12-24 21:41 yangleo 阅读(242) 评论(0) 推荐(0)
摘要:以后一定要细心,不能再犯这个低级的错误,把WA控制在最低范围内参考了http://www.cnblogs.com/damacheng/archive/2010/09/24/1833983.html的题目分析题目大意:你要写一个OS,要实现磁盘碎片整理的功能。磁盘分为N个簇,一个文件可以占用K个簇,(1 <= K < N <= 10000),给出各个文件的占用磁盘的情况,也就是一个文件占用了哪些簇,想要进行碎片整理,就是把这些簇按顺序整理到磁盘的最顶部,例如给出示例: 文件1:2 3 11 12,占用了4个簇,编号为1-4。 文件2:7,占用了1个簇,编号为5。 文件3:18 阅读全文
posted @ 2011-12-24 20:33 yangleo 阅读(365) 评论(0) 推荐(0)
摘要:这题比较简单,就是对电话号码的字符串处理并排序输出,但是实现时有几个注意的地方1、用map存储比较方便,可以自动根据string的排序规则排序,而且题目数据恰好是<string,int>的K-V存储特点。2、用另一个字符串重新拼接待输出地字符串比直接对输入字符串进行替换移位等操作要方便。3、注意字符和数字的ASCII的转化。4、‘-’的加入可以在输出的时候,输到第4个字符的时候先输出‘-’。5、map,set,vector,deque,list等容器要熟练使用,可以参考http://www.cplusplus.com/和MSDN的文档。#include <iostream&g 阅读全文
posted @ 2011-12-21 00:31 yangleo 阅读(549) 评论(0) 推荐(0)
摘要:这是我面试一个公司的时候碰到的面试题Q请用两个栈模拟实现队列,至少完成入队、出队及计算长度的方法A 基本思路是两次后进先出 = 先进先出,元素入队列总是入左栈,元素出队列如果右栈不为空直接弹出右栈头元素;如果右栈为空就把左栈元素出栈全部压入右栈,再弹出右栈头,这样就模拟出了一个队列。Class Q{ stack<int> S1,S2; void push(int a){ S1.push(a);} int pop(){ if(S2.empty()){ while(S1.size()>0){ S2.push(S1.pop()); } } return S2.pop();... 阅读全文
posted @ 2011-12-21 00:29 yangleo 阅读(253) 评论(0) 推荐(0)
摘要:基本思路就是求逆序数然后根据逆序数排序,出现的问题有:1、这题出现的问题主要是对m和n总是搞混,而且提交出现了Runtime Error,这个错误一般都是由于一般都是非法访问内存(数组越界、访问空指针、堆栈溢出)、做除法时除以了0 等造成的,后来仔细看了一下“a positive integer n (0 < n <= 50) giving the length of the strings; and a positive integer m (0 < m <= 100) giving the number of strings. ”就立刻发现了错误,结构体数组开小了。 阅读全文
posted @ 2011-12-21 00:27 yangleo 阅读(321) 评论(0) 推荐(0)
摘要:这题勾起我伤心的回忆啊就是这题,在北信夏令营测试上面作为D题原题,卡了我两三个小时,眼睁睁看着做过此题的ACMER们抢走机会,痛哉~Orz知耻而后勇,AC300发誓坚持到底,为尊严而战算法分析:其实这就是个简单的模拟题,用数组做就行,根本没必要用栈,当时还在反复想怎么用栈的STL,晕。用一个数组sequence很容易根据给出的P序列来还原括号序列,1代表作左括号,0代表右括号,每次赋值0之前先赋足够的1在它之前。然后根据sequence数组输出w序列,扫描数组,每遇到一个左括号,就计数它前面还没有匹配的第一个左括号是哪个,然后查这对匹配的括号之间有几个右括号输出即可。多简单的一道题,却由于没有 阅读全文
posted @ 2010-12-17 23:29 yangleo 阅读(195) 评论(0) 推荐(0)
摘要:#include <iostream>using namespace std;int main(){ int n,rc[101][101]; int i,j,tempsr[101],tempsc[101],x[101],y[101]; while(cin>>n,n!=0){ for (i = 0;i < n;i++) for (j = 0;j < n;j++) cin>>rc[i][j]; //若行的奇数和的个数不等于列的奇数和的个数则Corrupt //若均为0 则OK //若相等 则可作变换,可以一一配对得到交点就是变换点 memset(te 阅读全文
posted @ 2010-12-17 21:21 yangleo 阅读(233) 评论(0) 推荐(0)
摘要:参考了slayer 的解答http://www.slyar.com/blog/poj-1029-cpp.html 与POJ 1013类比模拟题,抓两点,其一在等式中出现的硬币一定不是假币,其二在不等式中每次都出现即在不等式中出现的次数等于它出现的次数,一定是假币其他情况无法判断输出0#include <iostream>#include <string>using namespace std;const int MAX = 1001;int main(){ int i,n,k,p,count,pos,total = 0;//total标记不等式出现的次数,不等式中假币一 阅读全文
posted @ 2010-12-14 21:14 yangleo 阅读(225) 评论(0) 推荐(0)