Sicily
文章平均质量分 68
chenhq1991
不是大牛,只想记录学习的过程
展开
-
1029. Rabbit
1.一个简单的递归求和即可2.m = 1应该是特殊的情况#include#include#includeusing namespace std;class BigNum{public: BigNum() { this->num = "0"; } BigNum(string n) { this->num = n; } string getNum() {原创 2012-08-26 16:29:07 · 1029 阅读 · 0 评论 -
sicily--1753. 解码
烦人!但是水题#include#includeusing namespace std;void printChar(char c, int times){ for(int i = 0; i < times; i++) cout << c;}int main(){ string s; while(cin >> s && s[0] != 'X') { for(int原创 2012-07-28 20:42:46 · 866 阅读 · 0 评论 -
sicily--1323. Switch text
一开始怎么都不理解题目,上网看了这个代码,顿时惭愧啊;将输入的两行当作一个 pair ,先操作第二行, 再操作第一行; 其他的就是不太熟悉 getline() 的用法了,它可以将一行字符串读入(包含空格)直至遇见回车符另assign 的用法见:http://blog.csdn.net/chenhq1991/article/details/7799172#include #includ转载 2012-07-29 15:48:46 · 831 阅读 · 0 评论 -
sicily--1021. Couples
之前考虑到一种情况,1对8;2对7;3对5;4对6;即使这种情况下,按照以下程序并没有将1-8的消除,但是,发现,即使是消除了1-8,进而消除了2-7,仍然不能完全的消除全部的“对”;所以,以下的程序所描述的情况也就是说在头尾之间的必须要有匹配成功才有可能全部消掉,否则不成功,顾此种情况没有纳入考虑中// Problem#: 1021// Submission#: 8原创 2012-07-28 13:58:12 · 1061 阅读 · 0 评论 -
sicily--1341. 明明的随机数
无聊的计数#includeusing namespace std;int main(){ int num; while(cin >> num) { int entry[1000] = {0}; int randomNum = 0; for(int i = 0; i < num; i++)原创 2012-08-13 16:58:00 · 1815 阅读 · 0 评论 -
sicily--1282. Computer Game
1.KMP算法:http://blog.csdn.net/chenhq1991/article/details/78301932.因为题目说说的60000的长度是 code 的长度,主串的长度未知,所以要开大点3.有了KMP算法,这道题就很简单了,但是KMP对我来说的确很难理解#include#includeusing namespace std;int code_dimens原创 2012-08-12 20:48:33 · 1357 阅读 · 0 评论 -
sicily--1252. Defining Moment
1.这题在网上的分类中属于排序部分,但是我怎么做都觉得这就是考 string 的应用2.坑爹的地方是前缀"re" 所对应的翻译是要在"word"的后方; 后缀"er" 所对应的反应要在原有的"word"的基础上在屁股加"s";“tion” 后要加"ing"3.最终输出的"word"是去除了前缀跟后缀之后剩下的,题目已经说明了去除之后不会为空的4.前缀一定是要从第0下标开始; 后缀一定是原创 2012-08-13 16:55:50 · 564 阅读 · 0 评论 -
sicily--1819. Matrix
一开始,真的是被这道题打败了,无论如何都 TL;不知道怎么去用bitset或者是随机算法,后请教了一个大牛师兄,学习了他的代码让我真正的理解了这样的原因另收集了一些关于 “bitset”的用法:http://blog.csdn.net/chenhq1991/article/details/7758984#include#includeusing namespace std;原创 2012-07-26 20:09:38 · 1144 阅读 · 1 评论 -
sicily--1306. Sorting Algorithm
#include#includeusing namespace std;int main(){ int totalNum, interval; while(cin >> totalNum >> interval && totalNum != 0) { list numList; while(totalNum-- > 0)原创 2012-08-13 00:15:54 · 1449 阅读 · 0 评论 -
sicily--1931. 卡片游戏
题目很简单,用队列简单模拟即可,提交的时候自作聪明以为是最后一个输出不需要空格导致WA了#include#includeusing namespace std;int main(){ int caseNum; cin >> caseNum; while(caseNum--) { int num;//牌数 cin >> num; queue card; for(原创 2012-07-27 00:22:26 · 1278 阅读 · 0 评论 -
sicily--1194. Message Flood
问题不难,就是存储手机中好友的姓名,若有收到某个好友的祝福短信,则“人数”减一,因为该人会在收到短信的时候随即回复信息,不再考虑; 陌生人的短信不需考虑#include#include#include#includeusing namespace std;int main(){ int friNum;//朋友人数 while(cin >> friNum && friNum !原创 2012-07-27 00:01:22 · 977 阅读 · 0 评论 -
sicily--1198. Substring
1.一开始觉得就将字符串排好序,将排在前的字符串放在“终”字符串的前列,直至拼接完所有的字符串; 但是没想到一直 WA,上网查了一下,发现了这个大大的问题://c和ca,是cac而不是cca;//ae和aec, 是aeaec 而不是 aecae2.分析一下:string1 = "cccca";string2 = "ccccb"; 这两个字符串的比较需要比较到最后一个字符,原创 2012-08-09 00:33:12 · 472 阅读 · 0 评论 -
sicily--1134 积木分发
1.是一道水题2.利用优先级队列模拟即可3.“比较”的原则是:需求积木数少的优先给予;若需求一致,则拥有积木数多的优先给予#include#includeusing namespace std;struct Node{ int has;//该小朋友拥有的积木数 int need;//需要的积木数};struct cmp{ bool operator()(cons原创 2012-08-08 23:21:27 · 1165 阅读 · 0 评论 -
sicily--1097. LED Modding
1.还是比较水,用优先级队列模拟即可2.个人觉得应该注意的就是当“USB #include#include#include#include#includeusing namespace std;struct Node{ string name; int interval;};struct cmp{ bool operator()(const Node &n1,原创 2012-08-08 22:20:24 · 672 阅读 · 0 评论 -
sicily--1046. Plane Spotting
优先级队列参考:http://blog.sina.com.cn/s/blog_5e518b010100kbts.html1.一直在“比较”上错了,没有注意到/* A period P1 is better than another period P2 if: **the number of planes per quarter in P1 is higher than in原创 2012-08-08 19:45:46 · 752 阅读 · 0 评论 -
sicily--1003. Hit or Miss
很考理解题意;过程:a)第一个玩家拥有全部的52张牌,而其他的玩家暂时没有牌在手上b)每一个玩家各自报数,若报的数与牌堆顶上的牌数字相同即为matchc)每个玩家各自报数,各自匹配; 也即是说,A报一个数并记住,比较牌堆顶上的牌,接着是B报自己的数,比较自己牌堆顶上的牌,以此下去d)报数均从1开始,若没有牌在手上则不报数,待至有牌在手上时将上次所报之数加一作为此次的报数e)若某原创 2012-07-28 02:10:58 · 1838 阅读 · 0 评论 -
sicily--1934. 移动小球
转自:http://adonis0147.blog.163.com/blog/static/162553854201061410316118/一开始用链表操作,但是操作太多,且没有办法直接找到相应的下标,所以上网看看大牛的解法,这个解法自己觉得很不错了,所以贴出来#include #include using namespace std;int prev[501000];in原创 2012-07-28 17:26:26 · 1562 阅读 · 0 评论 -
sicily--1133. SPAM
题目不难,但是真的调试到我心都碎了while(s[i] == 45 || s[i] == 95 || (s[i] >= 48 && s[i] = 97 && s[i] = 65 && s[i] 用以判断是否符合邮箱地址的规范,包含了“0 - 9 ”、“A - Z‘、”a - z“、”_“、”-“、”.“的检查我觉得这道题关键的是有两个地方a)当前字符是"."的操作,判断head 或者是 tai原创 2012-07-29 15:05:05 · 993 阅读 · 0 评论 -
sicily--1159. Sum
1.练练重载函数2.记得之前也有一道类似的题目,同样也是在“最高进位”的问题上忘记考虑了#include#includeusing namespace std;class BigNum{public: BigNum() { this->num = "0"; } BigNum(string n) { this->num = n; } string getNu原创 2012-08-23 22:28:10 · 609 阅读 · 0 评论 -
sicily--1040. Polly Nomials
1.sicily 上最难的就是读题啊!!!一直读不懂啊,一开始以为是 “指数 系数 指数 系数”,直到后来才猜到是“最高指数 系数 系数”2.要算最少的花费,则需要用到“秦九韶算法”只要系数不为0,则需要一个加法,一个乘法,还要计算系数的位数;如果系数为0,则只需要一个乘法3.最坑人的是,那个鸟居然会分辨 是不是0, 就是最后输入的常数, 如果常数为0,则不去做加法,直接忽原创 2012-08-16 17:46:54 · 889 阅读 · 0 评论 -
sicily--1201. 01000001
1.在最后的输出时,要判断结果是否为0,也就是 ans 是否全为0或则是为空2./*if(ans.empty()) cout << 0; else { for(int i = ans.size() - 1; i >= 0; i--) { if(flag && ans[i] == '0') ; else { flag =原创 2012-08-16 18:33:21 · 755 阅读 · 0 评论 -
sicily--1775. Simple Sort
1.由于最近一直想学号优先级队列,所以还是用了优先级队列2.由一个优先级对列 seq 来储存最后输入的“优先级”信息,并按“优先级”由小到大排好序; 再创建一个优先级队列Q 按照 seq 排好的顺序的“下标”去“排序”元素3.重点就是两个优先级队列的比较函数 cmp #include#include#include#define M 10 //最多的列数using namesp原创 2012-08-15 23:13:13 · 1650 阅读 · 0 评论 -
sicily--1930. 排序
1.就是一个选择排序#include using namespace std;int main(){ int test_num; cin >> test_num; for(int i = 0; i < test_num; ++i) { int a[100] = {0}; int n; cin >> n;原创 2012-08-15 20:24:45 · 951 阅读 · 0 评论 -
sicily--1299. Academy Awards
水题map 用于储存字符串出现的次数一开始直接遍历map 找出最大值输出,结果就WA 了,原来题目要求说 若有相同的次数要输出最早在 list 中出现的那个, 而 map 是会自动排序的,所以还需要再加入一个vector来存“顺序”, 最后通过遍历 vector 找出最大值来输出#include#include#include#includeusing namespace std;原创 2012-07-30 23:57:38 · 768 阅读 · 0 评论 -
sicily--1035. DNA matching
水题用一个map 容器储存系统所给的“核苷酸链”,以及其出现的次数; 遍历map 容器, 要配对成功,则必须在系统给出的“核苷酸链”即我们的map 中有存在, 而可以组成最多的链数就要看这互补的两条链出现的次数最少的那一方因为在遍历map时重复计算了同一条“双螺旋核苷酸链”, 顾最后结果需要除以2#include#include#includeusing namespace std;原创 2012-07-30 23:15:05 · 837 阅读 · 0 评论 -
sicily--1641. Binary Searchable
1.比较简单2.分析:因为题目说的是无论选择了哪个作为“pivot”, 都要能够“找到”假设要找的是 X, 若 在X的左侧有一个大于 X 的Y 存在, 那么当选择 Y作为“pivot”时,Y的右边包括了X都要被舍弃了,这样就没办法找到X了,所以,为了能找到X,必须要求X比其左侧的都要大;同理,可以知道,必须要求X比其右侧的都要小#include#includeusing names原创 2012-08-14 18:30:37 · 1790 阅读 · 0 评论 -
sicily--1482. 奖学金
1.用优先级队列模拟即可#include#includeusing namespace std;struct Node{ int snum;//学号 int chinese; int math; int english; int sum;//总分};struct cmp{ bool operator()(Node n1, Node n2) { if(n1.s原创 2012-08-14 16:39:58 · 1323 阅读 · 0 评论 -
sicily--1351. Multi-key Sorting
1.一开始真的觉得很难很难,因为刚刚做了一个 KMP 的题目,个人觉得这个题目是不是在考察同样的东西,就是说如果两个连续的“区间”(1、2、3***个数字为一个区间)如果相同则可以舍去一个区间,这样我就一直在想可不可以往KMP上面去靠,但是怎么都不行2.后来一想,题目所说的是 "stable" ,那么无论即使前面的排序如何,只要后面的有另一个列的排序的话,那么前面的列顺序可以说就被破坏了,这么原创 2012-08-14 15:51:28 · 2902 阅读 · 0 评论 -
sicily--1438 Shopaholic
1.水题2.为了要让“折扣”最大化,肯定是送的价格越大越好; 无论怎么搭配,价格最高的两个货品是没有办法赠送的,所以我们可以设计让接下来最贵的(排总第三)货品当作赠送的,类似的,排除这三个货品之后,剩余的也是买“前两个”送“第三个”递归运算,这样我们就可以得到最大的“折扣”了#include#includeusing namespace std;int main(){ int原创 2012-08-14 16:22:36 · 1078 阅读 · 0 评论 -
sicily--1129. ISBN
水题,也不知道为什么时间是设置10s#include#includeusing namespace std;int main(){ string s; while(cin >> s) { int weight = 10; int sum = 0; for(int i = 0; i < 11; i++) { if(s[i] >= 48 && s[i] <=原创 2012-07-28 21:10:58 · 796 阅读 · 0 评论 -
sicily--1509. Rails
用棧模拟不难// Problem#: 1509// Submission#: 878974// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License// URI: http://creativecommons.org/lice原创 2012-07-28 17:50:40 · 688 阅读 · 0 评论 -
sicily--1443. Printer Queue
用优先级队列自动排序找出最高的优先级任务只有打印出任务的时候才累加计数器若当前打印的是“自己的”,则输出计数器#include#include#includeusing namespace std;struct node{ int priority; bool mark;};int main(){ int caseNum; cin >> caseNum; wh原创 2012-07-28 11:27:04 · 1108 阅读 · 0 评论 -
sicily--1486. 统计数字
绝对不难但又绝对坑人用cin、cout 会超时每个测试数据的输出之间还要空一行,最后一个测试数据不能有空行用map 可以解决这个题目的排序问题, map内部使用的红黑树,会自动排序//map 会自动排序#include#include#includeusing namespace std;int main(){ bool flag = true; int num; wh原创 2012-07-18 13:32:33 · 1709 阅读 · 0 评论 -
sicily--1765. 笨小猴
是水题,但是也坑了我“aaa”出现次数最多的是'a' 的3次, 出现最少的也是'a'的3次, 这是关键#include#include#includeusing namespace std;bool IsPrime(int test){ if(test <= 1)//0,1不是素数 return false; for(int i = 2; i <= sqrt((doub原创 2012-07-18 10:39:43 · 1019 阅读 · 0 评论 -
sicily--1818. 成绩转换
试用STL 的map 容器在存储成绩时将名字与“成绩”(转换为ABCDE后)的匹配,查询时直接找到输出// Problem#: 1818// Submission#: 1005080// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported原创 2012-07-18 10:13:42 · 762 阅读 · 0 评论 -
sicily--1036. Crypto Columns
输入keyword, 计算出矩阵的“列数”;输入plaintext,计算出整个字符串的长度,继而计算出矩阵的行数; 一直错在这里,不能简单的plaintext.size() / keyword.size()找出keyword中最小的且还没储存的列数,储存字符;输出结果#include#include#include#includeusing namespace st原创 2012-06-06 00:50:50 · 491 阅读 · 0 评论 -
sicily--1144 陶陶摘苹果
看到不要喷(现在在回顾知识)!!!这是号称sicily第二水题#includeusing namespace std;int main(){ int appHeight[10]; for(int i = 0; i < 10; i++) { cin >> appHeight[i]; } int height; cin >> height; int原创 2012-05-28 16:03:15 · 843 阅读 · 0 评论 -
sicily--1051. Biker's Trip Odomete
继续是水题,只要你会小学知识,会计算周长、距离、速度就可以了;#include#includeusing namespace std;#define PI 3.1415927//圆周率int main(){ //printf("%f",PI);//%f默认是输出6位小数 float diameter; int revolutions; float t原创 2012-06-02 11:27:39 · 1059 阅读 · 0 评论 -
sicily--1798. Alice and Bob
一开始真的有点被吓住了!但后来想想只要走满了棋盘就可以判断出来了,问题就变简单了;因为是Alice 先走,如果棋盘格子数是偶数,则最后一步是Alice 走,故Alice 赢; 否则是Bob赢#includeusing namespace std;int main(){ while(1) { int size; cin >> size; if(siz原创 2012-06-02 12:10:30 · 396 阅读 · 0 评论 -
sicily--1002(深度优先搜索)
坑爹的是一开始以为题目给的“度”d, 只是要求每d个数之和不为素数即可;结果被坑了,原来是要求从2、3、....、d都要成立;这样,每加入一个数,就要判断一次;// Problem#: 1002// Submission#: 1378268// The source code is licensed under Creative Commons Attribution-NonComme原创 2012-05-25 16:22:01 · 766 阅读 · 0 评论