早起一水
This is bill
这个作者很懒,什么都没留下…
展开
-
长嘘一口气。。。
#include "stdio.h"#include "string.h"const int Len=102;typedef struct{ char name[Len]; char value[Len]; int flag;}Keys;Keys oldstr[Len],newstr[Len];int deal(Keys *str){ int count=0;原创 2012-10-16 09:09:55 · 1852 阅读 · 3 评论 -
HDU 1251
//这题不仅仅只是字符串处理一下那么简单,字典树。。。不然狂超时。。。。。。。。。。。//字典树的代码,基础字典树#include "stdio.h" #include "string.h" #include "stdlib.h" struct dictree { struct dictree *child[26]; int n; };原创 2012-10-18 08:39:01 · 1038 阅读 · 0 评论 -
poj 1656 Counting Black
这个本来应该是不水的,估计题意原来是让用线段树或者树状数组做的,但是,题目里的数据规模太小了,直接模拟就过了。。也就成超级水题了。#include #include int map[103][103]; //在外部定义自动初始化为0int main(){ int n; scanf("%d",&n); char input[10]; //黑、白、测试 int x,y原创 2013-10-04 10:20:21 · 1260 阅读 · 0 评论 -
poj 2013 Symmetric Order
今天早上水过的第3题,简单的字符串处理,其实我只用了输出处理,连排序都没用。。。#include int main(){ int n; int i; char string[20][30]; int count=0; while(scanf("%d",&n)) { if(n==0) break; for(i=1;i<=n;i++) {原创 2013-10-04 11:12:54 · 1150 阅读 · 0 评论 -
poj 1002 487-3279
题目就不解释了,自己的代码稀烂,毫无速度可言,其实我早就知道会爆时间,不过还是硬着头皮写完了用字符串冒泡的烂程序,因为很久没练习acm,早已经没有了A题的感觉,找找感觉也好。排序效率较高较常用的还是快排,反正有现成的函数调用,后来看了看别人的结题报告,差不多都是把字符串转成数组。。。贴代码我的code#include #include #include char resul原创 2013-09-29 02:19:14 · 1122 阅读 · 0 评论 -
poj 3062 Celebrity jeopardy
#include int main(){ char a[100]; while(gets(a)) //用scanf遇到空格就结束了 { printf("%s\n",a); } return 0;}刚刚回到寝室,百废待兴,《算法导论》还未入手,已经很久没有写acm了,准备水一星期题先,导论一到就正式开工。3062是一道超水题,输入字符串--输出字符串--ove原创 2013-10-04 09:25:58 · 1262 阅读 · 0 评论 -
poj 2840 Big Clock
本题没有什么难点,但是用我这种 mod 的方法有一个陷阱,这就是12:00的时候会响0次!事实上会响24次,于是就单独处理12点整。开始提交错了2次,总的来说很顺利,没有浪费太多的时间,就是要注意细节,不然比赛的时候就白白罚时了。。。发现不了问题,数据量又不大的时候,打表比较有效#include int main(){ //freopen("in.txt","r",std原创 2013-10-05 15:21:58 · 1281 阅读 · 0 评论 -
poj 2159 Ancient Cipher
这题主要应该就是理解题意的问题,我的确是把题目理解错了,WA了三次,每次都以为一定是正确的,后来看了别人的解释才知道是题目理解错了(竟然还看到了别人的结题报告也有错的。。。)开始错误的想法:#include #include #include #include using namespace std;int main(){ char input[102],so原创 2013-10-05 16:44:07 · 1331 阅读 · 0 评论 -
poj 2141 Message Decowding
一次A题的感觉真的棒极了,这题没什么特别的地方,就是一个置换解密,注意大小写就可以了#include #include int main(){ char key[27]; scanf("%s",key); //printf("key = %s\n\n",key); //test print getchar(); char message[100];原创 2013-10-06 10:18:06 · 1348 阅读 · 0 评论 -
poj 3117 World Cup
题目大意很简单:一场足球赛中,若果双方平手的话,那么双方各得一分,否则,赢的一方得3分,输的一方不得分。输入比赛的数量t和各队的得分,求出结果为平局的比赛的数量。其实这是一道很简单的数学题,就是解二元一次方程组。先求出各队得分的总和sum,设不是平局的数量为X,平局的数量为Y,则可得方程组:3X+2Y=sum;X+Y=t(t为比赛的总数量)解之得:Y=3t-sum我居然开始还想错了,用 pr原创 2013-10-06 10:54:24 · 1156 阅读 · 0 评论 -
poj 1316 Self Numbers
用abcd的四重循环必然是最简单的最直接的想法,而且9^4次循环并不大,完全可以接受here is my code:#include bool mark[10002]={false};int main(){ int a,b,c,d,i; for(a=0;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++)原创 2013-10-07 16:43:41 · 1166 阅读 · 0 评论 -
poj 2707 Copier Reduction
这题同样没什么好说的,注意几种特殊情况就好!另外就是关于如何控制输出“%”,这属于格式控制的范畴,这种东西不用刻意去记,不过应该积累。每天A题(特别是一A就过的感觉)非常爽!贴代码#include int main(){ int a,b,c,d; //a*b mm原图,c*d mm纸 int temp; double result; while(scanf("原创 2013-10-09 15:33:45 · 1310 阅读 · 0 评论 -
poj 2262 Goldbach's Conjecture 【素数筛】
这题必然的筛选法,出现了2个问题:1.开始开了一个 result 数组(全局变量),想把素数挨个存进来,虽然还计数估算了的,一直的runtime error , 后来发现是多此一举,去掉之后就变成wrong answer,看来可以编译了。这么说来,一百万对于两个大数组还是有点吃不消的 2.筛的时候一定要筛完整,for(j=2*i;jprime[j]=1;这里开始用的jMAXN/i),明显原创 2013-10-06 16:04:51 · 1187 阅读 · 0 评论 -
poj 3094 Quicksum
除了这道题真的很水,我好像也不能说别的什么了吧。。。哈哈哈,注意一下控制一下循环的细节就好,一个连乘的累加#include #include int main(){ char str[300]; int sum,pos; while(gets(str)) { if(str[0]=='#') break; //计算quicksum值 pos原创 2013-10-09 15:56:19 · 1140 阅读 · 0 评论 -
poj 2739 Sum of Consecutive Prime Numbers【素数筛】
我觉得这题的数据应该有些刁钻,一共至少提交了五次,一直是WA,无语了。。。。。。用一个result数组存素数硬是不对。。。。。。后来就算了,改用直接判断(法二),继续WA,后来发现是MAXN至少应为10002(被数据坑了),终于A掉了。。。。。。后来继续改法一多次,任然WA,现在还不清楚原因法二:(AC的代码)#include #define MAXN 10002原创 2013-10-09 17:08:48 · 1205 阅读 · 0 评论 -
poj 2583 Series Determination
昨天没有刷题(心里有愧疚感。。。但是看了《算导》看了不少)很水的题目,就是解一个三元一次方程组。在草稿纸上面计算好,直接写答案的。A = [f(2)-2*f(1)+f(0)]/2B = [4*f(1)-f(2)-3*f(0)]/2C = f(0)于是有:#include int main(){ int f0,f1,f2; //f(3)=f原创 2013-10-11 10:33:39 · 1552 阅读 · 0 评论 -
poj 3299 Humidex
其实就是纯粹的数学公式推导,然后就是格式的控制(本人认为题目的难点在此,虽然题目不难,O(∩_∩)O哈哈~),再就是精度问题对于输入的格式控制,因为有字符输入,建议用s%弄,不然总是考虑空格也不方便。。。开始用单个字符 (“%c”,ch) 一直输出不对,后来单步调试才发现是输了一个空格进去,进入了不同的循环。一次AC的代码:#include #include #def原创 2013-10-12 11:13:56 · 1193 阅读 · 0 评论 -
poj 3006 Dirichlet's Theorem on Arithmetic Progressions 【素数筛】
说实话,题目很长,但是和真正要思考的东西关系不大。。。就用了之前的素数筛的模板,控制了一下输入、输出格式就过了,很水的题,没什么技术含量,我好像也只会用暴搜。。。#include #define MAXN 1000002int prime[MAXN]; //用筛法求素数,1代表不是素数(被筛掉)int main(){ //先打出素数表 prime[0]=pr原创 2013-10-11 16:48:08 · 1112 阅读 · 0 评论 -
poj 3167 Cow Bowling【dp】
这是一道最最基础的dp题目,还记得当时看刘汝佳写的《入门经典》时,就是拿的这个做例子,不过牛人当然是一笔带过这么简单的例子。状态转移方程为:dp[i][j]+=max(dp[i+1][j],dp[i+1][j+1])思路很清晰AC的代码:#includeint dp[352][352];inline int max(int a,int b){return a>b原创 2013-10-12 15:48:19 · 1141 阅读 · 0 评论 -
poj 1163 The Triangle【dp】
和POJ3176几乎一模一样(只有row的范围不同,其实可以不用改的,我还是改了一下),都是最简单的那个 dp 动归问题AC的代码:#includeint dp[102][102];inline int max(int a,int b){return a>b?a:b;}int main(){ int n,i,j; scan原创 2013-10-12 15:59:39 · 1168 阅读 · 0 评论 -
poj 1003 Hangover
我只能说我又刷了一道水题。。。基本题目理解了,就是注意一下强制转换就可以了。题目大意:已知c=1/2+1/3+1/4+....1/(n+1).现给出一个值m,求n的值使得c刚好超过m。AC的代码:#include int main(){ double c; int i; while(scanf("%lf",&c)) { if(c==0) r原创 2013-10-12 17:09:28 · 1202 阅读 · 0 评论 -
poj 1005 I Think I Need a Houseboat
有一个水题,题目读懂就可以了,千万注意是“半圆”!!!题目大意:已知一个圆心为(0,0),半径随时间增长的位于X轴上方的半圆,初始面积为0,每年的面积增加50,给出一个坐标,求该坐标在第几年被该半圆覆盖。代码:#include int main(){ int n; scanf("%d",&n); int i; double x,y; i原创 2013-10-13 10:25:19 · 997 阅读 · 0 评论 -
poj 1046 Color Me Less
这道题也是一道很水的题,一个简单的数学计算,再就是找到集合中的最小的值就可以了,反正暴搜一遍就可以了,数据量也不大,不然就得sort()了。。。但是还是学得到小技巧,就是 INT_MAX 要用到头文件 ,我试了一下 INT_MAX 的值是 2147483647,就是 int型(有符号)最大的数。。。另外就是读懂题意很重要了,再简单的题目,读不懂题目也白搭这道题目的大致含义原创 2013-10-18 09:53:17 · 1173 阅读 · 0 评论 -
poj 1207 The 3n + 1 problem
当我看到题目的时候我就感觉到这是一道彻彻底底的水题,因为很像A+B的作风。。。但是看完题目我心里想了想:应该没有那么水吧,可能还是要优化的,暴力可能会TLE。。。但是我暴力过了以后我这样想:。。。。。。。【纯暴力】AC的代码:#includeint Process(int i){ int count=1; while(i!=1) { if(i%2原创 2013-10-22 16:06:45 · 1142 阅读 · 0 评论 -
poj 1247 Magnificent Meatballs
这道题主要就是先理解题意就成功了一大半。。。很水的题目题意:就是求当两个人按顺时针方向和按逆时针方向放置肉丸子后,当两个人肉丸子相等时所处的位置。按以下顺序考虑:1.如果肉丸的总数是奇数,那就不用往下考虑了,一定不行2.把总数除以2,然后从host(N=1)开始sum-=seat【i】,一旦sum==0,证明成功;小于0,失败;否则就继续循环。。。一个很简单的数学问题,我看到网原创 2013-10-24 15:25:41 · 1363 阅读 · 0 评论 -
poj 1118 Lining Up【同一条直线上的点】
题意:给出 n 个点的整数坐标(n解题思路:采用几何中的三个点是否在一条直线上判定定理:(yi-yk)/(xi-xk)=(yj-yk)/(xj-xk),除法不能出现分母为0的情况,所以转换为乘法做(而且乘法效率也高些),即:(y[i]-y[k])*(x[j]-x[k])==(y[j]-y[k])*(x[i]-x[k])(i、j、k共线)。暴搜肯定尽量追求不重不漏,重了会超时(我原创 2013-10-18 10:46:35 · 1188 阅读 · 0 评论 -
poj 1248 Safecracker
同样的理解题意很重要,我觉得可能这题作者的本意不是这么水,没那么简单可以暴力过的,但是我是暴力A了。。。网上有用回溯的,字典树的。。。也有5重暴力,反正我是懒得看,暴力我还是有自信自己写的,说不定写的还好一些。。哈哈我这个解法的亮点应该就是转换以后的sort(),这样算出来的一定是最大字典序的。。。一次A题意:给定一个长度为5……12个不同字符组成的字符串,从中选取5个,设为v原创 2013-10-24 21:14:19 · 1194 阅读 · 0 评论 -
poj 1250 Tanning Salon
这题不用完全模拟不好做,我放弃用逻辑分析的方法。。错误的分析代码:#include #include int main(){ int n; char Customers[100]; while(scanf("%d",&n)) //n 代表床位数量 { //输入数据 if(n==0) return 0; scanf("%s",Customers原创 2013-10-25 10:08:43 · 1290 阅读 · 0 评论 -
poj 2606 Rabbit hunt【同一条直线上的点】
我想这道2606在一条线上面杀死兔子和上一题1118的在一条线上面投放炸弹貌似没有什么不同。。。如果硬要扯点不同就是1118没有交代坐标点 的正负,而2606交代了。。。直接在上一题的基础上改了一下就顺利AC。。。AC的代码:#include int x[202],y[202];int main(){ int n; scanf("%d",&n);原创 2013-10-18 11:01:05 · 1323 阅读 · 0 评论 -
poj 2780 Linearity 【高效版 同一条直线上的点】
这道题才真的没有那么的水,可能因为测试数据很多,然后又每个数据有1000个点要处理,用O(n^3)的三重循环直接TLE掉了。。。所以得另想办法,后来参考了一下别人的想法,得用极角排序,一个sort()就可以了,极角为0的因为无法做分母,所以得单独考虑,终于AC。。。AC的代码:#include #include #include using namespace st原创 2013-10-19 11:57:47 · 1168 阅读 · 0 评论 -
poj 1298 The Hardest Problem Ever
题目是很水的,要注意两点,一个就是字符串必须比放入的数组多一个,如这道题strlen(a)=26,sizeof(a)=27。。。还有一点就是gets()函数可以输入空格,不能输入回车,但是s%不能输入空格,也不能输入回车AC的代码:#include #include char a[27] = {'V','W','X','Y','Z', 'A','B','原创 2013-10-26 16:43:38 · 1265 阅读 · 0 评论 -
poj 1318 Word Amalgamation
这种字符串的题一定要仔细,不然很容易WA。。。我开始的一种方法不是处理dictionary和sortDis,而是每次都搜索一次,到现在我都还没找到为什么错了。。。后一种代码就是先处理dictionary和sortDis,之后就容易处理了AC的代码:#include #include #include #include using namespace std原创 2013-10-26 16:07:18 · 1525 阅读 · 1 评论 -
poj 1326 Mileage Bank【四舍五入】
说实话,这道题虽然不难,但是考人的点还是有的,我WA了一次,后来检查发现了两个错误,看网上的结题报告,发现基本每个人都错了很多次。。。这说明不只是不仔细这么简单。。。这道题有两个考人的点:1.1-500 miles 就说明了 0miles 就不能算跑了路,如果出现 0miles 得算0处理2.就是四舍五入的地方,只可能出现在 “B” 中,任何整数乘以1.5,只可原创 2013-10-28 09:35:34 · 1461 阅读 · 0 评论 -
poj 1338 Ugly Numbers【终极打表】
这道题我用的是终极打表的方法。。。。。。。。。。哈哈哈,为了避免代码太长刷屏,把我自己的代码放到最后。。。这道题当我想到这种方法的时候哈哈大笑。。。大家注意亮点【代码长度】:我自己的代码效率很低,所以想到这种方法。。。网上的结题报告多用的是,指针法我的低效代码:#include int ugly[1510];void Process(原创 2013-10-28 12:42:38 · 2303 阅读 · 0 评论 -
转一篇好文:poj1338 poj2591 poj2545 这三道题
poj1338 poj2591 poj2545 这三道题先来看1338题目定义一种集合,使得其中的元素的素数因子只能是2,3,5即:1, 2, 3, 4, 5, 6, 8, 9, 10, 12, ...要求这个集合的第n个数是多少很直接的想法,我们通过题目的要求预处理算出这样的集合,然后再输出第n个数当然,我们在得到这样的一个数组num[转载 2013-10-29 15:35:06 · 1169 阅读 · 0 评论 -
poj 2591 Set Definition【OJ实验】
这道题本身比我之前A的题目要简单,我自己另外在OJ上用这道题做了几个有趣一点的实验poj2591只是定义集合的方式不同了而已。。。ans[a2]*2+1,ans[a3]*3+1,还有注意一点就是我改的时候用%I64d不能输入int型的数,OJ会爆Runtime error先贴AC的代码:#include #include using namespace std;int ans原创 2013-10-29 16:40:59 · 1310 阅读 · 0 评论 -
poj 2247 Humble Numbers
这道题和1338几乎一模一样不同就是数据量变得更大了,而且多了一个素数 7 参与运算,这道题我用了更“高明”的数字转换技术,用了重定向,可是因为代码太长不能提交,不能用终极打表了,只能另谋他法。。。打表程序:#include #include using namespace std;const int M=5845;int ans[M];int getMin(原创 2013-10-28 16:14:57 · 1192 阅读 · 0 评论 -
poj 2545 Hamming Problem
参考别人的思路写的,别人的这种算法很给力!效率很高O(n)的效率#include #include using namespace std;__int64 ans[1000000];__int64 getMin(__int64 a,__int64 b,__int64 c){ __int64 rs=0; rs=a<b?a:b; rs=rs<c?r原创 2013-10-29 16:01:52 · 1164 阅读 · 0 评论 -
poj 1450 Gridland
我在之前的博文里面提到过:比赛的时候最怕做字符串处理或者是那种不断WA,却是因为一个字母是小写的题目。。。那像1450这种题就是比赛中最希望碰到的题目。。。这种题就是读懂题目最重要,读懂了题目找到了规律,基本上在10分钟以内可以A掉。。。题目大意:给出一个n×m的矩阵,每个点可以朝上下左右,还有4个斜着的方向走问从某点出发,走遍所有的点的最短距离,每个点只能经过一次很简单的一道题目原创 2013-10-31 10:13:09 · 1431 阅读 · 0 评论 -
poj 1350 Cabric Number Problem
先写了一个程序测试 1000~9999,四位数中按这种算法第一次减得出的最小值:#include #include using namespace std;int smallDigit(int num){ int a[5]; a[0]=num%10; a[1]=num%100/10; a[2]=num%1000/100; a[3]=num/1000; so原创 2013-10-30 16:05:48 · 1236 阅读 · 0 评论