自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (1)
  • 收藏
  • 关注

原创 HDU 1058 Humble Numbers

题目地址:点击打开链接思路:看的标程,看的晕晕乎乎,很多细节没搞懂,除了最后2位11,12,13是th之外,逢1就是st,2就是nd,3就是rd,其他都是thAC代码:#include #include using namespace std;int a[6000];int min4(int a,int b,int c,int d){ return min(mi

2015-08-30 20:52:19 278

原创 HDU 3501 Calculation 2(欧拉函数)

题目地址:点击打开链接思路:需要用到这个公式如果gcd(n,i)=1,则gcd(n,n-i)=1,用欧拉函数求出和n互质的数的个数sum

2015-08-30 14:36:14 327

原创 HDU 2824 The Euler function

题目地址:点击打开链接思路:递推求欧拉函数AC代码:#include #include #define maxn 3000000//不能加分号long long x[3000000];int main(){ long long sum; int i,j,a,b; for(i=1; i<maxn; i++) x[i] = i;

2015-08-28 23:21:58 343

原创 欧拉函数

定义:在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。 从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明。简介:φ函数的值  通式:φ(x)=x(1-1/p1)(1-1/p2)(1-

2015-08-28 23:07:22 509

原创 HDU 1286 找新朋友(欧拉函数)

题目地址:点击打开链接思路:欧拉函数的简单应用AC代码1:#include #include using namespace std;int main(){ int t,n,i,rea; scanf("%d",&t); while(t--) { scanf("%d",&n); rea = n;

2015-08-28 17:39:45 374

原创 ZOJ 1088 System Overload

题目地址:点击打开链接思路:约瑟夫环的简单应用,模拟即可AC代码:#include #include #include using namespace std;int visit[150];int main(){ int i,n,m,k,sum; while(scanf("%d",&n),n) { m = 1;

2015-08-28 12:18:53 313

原创 ZOJ 1047 Image Perimeters

题目地址:点击打开链接思路:挺好的一题AC代码:#include #include #include using namespace std;int dir[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};int diagonal[4][2] = {{-1,-1},{-1,1},{1,-1},{1,1}},visit[25][25];int m,

2015-08-28 11:00:47 312

原创 HDU 5364 Distribution money

题目地址:点击打开链接思路:水题一道,结果题没看清,输出的小细节也没注意,结果wrong了错误代码:#include #include #include using namespace std;int a[10010];int main(){ int n,i,x; while(scanf("%d",&n) != EOF) { m

2015-08-22 07:21:56 341

原创 HDU 5366 The mook jong

题目地址:点击打开链接思路:a[i] = a[i-1] + a[i-3] + 1上一个阶段的各种组合+新增的一个能和离他2个格子的各种组合再组成一个新组合+只种新增的这一格AC代码:#include #include using namespace std;int main(){ __int64 n,a[61],i; a[1] = 1; a[2]

2015-08-21 18:39:14 311

原创 HDU 1172 猜数字

题目地址:点击打开链接思路:简单枚举,每次输入a,b,c是一个筛选条件,看最后筛下的符合条件的数字的个数是否为1即可,挺考基本功的AC代码:#include #include #include using namespace std;bool judge[10000];int num1[10],num2[4];int num3[10];int main(){

2015-08-21 17:27:02 502

原创 HDU 1422 重温世界杯(最长非负子序列)

题目地址:点击打开链接思路:求最长非负子序列AC代码:#include #include #include using namespace std;int dp[200020];int main(){ int n,a,b,sum,num,max1,i; while(scanf("%d",&n) != EOF) { sum = 0

2015-08-20 23:01:30 538

原创 HDU 2577 How to Type(DP+模拟)

题目地址:点击打开链接思路:快捷键用的不好也会影响AC,对于我这种只会用caps lock切换大小写的菜鸟好说,这题还是学到不少知识,(1)caps lock打开时所有的输入都是大写的,除非你再按一次caps lock关掉 (2)当你想输入大写是,可以先按shift 再按字母,只不过下一次比再输入时是小写(3)当caps lock打开时如何你想输入小写时,可以先按shift再按字母,只不过下次

2015-08-20 11:04:36 299

原创 HDU 5339 Untitled

题目地址:点击打开链接思路:回溯,就是刚开始要从小到大排序一下,因为先对小数取余再对大数取余没意义,这道题数据比较水,看到有人从小到大枚举过了,随便写了一组数据就测出来错误,却能ACAC代码:#include #include #include #include #include using namespace std;int n,a[21],visit[21],min

2015-08-19 23:15:21 384

原创 ZOJ 1109 Language of FatMouse

题目地址:点击打开链接思路:用STL容易超时,本题没有超时,用字典树比较麻烦,可以先排序再二分搜索AC代码:#include #include #include #include using namespace std;int main(){ map entry; char a[20],b[20],c[40]; string value,key;

2015-08-19 21:43:08 591

原创 HDU 1158 Employment Planning

题目地址:点击打开链接思路:dp[i][j]表示前i个月最后一个月的总人数为j所花的最小费用状态移动方程:dp[i][j] = min{dp[i-1][k] + cost[i][j]},其中cost[i][j]是第i月的花费,1~当k2~当k>j时,第i个月炒了人,所以cost[i][j] = j*salary + (k-j)*fire写一下我刚开始就存在的2个疑问1:

2015-08-19 15:54:26 291

原创 HDU 2709 Sumsets

题目地址:点击打开链接思路:参考大神的,地址:点击打开链接AC代码:#include #include #include using namespace std;long long a[1000010];int main(){ int i,n; a[1] = 1; a[2] = 2; for(i=3; i<=1000000; i++)

2015-08-18 15:25:40 334

原创 HDU 2571 命运

题目地址:点击打开链接思路:简单DP,但是有很多需要注意的地方,首先DP数组不能初始化为0,因为DP保存的是这个点能取得的最大幸运值,可能为0,应该初始化为一个很小的负数,第二个就是保存值时i,j要从1开始循环,因为走的是列的倍数错误代码:#include #include #include using namespace std;int a[21][1001],dp[21

2015-08-18 10:43:21 278

原创 HDU 2084 数塔

题目地址:点击打开链接思路:经典DP吧AC代码:#include #include #include using namespace std;int dp[101][101],a[101][101];int main(){ int t,n,i,j; scanf("%d",&t); while(t--) { scanf("

2015-08-17 22:24:40 311

原创 HDU 1203 I NEED A OFFER!(01背包)

题目地址:点击打开链接思路:刚开始没想到是01背包,看了别人的解题报告才懂的,算是一道好题吧,和普通背包放东西有点不一样,需要从对立面思考,正面情况太多,求1减去份 也收不到的概率即可AC代码:#include #include #include using namespace std;int cost[10001];double value[10001],dp[1000

2015-08-17 21:24:07 303

原创 HDU 1840 Equations

题目地址:点击打开链接思路:不能直接用二次函数根的判别公式,因为a,b,c的不同取值会导致函数变成常函数,一次函数等a=0b=0c=0INF对任何数都成立a=0b=0c!=00常函数a=0b!=0c=01一次函数a=0b!=0c!=01一次函数a!=0  

2015-08-17 20:52:46 311

原创 HDU 1215 七夕节

题目地址:点击打开链接思路:基础题AC代码:#include#include#includeusing namespace std;int main(){ int t,n,i,sum; scanf("%d",&t); while(t--) { sum = 1; scanf("%d",&n); for(i=2; i*i <= n; i++) {

2015-08-14 12:59:57 322

原创 HDU 1217 Arbitrage

题目地址:点击打开链接思路:一种钱与其他钱互相兑换,最后使回到自己的汇率大于1就能兑换成功,对汇率取对数,当汇率大于1时,log函数的值大于0 ,注意log函数是对e取对数,其实对大于1的数取对数都行,因为他们的函数都是这样的AC代码:#include #include #include #include using namespace std;int main(

2015-08-14 12:45:01 497

原创 ZOJ 1082 Stockbroker Grapevine

题目地址:点击打开链接思路:求一个点到其他点的最短距离用Dijkstra算法,而求任意一对顶点间的最短距离通常用Floyd算法,只不过时间复杂度会高一点,这里的距离是一个抽象的概念,还有就是当发现局部变量需要定义为全局变量时,记得把局部变量删除,不然错误很难找出来,调了一个小时发现,n既定义了全局变量,又定义了局部变量,结果导致n值不同AC代码:#include #include

2015-08-14 11:38:05 361

原创 HDU 1078 FatMouse and Cheese

题目地址:点击打开链接思路:记忆化搜索AC代码:#include#includeusing namespace std;int a[100][100],b[100][100],n,k;int x[4] = {-1,1,0,0}, y[4] = {0,0,-1,1};bool check(int l,int m){ if(l =n || m=n) return f

2015-08-13 14:56:51 313

原创 HDU 5373 The shortest problem(判断一个数能否被11整除)

题目地址;点击打开链接思路:参考队友的代码写的,资料地址:点击打开链接 怎样判断一个数能不能被11整除?  判断一个数能不能被11整除与判断一个数能不能被7整除一样,都没有直接判断的方法,需要借助间接的方法,这种间接的方法有两种,其一是“割减法”,其二是奇偶位差法。  (1)割减法:判断被11整除的割减法与判断被7整除的割减法不同。即

2015-08-13 09:47:58 827

原创 HDU 1287 破译密码

题目地址:点击打开链接思路:异或运算法则1. a ^ b = b ^ a 2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c; 3. d = a ^ b ^ c  可以推出 a = d ^ b ^ c. 4. a ^ b ^ a = b.异或还有逆运算 a^b=c,则a=b^cAC代码:#includeint a[3

2015-08-13 09:22:29 359

原创 HDU 1176 免费馅饼(树塔问题的简单变形)

题目地址:点击打开链接思路:树塔问题的简单变形AC代码:#include#includeint a[100010][12];int max1(int a,int b){ return a>b ? a : b;}int max2(int a,int b,int c){ int max1; max1 = a>b ? a : b; return max1>c ?

2015-08-13 09:07:35 337

原创 HDU 1143 Tri Tiling

题目地址:点击打开链接思路:参考别人的转,如果n为奇数,必然无解。当n为偶数时,一个比较直观的思路就是把大矩形用竖线切出左边一部分,然后递归求解,就像UVA_10359那样,直接考虑最左边一个小矩形是如何构成的我们就可以递归得到f(n)递推式。虽然这个题目乍看上去小矩形似乎拼法比较多,而且要拼出一个不能再用竖线切分的小矩形似乎拼的方法也并不直观。但如果我们在纸上多画

2015-08-13 08:52:29 347

原创 HDU 1098 Ignatius's puzzle

题目地址:点击打开链接思路:参考别人的给定f(x)=5*x^13+13*x^5+k*a*x,现给出k值 ,求能使x取任意值都能使f(x)%65==0的最小a值。题解:数论,数学归纳法,使f(0)能整除65 然后 假设 f(x)能整除65 证明f(x+1)也能整除65,这样就能满足题意任意x的条件了。f(0)=0 能整除65, f(1)=18+ka 能整除65(假设的),假设f(

2015-08-12 18:39:19 318

原创 HDU 1205 吃糖果

题目地址:点击打开链接思路:参考别人的,仔细想想其实不那么难的把最多的那种 M(共计max个) 摆成一列,产生max-1个间隔,对于M来说,其他的糖果都是异类 (共计 sum-max个),可以用来填充间隔,但是如果sum-max能被填满,所以会有相邻的M,不符合要求 printf("No\n");当sum-max>=max-1时,M的间隔一定能被填满  printf("Yes\

2015-08-12 18:23:24 717

原创 HDU 1238 Substrings

题目地址:点击打开链接思路:string的子串:string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串int find(const string &s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置查找成功时返回所在位置,失败返回string::npos的值AC代

2015-08-12 18:10:25 311

原创 HDU 1128 Self Numbers

题目地址:点击打开链接思路:挺好的一题,刚开始以为很难,没写出来,没想到从1开始做个循环就可以了AC代码:#include#includebool a[1000005];int main(){ int i,k,sum; memset(a,true,sizeof(a)); for(i=1; i<1000000; i++) { sum = 0; k = i;//

2015-08-12 17:59:17 401

原创 HDU 1260 Tickets

题目地址:点击打开链接思路:刚开始就想错了,能看出来是动态规划,但是就是想不出具有最优子结构的递推式,我想到的是每个人既可以与前面的一个人一起买,又可以和后面的一个人一起买,不具有无后向性的要求,看了别人的代码就醒悟了,汗,解释看代码,dp[i]表示的是前i个人买票所需要的时间,还有就是测试数据不会超过24小时,不用再对小时%24,午夜12点是am,中午12点是pmAC代码:#incl

2015-08-12 17:40:40 311

原创 HDU 1243 反恐训练营(最长公共子序列的变形)

题目地址:点击打开链接思路:最长公共子序列的变形AC代码:#include#include#define MAX 2500//别加分号int dp[MAX][MAX];char a[MAX],b[MAX],c[MAX];int max(int a,int b){ return a > b ? a : b;};int main(){ int n,d[MAX],

2015-08-12 16:48:56 406

原创 HDU 4730 We Love MOE Girls

题目地址:点击打开链接思路:挺有新意AC代码:#include#includechar a[120];int main(){ int t,i,m; scanf("%d",&t); for(i=1; i<=t; i++) { scanf("%s",a); m = strlen(a); if(a[m-1] == 'u' && a[m-2] == 's' &&

2015-08-12 16:26:27 293

原创 HDU 1200 To and Fro

题目地址:点击打开链接思路:水题AC代码:#include #include char a[110][21],str[210];using namespace std;int main(){ int n,i,j,k; while(cin>>n && n) { k = 0; cin>>str; for

2015-08-11 16:18:35 340

原创 HDU 1144 Prerequisites?

题目地址:点击打开链接思路:简单模拟AC代码:#includeint a[110];int main(){ int k,m,i,j,l,x,sum,flag; int c,r; while(scanf("%d%d",&k,&m) && k) { flag = 1; for(i=0; i<k; i++) { scanf("%04d",&a[i]);

2015-08-11 11:46:59 324

原创 HDU 1179 Ollivanders: Makers of Fine Wands since 382 BC.(最大匹配)

题目地址:点击打开链接思路:简单二分图匹配,代码粘的详解的,所以解释有点扯淡,对应关系是,为每个魔法棒找巫师,对应为每个光棍找妹子,注意光棍要从1开始循环,不能从0开始循环,不然会出错,导致的结果妹子的丈夫为0时,有时会再给她一个丈夫AC代码:#include#includeint lol[110][110],visit[110],cf[110],n;bool find(in

2015-08-11 11:39:29 385

原创 HDU 1082 Matrix Chain Multiplication

题目地址:点击打开链接思路:用map和stack即可解决AC代码:#include#include#include#includeusing namespace std;struct node{int row,col;};int main(){ int n,i,count; char c; map mar; cin>>n; for(i=0; i<n; i+

2015-08-11 10:27:02 402

原创 HDU 1321 Reverse Text

题目地址:点击打开链接思路:STLAC代码:#include#include#includeusing namespace std;int main(){ char a[70]; int t; string s; scanf("%d",&t); getchar(); while(t--) { cin.getline(a,80); s = a;

2015-08-11 10:21:42 323

C语言算法经典

C语言入门,C语言算法,C语言程序,C语言经典

2015-02-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除