我的ACM之旅
来源:互联网 发布:java客服系统源码 编辑:程序博客网 时间:2024/04/28 13:49
作为新一代菜鸟级别的人,做题选简单的做,代码往低级的写,什么算法啊,解题思路啊,都没有。不得不说差到一定程度了,处于这种状况那只有一个原因———自己看书做题太少,对于我而言,一个才c语言基础还没打牢的人,这可怎么的了啊,然而这种抱怨并没有什么卵用。努力才是王道。好了不扯那么多了。先来看看我几个用低级代码做的比赛题。
参加暑假集训的第二天就开始了三天的比赛,先看看第一天的题:
A士兵买香蕉(CodeForces 546A)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82659#problem/A
说实话,题目不难,难的是这个题目英语题目,对于英语水平之过了二级的人来说,不管题目难不难,看见是英语的题目就难;看完题目,理解意思后,大神们已经写第二题了,但是毕竟自己写出来了,也感觉有点成就感,估计出题者是想给水平差的人找个台阶下。
解题思路:题目意思是买第一次香蕉花 k dollars,第二次买花 2k dollars,第三次买花 3k dollars,那么我们可以直接累加来计算最后总共花了多少钱,最后来个判断,判断士兵自己的钱够不够,够了就好,可以自己买,不够的话你只能借钱买咯,最后算一个差价。
include<iostream>include <cmath>using namespace std;int main(){ int k,n; long w,t=0; cin>>k; cin>>n; cin>>w; for(int i=1;i<=w;i++) t+=i*k; if(t>n) cout<<t-n<<endl; else cout<<"0"<<endl;return 0;}
B排序问题(UVA 11462)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82659#problem/B
这个题本来想直接用sort函数排序,但是肯定没这么简单的,假如用函数直接排序,这题超时了,对于ACM的很多题,在我看来很多简单的题,我都超时了,所以时间是个很重要的东西。但是这道题目最终超时,我没做出来,但是比赛完后一看别人的代码才明白过来。
解题思路:先创建一个全为0的数组,再将输入的数存为数组下标,使该地址的值为1,例如,输入1 ,3, 5三个数,那么c[1]=c[3]=c[5]=1,而其他元素的值为0,通过判断值是否为1,输出排列好的结果,这种思路让我长知识了。
include <cstdio>include <iostream>using namespace std;int main(){ int n; while(scanf("%d",&n) && n){ int c[101] = {0}; int x; for(int i = 0; i < n; i++){ scanf("%d",&x); c[x]++;//使元素的值为1, } int flag = 1; for(int i = 0; i < 100; i++) { if(c[i]) for(int j = 0; j < c[i]; j++) { if(!flag) printf(" "); flag = 0; printf("%d",i); } } printf("\n"); } return 0;}
C去除相同数
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82659#problem/C
这道题就差几步就可以完成了,但是死在思路上了,思路太混乱,就是在if判断语句的时候想错了(看注析),
解题思路:先将输入的数据存在一个数组,在用sort函数进行排序,找出相同的数,对其中一个相同的数进行加1,直到不存在相同的两个数。解题关键是思路清晰。
include <cstdio>include<algorithm>include <iostream>include <vector>using namespace std;int main(){ int n,m,count=0; scanf("%d",&n); vector<int>a(n); for(int i=0;i<n;i++) scanf("%d",&a[i]); m=n; while(n--){ sort(a.begin(),a.end()); for(int i=0;i<m-1;i++) if(a[i]==a[i+1]) { a[i]=a[i]+1; //原来写的是a[i+1]=a[i+1]+1; // 我认为将后面那位数加1,再通过重新排列, // 但是正是因为我是这样想提交没通过, count++; } } cout<<count<<endl; return 0;}
D分巧克力
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82659#problem/D
这个题目最简单只要你大概的看懂英语。你看代码就知道这个题目有多简单。
解题思路:我做这个题目的思路就是投机取巧,看了下案例,发现了规律,
#include<iostream>#include <cmath>using namespace std;int main (){ int m ,n,t=0; while(cin>>m>>n) { t=m*n-1; cout<<t<<endl; }return 0;}
先写这么多吧!如果有不对的地方,请不吝赐教,QQ:932552783
- 我的ACM之旅
- 我的大学生活之ACM
- 我的ACM之路
- 我的ACM之路
- 我的ACM之路
- 这里将是我的ACM之旅
- poj 1936 我的ACM之旅开始了~~~吼吼
- 现在要开始我的ACM之旅啦!
- 开始我的ACM/ICPC之路
- 我的大一ACM之路
- 我的ACM之梦启航
- 我的ACM之快速排序
- 我的ACM之二分查找
- 我的acm之注意事项1
- 我的acm荣耀之路
- 我的 大一ACM 之路
- 我的第一次也将是最后一次的ACM省赛之旅
- 淡淡的失落,我的ACM之路
- ZZ:OpenSSL中产生RSA KEY以及读取PEM文件的问题
- 成功的云计算管理必须建立稳固的防守
- ClassNotFoundException:org.apache.commons.io.output.DeferredFileOutputStream error while using commo
- HTTP协议状态码详解(HTTP Status Code)
- java中的内部类和匿名内部类的使用
- 我的ACM之旅
- 【Cocos2d-x】CCNode
- 三次贝塞尔曲线画圆的方法。
- codevs1004
- 斯坦福大学数据挖掘公开课学习笔记____Lesson1
- ace_tree每次重新加载数据,而不是只加载子节点数据的方法。
- Windows环境下的NodeJS+NPM+GIT+Bower安装配置步骤
- Java中使用Jedis操作Redis
- Delaunay算法简介及实现