HDU
joeycom2
这个作者很懒,什么都没留下…
展开
-
两个集合的差
题目出自杭电http://acm.hdu.edu.cn/showproblem.php?pid=2034 集合的差:以属于A而不属于B的元素为元素的集合称为A与B的差集,即找出A中有的,而B中没的 (不理解?没关系。用通俗的话说,就是A集合中的元素减去AB的交集后的元素集合) 思路:对输入的A,B集合进行集合内排序, 上代码#include#includein原创 2016-04-03 19:00:56 · 4446 阅读 · 0 评论 -
HDU2045~递推
题目出自杭电 思路: ps:看Source知道这是一道递推题,就想着要找规律了-,- 根据数学中的排列组合: 前n-2个已涂好后,涂第n-1个即有2种情况: 1. n-1的色与n-2和1的色都不相同,那么n就是剩下的那个色,米选择。 即就是f(n-1) 2. n-1的色与n-2不相同但与1个色一样,那么n的色就有2个色选择. 即就是f(n-2)*2综上得:f(n) = f原创 2016-04-15 17:46:31 · 402 阅读 · 0 评论 -
HDU2055
题目来自杭电 AC代码:#include <stdio.h>#include <string.h>#include <cctype>int change(char c){ if(isupper(c)) return c-'A'+1;//当参数c为大写英文字母(A-Z)时,返回非零值 if(islower(c)) return 'a'-c-1;//当参数c为小写英文字母(原创 2016-04-30 22:32:08 · 296 阅读 · 0 评论 -
HDU2056
题目出自杭电 题目大意: 给出两矩形的对角线上的两点(没说是主对角线还是副对角线)求两矩形的相交面积。 注意: 1.注意给的对角线不一定是主对角线,所以要转换成主对角线上的点,。2.还需要判断形成的两个矩形是否有相交的部分,如果没有直接输出0.00,判断条件是:第四个点的横坐标、纵坐标都大于第一个点的;且第三个点的横、纵坐标都小于第二个点的。3.计算相交部分的面积,取第二个、第四个点中较原创 2016-05-01 16:09:45 · 1122 阅读 · 0 评论 -
HDU2047
题目出自杭电 思路:从最后一个向前递推 当第n个是O时,那么第n-1个不能为O,此种情况有f(n-2) * 2个 当第n个为非O时,有f(n-1) * 2个; 综上得递推公式:f(n)=f(n-2) * 2+f(n-1) * 2#include <stdio.h>int main(){ __int64 a[45]; int n,i; a[1]=3;a[2]=8原创 2016-04-22 17:01:30 · 712 阅读 · 0 评论 -
HDU2048错排问题
题目出自杭电 思路:共有n个人,往前递推,可分为n-1个人拿错票和n-2个人拿错票的情况 当有n-1个拿错票时,再加入一个人,只要第n个人和前面任意的n-1个人其中一个调换票就可以了,所以有f(n-1) * (n-1)。 当有n-2个拿错票时,只能是没拿错的那个人与第n个交换票,而那个人可能是前面n-1个的任意一个,所以又有f(n-2) * (n-1) 所以错排结果为(n-1) * (原创 2016-04-24 15:06:11 · 289 阅读 · 0 评论 -
hdu1495~广搜
思路: 其实就是要判断可乐能不能被平分……..有六种状态,从a瓶到b瓶,a–>cb–>a b–>cc–>a c–>b然后每种状态里面又分两种不同情况,可以将此瓶的水全部清空,不能清空……然后广搜就可以了……..原创 2016-05-25 21:32:11 · 361 阅读 · 0 评论 -
HDU2051进制转换
#include <stdio.h>int main(){ int a,n,i,cnt=0; int num[30]; while(~scanf("%d",&a)) { int i=0; do{ num[i]=a%2; a=a/2; i++; }原创 2016-04-25 21:33:25 · 686 阅读 · 0 评论 -
HDU1756--判断点与多边形的相对位置
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1756 题意:判断点是否在给出的多边形内(包括边界)#include<cstdio>#include<cstring>#include<cmath>#include<iostream>using namespace std;const double eps = 1e-8;//判断double类型原创 2016-08-12 08:13:20 · 444 阅读 · 0 评论 -
hdu1142-记忆化搜索
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1142//hdu1142#include <iostream>#include <stdio.h>#include <memory.h>#include <queue>#include <vector>#define INF 0x3f3f3f3f#define maxn 1005原创 2016-10-23 21:33:01 · 226 阅读 · 0 评论 -
Big Event in HDU-01背包(dp思想)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1171 问题描述:给出每个物体的价值和数量,如何分使得A,B所得价值最接近并且A的价值不能小于B 解决方法:dp[i]是体积为i时,获得的最大价值。易得: dp[j] = max(dp[j], dp[j - val[i]] + val[i]);#include <iostream>#include原创 2016-11-24 21:30:19 · 181 阅读 · 0 评论 -
HDU-剪花布条(kmp)&& HDU-Oulipo(kmp)的区别
HDU2087-剪花布条 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 题目描述:给出父串和子串,问子串在父串中出现的次数#include<cstdio>#include<cstring>#include<algorithm>#define maxn 1010using namespace std;char fa[maxn], s原创 2016-11-24 21:59:16 · 233 阅读 · 0 评论 -
HDU2054
题目出自杭电 原来想着用c++的重载函数做: 发现有很大的问题: 1. 高精度的数就过不了,如:3.1111111111111111111111111111111111111111111111 2. 定义输入的数的类型不好定义。 因此需要改思路: 将输入的数定义为字符串型,用字符串的比较函数strcmp一一比较,在此之前,需要将输入的字符串进行修改#include <stdio.h>#原创 2016-04-28 19:54:06 · 342 阅读 · 0 评论 -
HDU2044
题目出自杭电 思路: 1.由于蜂房是一排的,所以,蜜蜂要么往正右方走,要么往右下方走;不难看出,这是一个斐波那契递推; 2.从a到b可简化为从1到b-a,从而使得数组尽可能小; 3.注意不能用int,因为数据比较大,直接用int会产生溢出所以改用__int64。 *第一次Time Limit Exceeded*#include <stdio.h>__int64 n;int leve原创 2016-04-11 17:28:04 · 1196 阅读 · 0 评论 -
人见人爱A^B
题目出自杭电 代码不长,但如果真要自己想的话要想好久, 法一:循环分部取余 1.这种方法适用于 a^n%m 类型 2.适用于n比较小的情况,n太大的话,循环结构会受不鸟。。。#include<stdio.h>#include<stdlib.h>int main(){ int n, m, cont; while (~scanf("%d%d", &n, &m) && (原创 2016-04-05 21:35:59 · 350 阅读 · 0 评论 -
求多边形面积
题目出自杭电 容易水得:#include <stdio.h>#include<stdlib.h>typedef struct point{ int x,y;}point;point a[100];double area(point p,point q){ return p.x * q.y - q.x * p.y;}int main(){原创 2016-04-05 22:07:44 · 392 阅读 · 0 评论 -
HDU2037(贪心-。-)
题目出自杭电 水题思路: 1.对输入数据时间进行排序。 2.若下一个节目的开始时间>=上一个节目的结束时间,则计数变量cnt++;水题代码:#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;int n;struct show{ int s,e;}pro[110];bool原创 2016-04-06 16:48:39 · 550 阅读 · 0 评论 -
HDU2039
写在最前:这是一条炒鸡水的题,粤语里有一句话:浅水浸死人。 先贴题目 题目说输入的三条边是正数, 所以在定义的时候一定要定义为double或float型而不能是整型。 上代码-。-#include <stdio.h>int main(){ float a[3]; int n,i; scanf("%d",&n); for(i=0;i<n;i++) {原创 2016-04-06 21:29:19 · 525 阅读 · 0 评论 -
HDU2040-亲和数
题目出自杭电 首先解释何谓亲和数 亲和数是对于两个数来说的。如果两个数a和b,a的所有除本身以外的因数之和等于b,b的所有除本身以外的因数之和等于a,则称a,b是一对亲和数。 思路:对于输入的数A,算出它的所有真约数的和C,若C=B,则A和B是亲和数。反之不是。 上代码#include <stdio.h>int n,m;int sum(int n){ int sum =1,原创 2016-04-07 21:09:15 · 965 阅读 · 0 评论 -
HDU2049错排问题
题目出自杭电 思路:因此先找到N个新郎中M个错一共有几种,是Cm(n)=N!/M!/(N-M)! 再乘以错排公式f[n]=(n-1)*(f[n-1]+f[n-2])#include <stdio.h>int main(){ int n,m,i,a; __int64 f[25],c[25]; f[0]=1,f[1]=1,f[2]=2; for(i=3;i<2原创 2016-04-25 17:44:54 · 312 阅读 · 0 评论 -
HDU2050分割问题
题目出自杭电 相关的问题资料可以在以下链接中找到: http://blog.csdn.net/wu_lai_314/article/details/8219236(1)先讲n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域。 析:当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。原创 2016-04-25 19:58:48 · 408 阅读 · 0 评论 -
HDU2041
题目出自杭电 分析:走上第n级,可以从第n-1级走一步上来,也可以从第n-2级走两步上来。所以问题就转换为:走到n-1级的总走法+走到n-2级的总走法,依次递推。 要用上斐波那契递推 斐波那契数列:每个数都等于它的前两个数字和(前2个除外);即:F(n)=F(n-1)+F(n-2);#include <stdio.h>int main(){ int n,m,i,a[41];原创 2016-04-08 13:37:14 · 763 阅读 · 0 评论 -
HDU2042
题目出自杭电 #include #include int f(int m){ if(m==1) return 4; else return (f(m-1)-1)*2;}int main(){ int n,m; scanf("%d",&n); while(n--) { scanf("原创 2016-04-09 16:04:53 · 526 阅读 · 0 评论 -
HDU2043
题目出自杭电 #include <stdio.h>#include <string.h>int main(){ int m,i,l; char mima[50]; int f1,f2,f3,f4,f5; while(~scanf("%d",&m)) { getchar(); while(m--) {原创 2016-04-10 21:49:07 · 483 阅读 · 0 评论 -
HDU2053
题目出自杭电 题目大意: 先把这些灯标上号,1 2 3 4 5 6 7 8 ……无穷 首先全是关的,也就是全是0 第一次操作 ,标号是1的倍数,全都变成相反的状态,也就是全变成1.. 第二次操作 ,标号是2的倍数,全都变成相反的状态,你可以看下,2 4 6……变成了0.. 第三次操作 ,标号是3的倍数,全都变成相反的状态,你可以看下,3 6 9…… 问:N 号台灯最后 变成了 什么状态原创 2016-04-27 21:32:22 · 553 阅读 · 0 评论 -
HDU1358-Period(kmp-求前缀长度和最小循环节长度 )
题目链接:acm.hdu.edu.cn/showproblem.php?pid=1358 题目描述:给一数字n,和一长度为n的字符串,要求把所有循环节大于1的字符串的长度和循环次数输出。//求前缀长度和最小循环节长度 #include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define maxn 100原创 2016-11-24 22:12:12 · 381 阅读 · 0 评论