上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页

2013年4月25日

HDU 2093 水题,就是注意一下细节,有个结构体的排序,重载运算符小于

摘要: 注意细节,就是名字是左对齐,其余两项是右对齐,然后名字和题目数中间有一个空格,题目数和时间之间有一个空格。做了一两个小时,弱暴了`````不过也有点收获,看到了以前学C时没有怎么注意到的,有个头文件叫ctype.h,里面有函数isalpha(c),isdigit(c)各种处理字符的函数,以前看到过,很久不用就忘了,还是得学了多用才行。。。不过自己写一下也没什么太大的关系````还有就是左对齐得加个“ - ” ,也忘了````贴代码:View Code 1 #include <cstdio> 2 #include <cstring> 3 #include <algo 阅读全文

posted @ 2013-04-25 00:55 allh123 阅读(419) 评论(0) 推荐(0) 编辑

2013年4月24日

UESTC OJ 1824 Judgment Day 递归搜索

摘要: 这题就是写个DFS,搞定,比赛的时候没有看到N<=10,不敢暴力,因为这个的复杂度为2^n.看题一定要认真啊啊啊啊!!!!!枚举所有的可能,每个人都有两种情况,一是spell他的名字,一个是不spell.所以一共有2^n种情况,当然,名字拼不出来就只有一种,就是不spell.简单吧,用递归写,我一般都把递归写的叫DFS。贴代码:View Code 1 #include <cstdio> 2 #include <cstring> 3 int n; 4 int num[30]; 5 int pn[11][30]; 6 int max; 7 void dfs(int x 阅读全文

posted @ 2013-04-24 21:25 allh123 阅读(297) 评论(0) 推荐(1) 编辑

2013年4月21日

happy number 中南OJ 1275 数位DP

摘要: 记录我做的第一个数位DP,听起来好高深,呵呵````http://122.207.68.93/OnlineJudge/problem.php?cid=2031&pid=7这个题就是给你a,b。输出[a,b]中间有多少个happy number.仔细考虑happy number的定义发现,一个18位的数,它的平方和最大会为每位都取9,即9*9*18=1458.如果我先计算出了1-1500之间的happy number.任给你一个数(大于1500),要判断出它是不是happy number,就把它每位数的平方和算出来,如果该数是个happy number,那么它的平方和值也会是个happy 阅读全文

posted @ 2013-04-21 00:39 allh123 阅读(198) 评论(0) 推荐(0) 编辑

2013年4月17日

JAVA 大数相加 POJ 1503

摘要: 这个没什么好说的,就是用JAVA写,如果要用C++或C写的话,就要把数倒着存,这样当两个数位数不一样时较好操作,注意一下进位就行。很久没写过JAVA了,而且这是我第一个写的拿去OJ上跑的JAVA程序,第一次啊,然后各种状况不断,先是Compile Error,然后是Runtime Error,然后是WA,最后我对照着标程一模一样写了,才AC,真是纠结啊。为避免大家犯和我一样的错误,我提醒一下,在JAVA里面要把类命名为Main,我写str.charAt(0) == '0',WA了,不理解,我改成str.equals("0")才AC,莫非是输入数据出现了012 阅读全文

posted @ 2013-04-17 01:07 allh123 阅读(178) 评论(0) 推荐(0) 编辑

2013年4月16日

Codeforce 295B Greg and Graph 活用Floyd 任意两点的最短路径

摘要: http://codeforces.com/problemset/problem/295/B该题就是活学活用Floyd,Floyd的本质是每次在原图中加入一个点,看是不是能用该点中间点使得一个点到另一个点的距离更小。比如现在有三个点,1,2,31直接到3的距离是10,1到2的距离是2,2到3的距离是2,那么本来初始状态时1到3的距离为1直接到3,距离为10,在加入了点2后容易发现,1先到2,2再到3,距离一共只有4,小于直接到达,所以1到3的最短距离修改为4依次考察每个点能否成为中间点从而缩短路径,在加入一个点后,更新所有点对的最短距离。所以当顶点个数为n时,复杂度为O(n^3).这个依次删除 阅读全文

posted @ 2013-04-16 16:40 allh123 阅读(272) 评论(0) 推荐(0) 编辑

HDU 1473 并查集 删除结点操作 建立虚拟根结点

摘要: 这个题显然是用并查集,主要是涉及到并查集中结点的删除,一般而言构造的并查集要独立出结点,直观的想法是直接修改它的父结点为自己,但这样会出现错误。它原来的子结点也跟着一起独立出来了,这和题目是不符合的(题目只要求独立出要独立的那个,它的孩子结点还是应该在本来的那棵树上),考察合并函数发现,合并时总是把一个集合的根结点作为另一个集合的根结点。之所以不好把某个结点直接独立出来是因为它本身还是别的点的父结点,而这种情况出现的原因就是自己做过根结点。为保证编号为0-n-1的结点永远只做叶子结点,只需要给它们找个虚拟的根结点即可,也就是说,当某个结点只含自己时的初试状态不是p[x] = x,而是p[x] 阅读全文

posted @ 2013-04-16 13:50 allh123 阅读(222) 评论(0) 推荐(0) 编辑

2013年4月15日

Gao the Grid ZOJ 3647 数三角形

摘要: 首先从所有的点中选3个点用来画三角形,一共有ans = C((n+1)*(m+1),3)种,然后减去三点共线的情况,三点水平和垂直共线很好考虑,ans -= (n+1)*C(m+1,3)ans -= (m+1)*C(n+1,3).然后针对斜线的情况,用枚举法。先考虑如下的情况:假设有一条过原点(0,0)和点(x0,y0)的线段,其中x0,y0均为正整数,那么这条线段上有多少个整数点呢。整数点就是坐标为(x,y)的点,其中x,y均为整数 。答案上gcd(x0,y0)+1,下面证明:这条线段的方程如下:y = k * x ,其中k = y0/x0. (x>=0 && x =0 阅读全文

posted @ 2013-04-15 17:21 allh123 阅读(255) 评论(0) 推荐(0) 编辑

2013年4月12日

15个球,6个位置,求按递增序列输出不同的摆法 DFS

摘要: 贴代码:View Code 1 #include <cstdio> 2 #define MAXN 160000 3 int a[MAXN][6]; 4 int cur; 5 int st[6]; 6 //表示要去第i个位置放球,还有sum个球没放 7 void DFS(int i,int sum) 8 { 9 int j,k;10 if(i==5)//放最后一个位置,那么直接把剩下的球都放在该位置上11 {12 st[i] = sum;13 for(j=0; j<6; ++j) //放数组里保存起来14 a[c... 阅读全文

posted @ 2013-04-12 10:49 allh123 阅读(329) 评论(0) 推荐(0) 编辑

八皇后问题 DFS,回溯剪枝 //http://poj.grids.cn/practice/2698

摘要: 就是DFS,一出现同行,同列或同对角线,就不往下搜了,就叫剪枝,然后一到出现一个可行解,输出来。记得再递归调用回退的时候要“恢复现场”贴代码:View Code 1 //http://poj.grids.cn/practice/2698 2 #include <cstdio> 3 #include <cstring> 4 bool a[10][10]; 5 int cur=0; 6 //开始考虑放第i行 7 void DFS(int i) 8 { 9 int j,k;10 if(i == 8)//得到一个可行解11 {12 printf("No. %d... 阅读全文

posted @ 2013-04-12 00:36 allh123 阅读(468) 评论(0) 推荐(0) 编辑

2013年4月11日

POJ 1182 食物链 并查集

摘要: 这个题算是考察一下大家的逻辑思维,很可惜,我的还不行,这题我搜了别人的解题报告,没看几行字就不想看了,但今天又很想A了这题,又一次去搜了解题报告,看到了CSDN的博客上有一篇名为史上POJ 1182 最详细的解题报告,写得不错,我终于耐心看了下去,看完后,发现这个题和那个称重的并查集的题的思路基本上是一样一样的啊。下面详细讲一下:先定义每个动物的两种属性,一个是父结点是谁,一个是和父结点的关系,定义如下:struct Animal{int parent; //父结点的编号int relation;//和父结点的关系,0-和父结点是同类 1-被父结点吃 2-吃父结点} a[MAXN];下面推两个 阅读全文

posted @ 2013-04-11 19:59 allh123 阅读(160) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页

导航