Sicily
文章平均质量分 70
豪运SYSU
这个作者很懒,什么都没留下…
展开
-
1153.马周游问题
/*1153.马周游问题 题目大意:从给定的一个位置出发,求出能够不重复地走遍棋盘中每个 格子的一条路线。 解题思路:1、对每个节点都有8个方向可走。 2、统计可走方向的下一步可走方向的数目,按从小到大排序 则当前的节点优先选择具有较少下一步可走方向数据的节点 访问原创 2012-11-29 22:16:42 · 775 阅读 · 0 评论 -
Sicily.1012. Stacking Cylinders
/*1012. Stacking Cylinders思路:求相切球的球心,依次求得每层的球心。*/#include #include #include #include #include using namespace std;struct Center{ double x; double y; };bool cmp(Center a, Cen原创 2012-12-26 11:51:07 · 501 阅读 · 0 评论 -
Sicily.1014. Specialized Four-Dig
/*Sicily.1014. Specialized Four-Dig*/#include #include using namespace std;int getDecimalSum(int n){ int sum = 0; while(n != 0){ sum += n%10; n /= 10; } return s原创 2012-12-26 11:52:39 · 325 阅读 · 0 评论 -
Sicily.1007. To and Fro
/*1007. To and Fro题目大意:给出一段经过编码后的字符串,通过规律将其反向还原出来。其存储规则如下如There's no place like home on a snowy night,被编码成一个矩阵,忽略空格,大写变小写。不够的用任意字符补上。 如规定为 5列矩阵,则如下 t o i o yn n k p he l e a ig s h a re c o n原创 2012-12-26 11:48:45 · 331 阅读 · 0 评论 -
Sicily.1009. Mersenne Composite N
// 1009. Mersenne Composite N/* 梅森素数: 2^p -1 (p是素数,2^p -1也是素数) 题目大意:给出一个p<=63; 求出该范围内的梅森合数(2^k-1) k是素数但 2^k-1 是合数的素数因子如 23 * 89 = 2047 = ( 2 ^ 11 ) - 1 方法:先把0-2^p-1范围内的所有素数,放进一个数组prime内。方便之后的遍历原创 2012-12-26 11:49:28 · 604 阅读 · 1 评论 -
Sicily.1001. Alphacode
//1001. Alphacode//// //题目大意://将一串字符串(只有A-Z)转化成数字0-9,转换的规则:A->1,B->2 ......Z->26。//那么从这段数字再转换回去字符串就会发生一些歧义,题目要求求出一段数字转换成字符串的最多数量。// //解题思路://如果说用dp[i]表示当前的前i个数字能够转化的字符串数量,当str[i+1]加进来时,如果说跟前面的原创 2012-12-26 11:45:44 · 297 阅读 · 0 评论 -
Sicily.1004. I Conduit!
/*1004. I Conduit! 题目大意:给出一堆线段,求出需要画出最少的直线就可覆盖全部线段 即有一部分重叠的线段用一条直线代表即可。 思路:先对每条线段求出其斜率k和截距b(如果没有截距,则用无限大代表) 然后记录每条线段的起始位置(如果无斜率则为y坐标的较小的那个,如果 有斜率,则为原创 2012-12-26 11:46:54 · 979 阅读 · 0 评论 -
Sicily.1020. Big Integer
/*1020. Big Integer求大整数的模 */#include #include #include using namespace std;//从第一位开始对aa[i]求模,然后往后移一位,给原来的模*10后加上该位,再对aa[i]求模,依次类推 int main(){ int T; int aa[100]; cin >> T; fo原创 2012-12-26 11:56:58 · 304 阅读 · 0 评论 -
Sicily 1024. Magic Island (DFS 深度优先搜索)
/*sicily 1024. Magic Island (DFS 深度优先搜索) 题目大意:给出N个城市(编号为1-N-1),城市之间共有N-1条道路连通两个城市。 指定一个K城市出发,求出可以到达的城市的最大距离 解题思路:以道路连线Line为基础单位,建立起始节点的容器vector数组line。 即每个line元素为一个vector,每个vect原创 2012-12-27 15:52:32 · 411 阅读 · 0 评论 -
Sicily.1035. DNA matching(字符串匹配)
/*1035. DNA matching(字符串匹配) 大意:给出一系列的DNA单链,找出能够匹配成完整的DNA双链的最多对数 注意:每条单链只能使用一次 思路:依次往下扫描,找到匹配的两条都置为"0" */#include #include #include using namespace std;//从上往下扫描,对于匹配的串都设为“0”,避免重复扫描原创 2012-12-27 16:14:38 · 642 阅读 · 0 评论 -
Sicily.1036. Crypto Columns
/*1036. Crypto Columns 大意:给出一个key,按照key中字母大小对应的下标进行放置一个串, 每个下标对应一列。然后从左上到右下地还原输出整个字符串 */#include#include#includeusing namespace std;struct node{ int index; char c;};b原创 2012-12-27 16:21:22 · 541 阅读 · 0 评论 -
Sicily.1041. Pushing Boxes(模拟题)
/*1041. Pushing Boxes 题目大意:给出一堆盒子,四面墙(各自可以随意移动,左边墙往右移,右边墙往左移...) 给出一系列移动动作,求出各个盒子的最终位置 思路:分为四个操作:往左,往右,往下,往上。 例如:往左;这里先拿到可以往左移动的最多位移,然后把盒子按照x坐标,y坐标原创 2012-12-27 16:23:03 · 599 阅读 · 0 评论 -
Sicily.1050. Numbers & Letters(DFS)
/*1050. Numbers & Letters(DFS) 大意:给出五个数字,通过他们其中的几个经过加减乘除操作。求出能够 达到的小于等于目标数的最大数 例如给出3 26 78 12 17 目标30 可以通过(78*3)-(12*17) = 30 思路:通过取两两数字进行操作。然后拿得到的结果再跟剩余的操作 例如 3 26 78 12原创 2012-12-27 16:27:27 · 328 阅读 · 0 评论 -
Sicily.1051. Biker's Trip Odomete
#include #include //用C输出,格式化输出 int main(){ double dia, time; int rev; int turn =0; double p = 3.1415927; rev = -1; while( 1) { scanf("%lf%d%lf", &dia,&rev,&t原创 2012-12-27 16:28:10 · 247 阅读 · 0 评论 -
Sicily.1093. Air Express
#include #include #include #includeusing namespace std;int w1,r1,w2,r2,w3,r3,r4; int getMinPrice(int w, int &delta){ if(w > w3){ delta = 0; return w * r4; } if(w > w2 &原创 2012-12-27 16:32:43 · 309 阅读 · 0 评论 -
Sicily.1119. Factstone Benchmark(代数转换成两边取log)
/*1119. Factstone Benchmark(代数转换成两边取log)*/#include #include #include int main() { int year; int p; int n; double sum; while(scanf("%d", &year) && year) {原创 2012-12-27 16:38:00 · 983 阅读 · 1 评论 -
Sicily.1028. Hanoi Tower Sequence
/*1028. Hanoi Tower Sequence思路:1.从一根柱子到另一根柱子,移动1个盘子需要f(1)=1步,移动k(k>1)个盘子需要 f(k)=f(k-1)+1+f(k-1)步。则有f(k)+1=2( f(k-1) + 1) = 2^2*(f(k-2)+1) ... f(k) +1 = 2 ^ k * [f(k-k) +1] = 2^k 即得到f(k)=2^k-1原创 2012-12-27 16:07:33 · 404 阅读 · 0 评论 -
Sicily.1029. Rabbit(递推)
/*1029. Rabbit(递推)题目大意:起始有一对成年兔子,每个月可生一对兔子,而小兔子m个月 成长为成年兔子。求d个月后一共有多少对兔子(包括成年和未成年) 当前第i个月的成年兔子数 当i>m时,totalArray[i] = totalArray[i-1] + totalArray[i-m] i<=原创 2012-12-27 16:08:40 · 294 阅读 · 0 评论 -
Sicily.1059. Exocenter of a Trian(求垂心,向量旋转)
/* 1059. Exocenter of a Trian 题目大意: 给出三角形ABC三点坐标,如图所示,作正方形ABDE,正方形BCHJ, 正方形CAGF,L为DG中点,M为EJ中点,N为FH中点,直线LA,MB,NC交于同一点O,求点O的坐标。 其实O就是其垂心 思路:1、先通过向量旋转分别得到D、G、F、H,由于求两直线交点只需两条直线即可,原创 2012-12-27 16:30:58 · 440 阅读 · 0 评论 -
Sicily.1099. Packing Passengers(优先选择性价比高的飞机)
/* 1099. Packing Passengers(优先选择性价比高的飞机) 大意:给出两种飞机的价值和最大载客量以及需要载客的总数 求出A B飞机各需要多少架。 思路:优先取性价比高的飞机。如B性价比高的话就先从能取得B 最多的数量开始往下遍历找到合适的即停止 */#include#includeusing namespace st原创 2012-12-27 16:37:00 · 600 阅读 · 0 评论 -
Sicily.1021. Couples
/*1021. Couples 初始化存储:两夫妻的位置和下标对应,例如夫妻(1,4),则,他们存储时采用a[1] = 4, a[4] =1; 扫描a, 然后a[i]是否等于栈顶的值,即判断他们夫妻得,如果等于,则pop,否则push(i),即 存入a[i]的夫妻值 */#include #include #include using namespace std;int原创 2012-12-27 15:50:07 · 333 阅读 · 0 评论 -
Sicily.1046. Plane Spotting(排序)
/*1046. Plane Spotting 大意:给出一串时间段内飞过的飞机数量。按照规定顺序排序得出 结果 */#include #include #include using namespace std;//用系统函数sort,定义比较函数compare,按照指定顺序排序 struct planPeriod{ int start; int原创 2012-12-27 16:26:08 · 494 阅读 · 0 评论 -
Sicily.1052. Candy Sharing Game
/*1052. Candy Sharing Game 大意:同学坐成一圈,逆时针给自己手中一半糖果(同时!!!) 一轮结束后,奇数个糖果的同学,老师给1个补充。 求需要多少轮后,所有同学手中糖果数一样多,并且输出每人的糖果数 */#include#includeusing namespace std;int N;int candy[10000]原创 2012-12-27 16:30:03 · 383 阅读 · 0 评论 -
Sicily.1063. Who's the Boss(排序,确定上下属关系)
/*1063. Who's the Boss 题目大意:给出员工ID,收入,身高。 当a收入大于b且身高大于b, 且a的收入高于b的量是最小时,a为b的直接上司 b的下属也是a的下属。 对查询某个ID,输出其直属上司以及该ID的下属数量 方法:1.先把员工按照收入从大到小降序排列。 2.从底部开始往上遍原创 2012-12-27 16:31:39 · 398 阅读 · 0 评论 -
Sicily.1125. Arnie versus the IRS(统计时间段内各个数字出现次数,不算周六日)
/*1125. Arnie versus the IRS(统计时间段内各个数字出现次数,不算周六日) 大意:给出一个时间段,求出时间段内出周六日外的全部日期的所有数字出现次数 思路:先确定日期是周几。然后再分割日期,用map来统计各个数字出现次数 */#include #include #include #include #include #include using n原创 2012-12-27 16:40:10 · 367 阅读 · 0 评论 -
1139. 电路稳定性(转换成一般表达式,用后缀表达式计算)
/*1139. 电路稳定性 大意:给出一串电路。求出错概率 思路:把如 (A,B)((C)(D),E)转成 (A+B) * ((C)*(D) + E) 一般表达式 然后转换成后缀表达式 如 (A+B) * ((C)*(D) + E) 转成 pre = AB+CD*E+* 遇到+就计算 1-(1-P(A)) * (1-P(B)) */#原创 2013-01-02 19:53:32 · 390 阅读 · 0 评论 -
1150. 简单魔板
/*1150. 简单魔板初始状态1 2 3 4 8 7 6 5给定一个状态,在指定步骤内通过A、B、C操作到达目标态定义一个状态数组,头指针fp指向当前的父节点操作,rp指向子节点操作。判断是否加入子节点序列时:判重! 扫描整个数组,若出现重复状态则跳过,对每个父节点都有三个操作,符合条件的进入队列,rp依次后移,fp完成三个操作后也fp++ */#include #inc原创 2013-01-02 19:54:12 · 237 阅读 · 0 评论 -
1176. Two Ends(动态规划,两端取数 )
/* 1176 Two ends题目大意:给出一串偶数个的数字。两个玩家A B分别取从两端取数。 A可以任意取,B采取贪心方法取大的一端。 取完数后,个人的数求和。求出A赢B的最多点数。 方法:采用动态规划法。 建立一个倒堆dp二维数组,dp[i][j]记录的A是从第 i 个取到第j个数后的最大和。原创 2013-01-02 19:58:07 · 2011 阅读 · 0 评论 -
1198. Substring
#include #include #include #include using namespace std;int compare(string a, string b){ return a+b < b+a; }int main(){ int T; cin >> T; for(int i=1; i<=T; i++)原创 2013-01-02 19:59:56 · 199 阅读 · 0 评论 -
1200.Stick(统计筷子配对,用map来做)
/*1200.Stick(统计筷子配对,用map来做)*/#include #include #include using namespace std;int main(){ map m; int n; while(cin >> n && n != 0){ m.clear(); for(int i=0; i<n ; i++){原创 2013-01-02 20:00:50 · 373 阅读 · 0 评论 -
1203. The Cubic End(高精度乘法)
/*1203. The Cubic End(高精度乘法)*/#include#include#include#includeusing namespace std;int main(){ int testcase; scanf("%d",&testcase); while(testcase --) { char n[15];原创 2013-01-02 20:01:57 · 679 阅读 · 0 评论 -
1214. 信号分析(回文)
/*1214. 信号分析(回文) 大意:给出一串数字1 1 3 1 5 3 7 1…… 规律为 a2n = an a4n+1 = 2*a2n+1 - an a4n+3 = 3*a2n+1 - 2*an (n>=1) 然后叫求出比给定数字L小的所有an = n 的个数。 思路:找规律: 1(1) = 1; 2(原创 2013-01-02 20:04:45 · 596 阅读 · 0 评论 -
1153. 马的周游问题(DFS,优先选最少可走的点)
/*1152.马周游问题 题目大意:从给定的一个位置出发,求出能够不重复地走遍棋盘中每个 格子的一条路线。 解题思路:1、对每个节点都有8个方向可走。 2、统计可走方向的下一步可走方向的数目,按从小到大排序 则当前的节点优先选择具有较少下一步可走方向数据的节点 访问原创 2013-01-02 19:55:54 · 349 阅读 · 0 评论 -
1155. Can I Post the letter(有向图遍历判断两点是否可到达)
/* 1155. Can I Post the letter(有向图遍历判断两点是否可到达) 题意:寻找可否到达另一个点 思路:每个节点都持有下一个点的下标和持有的下标数destNum 开始时从0开始dfs,发现超时了。从后面n-1往上找。 */#include#include#include#includeusing namespace std原创 2013-01-02 19:56:20 · 833 阅读 · 0 评论 -
1156.Binary Tree(先求出根,在进行树遍历)
/*1156. Binary tree题目大意:给出几个字符串,包含有节点的id,节点内容、左儿子id,右儿子id如4 C 1 31 A 0 03 B 0 0 求出此构成的二叉树后的先序遍历结果解题思路:简历一个map数组,key是节点的id,value是节点在数组中 下标。先遍历整个tree[n]的节点,找出根节点的下标。找出那个没有 出原创 2013-01-02 19:56:50 · 250 阅读 · 0 评论 -
1158. Pick numbers(DFS)
/*1158. Pick numbers(DFS)题目大意;给出一个n*n矩阵,每个格子记录着一个数字。要求从第一行第一列格子开始往右下方移动,每次只能向下或向右移动一格。到达右下方底部时停止,路径上经过的数字求和。求出众多可能路径中的比0大且最小的和。方法:通过递归枚举所有路径。在到达底部时,判断sum是否 大于0,并且更新最小和minSum. 若无法取得正数和,原创 2013-01-02 19:57:16 · 359 阅读 · 0 评论 -
1201. 01000001(纯粹加法操作 )
/*1201. 01000001 大意:简单题 ,纯粹加法操作 */#include #include #include using namespace std;string add(string a, string b){ while(a.length() < b.length()) a = '0' + a; while(b.length() < a.lengt原创 2013-01-02 20:01:21 · 344 阅读 · 0 评论 -
1231. The Embarrassed Cryptography(求两个素数积)
/*1231. The Embarrassed Cryptography(求两个素数积)*/#include#include#include#include#includeusing namespace std;string Key; long long L;const long long MAX = 1000000;long long prime[100000];bool原创 2013-01-02 20:05:19 · 514 阅读 · 0 评论 -
1134. 积木分发(贪心算法,先满足需求最小的)
/*1134. 积木分发(贪心) 题目大意:有n个小朋友,每个人持有a个积木,需要b个积木才能完成 主持人有s个积木,问如何才能保证全部小朋友才能完成积木 任务。弄完的小朋友必须归还积木,包括手中持有的积木。 思路:采用贪心算法,先分给需要最少积木的小朋友。依次类推 若到最后,无法完成输入No。 */#include原创 2013-01-02 19:53:04 · 1332 阅读 · 0 评论 -
1151. 魔板
/*1151. 魔板初始状态1 2 3 4 8 7 6 5给定一个状态,在指定步骤内通过A、B、C操作到达目标态定义一个状态数组,头指针fp指向当前的父节点操作,rp指向子节点操作。判断是否加入子节点序列时:判重! 扫描整个数组,若出现重复状态则跳过,对每个父节点都有三个操作,符合条件的进入队列,rp依次后移,fp完成三个操作后也fp++ 利用康托展开记录每种状态出现的位置,原创 2013-01-02 19:54:43 · 194 阅读 · 0 评论