
经典
YYlxid
这个作者很懒,什么都没留下…
展开
-
POJ 2421 Constructing Roads
题目输入邻接矩阵 再 输入 已连接的两个点输出 最短路径 解析可以将已连接的两个点的原路径长度 置为 0再用prim算法求解 #includeusing namespace std;#define N 105#define Max 0x7ffffint s[N][N],dist[N],flag[N];int minn(int a,int b){ r原创 2013-08-21 10:53:20 · 663 阅读 · 0 评论 -
pat 1004. Counting Leaves (30)
bfs实现,用l r两个下表维持对每层进行计算叶子结点个数题目不知道有没有问题 ,n表示结点个数 m表示非叶子结点个数那么如果n=5,m=0说明叶子结点一共有5个?那么第0层的叶子结点应该输出5?还是1 这题里输出的是1 可是感觉应该是5才对啊 /*test 2 input m=0 output 1bfs实现*/#include#include#inc原创 2013-09-10 20:12:03 · 1790 阅读 · 0 评论 -
pat 1049. Counting Ones (30)
看别人的题解懂了一些些 参考《编程之美》P132 页《1 的数目》#include#includeusing namespace std;int getone(int n){ int ans=0,base=1,right,left,now; while(n/base) { right=n%base; left=n/(base*10); now=(n/base)%原创 2013-09-02 23:33:45 · 926 阅读 · 0 评论 -
pat 1062. Talent and Virtue (25)
难得的一次ac题目意思直接,方法就是对virtue talent得分进行判断其归属类型,用0 1 2 3 4 表示 不合格 sage noblemen foolmen foolmen再对序列进行排序 优先级 类型>total grade>virtue>id #include#include#include#includeusing namespace std;#de原创 2013-09-01 23:09:49 · 1304 阅读 · 0 评论 -
pat 1060. Are They Equal (25)
题目意思直接,要求将两个数转为科学计数法表示,然后比较是否相同 不过有精度要求/*test 6 3 0.00 00.00test 33 0.1 0.0010.001=0.1*10^-2pay 前导0不同格式的0*/#include#include#includeusing namespace std;char a[105],b[105];struct num原创 2013-09-01 22:02:11 · 1401 阅读 · 0 评论 -
pat 1013. Battle Over Cities (25)
dfs#include#include#includeusing namespace std;#define N 1005int flag[N],s[N][N];void init(int n){ int i,j; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) s[i][j]=0; flag[i]=0; }}void dfs原创 2013-08-27 10:27:52 · 1321 阅读 · 0 评论 -
pat 1012. The Best Rank (25)
题目简单 注意排名~~#include#include#include#includeusing namespace std;#define N 2005int ranks[N][4],c[N],m[N],e[N],a[N];void print(int n){ int i,j; for(i=0;i<n;i++) { for(j=0;j<4;j++) cout<<r原创 2013-08-27 09:31:15 · 855 阅读 · 0 评论 -
FOJ 1591 —— Coral的烦恼
#includeint main(){ __int64 n,i,sum,l,r; while(scanf("%I64d",&n)!=EOF) { sum=0; for(i=1;i*i<=n;i++) { sum+=n/i*i; if(i!=n/i) { l=n/(i+1)+1; r=n/i; sum+=i*(l+r)*(r-l+1)/原创 2013-08-26 18:42:28 · 717 阅读 · 0 评论 -
poj 2503 Babelfish
用到C++中的map收获 mapss[char a[]]=char b[] ,虽然写着是string string 可是可以直接用char数组赋值string转换为char 数组方法 string s; char s1[50]; strcpy(s1,s.c_str());char数组转换为string s=s1; 或是 string原创 2013-08-24 18:27:35 · 894 阅读 · 0 评论 -
hdu 2529 Shot
物理题 好题 开始看题时,就郁闷为什么没有给出速度的方向 原来要求得就是这个角度公式v*cos(thta)*t=l;v*sin(thta)*t-0.5*g*t^2=h;前式代入后式 得到关于 tan(thta)的一个二元一次方程 h(max)=0.5*v*v/g-0.5*g*l*l/(v*v); #includeint main(){ double h,l,v,原创 2013-08-23 23:41:02 · 1069 阅读 · 0 评论 -
POJ 2773 Happy 2006
数论的一道题目 k很大,感觉暴搜会超时,但是最后还是没有想出来 看别人的解释后 发现好神啊 先来看看求两个数的最大公约数的求法 对于 x y (假设x>y)若 x%y==0 则说明最大公约数为y若!=0 则 要继续 递归求解 gcd(y,x%y)从求最大公约数过程可以看出 gcd(x,y)=1,则 gcd(x*n+y,x)=1(第一步为 (x*n+y)原创 2013-08-23 17:50:02 · 830 阅读 · 0 评论 -
hdu 1257 最少拦截系统
题目意思是求至少需要多少个拦截系统,可以将所有的导弹拦截?而拦截系统的一个缺点就是第一个导弹任意高度都可被拦截下来,但接下来的导弹则受前一个导弹的高度的影响,一个拦截系统可拦截的导弹个数即为求 初始高度为h 的最大递减序列的长度 而求拦截系统个数 则可通过 当前拦截系统拦截的最后一个导弹 的高度 〉下一个拦截系统拦截的第一个导弹 递推下去 就可以看出 ,求 拦截系统个原创 2013-08-22 19:21:43 · 650 阅读 · 0 评论 -
POJ 1080 Human Gene Functions
动态规划问题最长公共子串的变形 主要注意初始化 #includeusing namespace std;#define N 105int v[N][N],dp[N][N];char s1[N],s2[N];int max(int a,int b){ return a>b?a:b;}void init(){ v['A']['A']=5; v['C']['C']=原创 2013-08-22 15:26:10 · 824 阅读 · 0 评论 -
POJ 2411 Mondriaan's Dream
第一个状态压缩dp借鉴博客:http://blog.sina.com.cn/s/blog_64018c250100v1nb.html(写得很好理解 值得看)主要是弄清一个位置可能有几个状态 这题 就两个 1 表示放置 0表示不放置(个人理解:1为矩阵在此行结束,0表示矩阵不在此行结束)代码:#includeusing namespace std;//状态压缩d原创 2013-08-22 18:38:25 · 738 阅读 · 0 评论 -
POJ 1050-To the Max
太久没做题了 , 没什么思路的说 。。看了别人的解体报告后,感觉好神奇啊。只要把后面的各个行依次加到前一行,再求一维数组的最长子序列和。。有点像每次假设一个小矩阵,在这矩阵中寻找最大矩阵和 而这些小矩阵就是 人为通过扩大矩阵宽度以及起始行来实现的学习了~~~~~#include#includeusing namespace std;#define N 105int a[原创 2013-08-21 16:25:46 · 509 阅读 · 0 评论 -
foj 1593 数字接力赛
用到 string的字符串连接 还有sort sort的时间复杂度是nlogn学习了#include#include#include#include#includeusing namespace std;#define N 100005int cmp(string a,string b){ return a+b>b+a;}int main(){ int n原创 2013-09-19 19:52:24 · 926 阅读 · 0 评论