- 博客(31)
- 收藏
- 关注
原创 7-20 棋盘覆盖
棋盘覆盖题目链接思路:将一个大棋盘分割为四个小棋盘,找到有特殊方格的小棋盘,然后将另外三个普通棋盘转化为三个有特殊方格的小棋盘加上一个L型骨牌,依次递归直到棋盘最简#include<bits/stdc++.h>using namespace std;int tile=1;int Board[1030][1030];//tr、tc为起始行列号,dr、dc为特殊点的行列号,size=2^k void ChessBoard(int tr,int tc,int dr,int dc,int
2021-11-23 11:18:50
154
原创 7-10 最长公共子序列
最长公共子序列题目链接一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=<x1,x2,…,xm>,则另一序列Z=<z1,z2,…,zk>是X的子序列是指存在一个严格递增的下标序列<i1,i2,…,ik>,使得对于所有j=1,2,…,k有:Xij=Zj 例如,序列Z=<B,C,D,B>是序列X=<A,B,C,B,D,A,B>的子序列,相应的递增下标序列为<2,3,5,7>。给定两个序列X和Y,当另一序
2021-11-16 20:38:09
170
原创 7-9 最长上升子序列
最长上升子序列题目链接一个数的序列bi,当b1<b2<…<bs的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,…,aN),我们可以得到一些上升的子序列(ai1 ,ai2,…,aik),这里1≤i1<i2<…<iK≤N。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。这些子序列中最长的长度是4,比如子序列(1,3,5,8)。你的任务,就是对于给定的序列,求出最长上升子序列的长度。输入格式:输入的
2021-11-12 22:07:47
602
原创 7-16 n皇后
n皇后下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将n个皇后放在棋盘上(有n× n个方格),使它们谁也不能被吃掉!这就是著名的n皇后问题。对于某个满足要求的n皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2…bn,其中bi为相应摆法中第i行皇后所处的列数.输入格式:一个整数n,表示棋盘大小。输出格式:输出所有满足要求的解,每行一个答案。最后输出一个数,表示一共有多少个解。输入样例:4结尾无空行输出样例:2 4 1 33 1 4 22结尾无空行
2021-11-10 22:21:16
409
原创 HDU-1176 免费馅饼
HDU-1176 免费馅饼题目链接:添加链接描述逆路径dp#include<bits/stdc++.h>#define maxx(a,b,c) max(a,max(b,c))#define MXT 100010#define MXX 15int n,dp[MXT][MXX];using namespace std;int main(){ int T,t,x,i,j; while(scanf("%d",&n),n){ t=0;
2021-06-02 20:42:05
70
原创 HDU-2084 数塔
HDU-2084 数塔题目链接:添加链接描述#include<bits/stdc++.h>using namespace std;int main(){ int C,N,i,j; int a[101][101],dp[101][101]; cin>>C; while(C--){ cin>>N; memset(dp,0,sizeof(dp)); fo
2021-06-02 19:31:48
68
原创 HDU-1058 Humble Numbers
HDU-1058 Humble Numbers代码链接:添加链接描述#include<bits/stdc++.h>#define smaller(a,b) (a<b?a:b)#define smallest(a,b,c,d) smaller(smaller(a,b),smaller(c,d))using namespace std;long long dp[6000];int main (){ int n1,n2,n3,n4; int i; dp[1]=1; n1=
2021-05-23 11:29:09
57
原创 HDU-2067 小兔的棋盘
HDU-2067 小兔的棋盘题目链接:添加链接描述思路: 卡特兰数#include<bits/stdc++.h>using namespace std;int main (){ long long f[40]={0}; int i,j; f[0]=1; f[1]=1; for(i=2;i<=35;i++){ for(j=0;j<i;j++){ f[i]+=f[j]*f[i-j-1]; } } int n,c=1; while(~scanf("
2021-05-19 20:30:07
57
原创 HDU-2045 RPG难题
HDU-2045 RPG难题题目链接:添加链接描述#include<bits/stdc++.h>using namespace std;int main (){ long long f[51]; int i; f[1]=3; f[2]=6; f[3]=6; for(i=4;i<51;i++) f[i]=f[i-1]+2*f[i-2]; int n; while(~scanf("%d",&n)){ cout<<f[n]<<en
2021-05-18 20:57:37
55
原创 HDU-2047 阿牛的EOF牛肉串
HDU-2047 阿牛的EOF牛肉串题目链接:添加链接描述#include<bits/stdc++.h>using namespace std;int main (){ long long f[41]; int i; f[1]=3; f[2]=8; for(i=3;i<41;i++) f[i]=2*f[i-1]+2*f[i-2]; int n; while(~scanf("%d",&n)){ cout<<f[n]<<endl;
2021-05-18 20:37:22
65
原创 HDU-2190 重建希望小学
HDU-2190 重建希望小学题目链接:添加链接描述#include<bits/stdc++.h>using namespace std;int main (){ long long f[31]; int i; f[1]=1; f[2]=3; for(i=3;i<31;i++) f[i]=f[i-1]+2*f[i-2]; int c,n; cin>>c; for(i=0;i<c;i++){ cin>>n; cout<
2021-05-18 20:26:18
135
原创 HDU-2050 折线分割平面
HDU-2050 折线分割平面题目链接:添加链接描述思路: 第n条折线最多与前面每一条折线有4个交点,所以最多能增加4*(n-1)个交点,增加4*(n-1)+1个部分。#include<bits/stdc++.h>using namespace std;int main (){ long long f[10005]; int i; f[1]=2; for(i=2;i<=10001;i++) f[i]=f[i-1]+4*(i-1)+1; int c,n; cin&
2021-05-18 20:12:12
96
原创 HDU-2046 骨牌铺方格
HDU-2046 骨牌铺方格题目链接:添加链接描述#include<bits/stdc++.h>using namespace std;int main (){ long long fib[51]; int i; fib[0]=1; fib[1]=1; for(i=2;i<51;i++) fib[i]=fib[i-1]+fib[i-2]; int n; while(~scanf("%d",&n)){ cout<<fib[n]<<
2021-05-18 20:02:18
57
原创 HDU-2044 一只小蜜蜂
HDU-2044 一只小蜜蜂题目链接:添加链接描述**注意事项:**斐波那契数列的第49个数用int超出了,所以改用long long型#include<bits/stdc++.h>using namespace std;int main (){ long long fib[50]; int i; fib[0]=1; fib[1]=1; for(i=2;i<50;i++) fib[i]=fib[i-1]+fib[i-2]; int n,a,b; cin>
2021-05-18 19:53:02
63
原创 HDU-2041 超级楼梯
HDU-2041 超级楼梯题目链接:添加链接描述**思路:**递推,用数组存储结果减少运算量。#include<bits/stdc++.h>using namespace std;int main (){ int a[42],i; a[2]=1; a[3]=2; for(i=4;i<=40;i++){ a[i]=a[i-1]+a[i-2]; } int n,m; cin>>n; for(i=1;i<=n;i++){ cin>>
2021-05-17 21:20:49
62
原创 HDU-1863 畅通工程
HDU-1863 畅通工程题目链接:添加链接描述**思路:**基本类似HDU-1233添加链接描述,增加一个变量c记录已合并的城镇数,若还存在城镇未连通则输出“?”。#include<bits/stdc++.h>using namespace std;struct DDD{ int x,y,d; bool operator<(DDD D){return d<D.d;}}D[6050];int sum,c; int fa[110]; //fa[r]代表r的父节点
2021-05-13 19:39:58
86
原创 HDU-1233 还是畅通工程
HDU-1233 还是畅通工程题目链接:添加链接描述思路:运用Kruskal(克鲁斯卡尔)算法构造最小生成树#include<bits/stdc++.h>using namespace std;struct DDD{ int x,y,d; bool operator<(DDD D){return d<D.d;}}D[6050];int sum; int fa[110]; int find(int r){ if(r!=fa[r]) fa[r]=find(fa[
2021-05-12 20:46:04
71
原创 HDU-1232 畅通工程
HDU-1232 畅通工程链接添加链接描述分析:1.运用了并查集的思想,将互相连通的城镇看成一个集合,建设a与b之间的一条道路就是把a所在的集合与b所在的集合进行合并。2.使用find函数进行路径压缩,使得代码更加高效。3.将所有集合都看成一个点,则易得使n个点(城镇集合)全部连通所需要最少的边(道路)为n-1条.代码#include<bits/stdc++.h>using namespace std;int fa[1010]; //fa[r]代表r的父节点 int find
2021-05-11 20:39:26
90
原创 HDU-3183 A Magic Lamp
HDU-3183 A Magic Lamp添加链接描述贪心思想需注意输入有0的情况#include<bits/stdc++.h>using namespace std;int main (){ char ch[1010]; int a[100000]; int m,i,j,k,len; memset(ch,0,sizeof(ch)); while(cin>>ch>>m){ memset(a,0,sizeof(a)); len=strlen(
2021-05-09 16:33:45
74
原创 HDU-2037 今年暑假不AC
HDU-2037 今年暑假不AC添加链接描述#include<bits/stdc++.h>using namespace std;#define max 100struct j{ int s,e;};j a[max];int main (void){ int n,i; int c,t; while(scanf("%d",&n)&&n!=0){ for(i=0;i<n;i++){ scanf("%d %
2021-04-11 16:40:57
62
原创 HDU-1050 Moving Tables(贪心)
HDU-1050添加链接描述移桌子 利用贪心思想,找到重复经过次数最多的走廊即为最小移动趟数。 需注意2n与(2n+1)个房间是共用一个走廊的。#include<stdio.h>int main (void){ int i,j,k,T,N,s[200],t[200],tp1; int c[200],max; scanf("%d",&T); for(i=0;i<T;i++){ for(j=0;j<200;j++)
2021-04-11 15:51:09
86
原创 HDU-1052 田忌赛马
HDU-1052田忌赛马添加链接描述#include<stdio.h>int main (void){ int n,i,j,temp,tian[1000],wang[1000],tmax,tmin,wmax,wmin,qian; while(~scanf("%d",&n)&&n!=0){ for(i=0;i<n;i++){//输入并降序排序 scanf("%d",&tian[i]); for(j=
2021-04-06 20:57:22
87
原创 HDU-1009 贪心算法
HDU-1009FatMouse’ Trade添加链接描述#include<stdio.h>int main (void){ int n,i,j; double ml,t1,t2,t3,a[1000],b[1000],k[1000],javabean; while(~scanf("%lf %d",&ml,&n)&&(ml!=-1&&n!=-1)){ javabean=0.0; for
2021-04-06 19:23:17
90
原创 HDU-2199
HDU-2199Can you solve this equation?#include<stdio.h>double f(double x){ return 8*x*x*x*x+7*x*x*x+2*x*x+3*x+6;}int main (void){ int count; double a,b,mid,y; scanf("%d",&count); while(count--){ scanf("%lf",&y); a=0.0; b=100.0;
2021-04-05 20:15:01
46
原创 HDU-2899
HDU-2899Strange fuction#include<stdio.h>double y;double F(double x){ return 6*x*x*x*x*x*x*x+8*x*x*x*x*x*x+7*x*x*x+5*x*x-y*x;}double f(double x){ return 42*x*x*x*x*x*x+48*x*x*x*x*x+21*x*x+10*x-y;}int main (void){ int count; double a,b,mid
2021-04-05 20:05:15
50
原创 HDU-2035
HDU-2035人见人爱A^B#include<stdio.h>int main (void){ int a,b,i,index; while(~scanf("%d %d",&a,&b)&&(a||b)){ index=1; for(i=0;i<b;i++){ index*=a; if(index>1000) index%=1000; } printf("%d\n",index); } return 0
2021-04-05 19:43:13
48
原创 HDU-1097
HDU-1097A hard puzzle#include<stdio.h>int main (void){ int a,b; int p[10][10]={{0},{1},{6,2,4,8},{1,3,9,7},{6,4},{5},{6},{1,7,9,3},{6,8,4,2},{1,9}}; while(scanf("%d %d",&a,&b)==2){ if(b==0) printf("1\n"); else { a%=10; if(a==
2021-04-05 19:26:20
55
原创 HDU-1021
标题HDU-1021Fibonacci Again#include<stdio.h>int main (void){ int n; while(scanf("%d",&n)==1){ if((n+1)%4==3) printf("yes\n"); else printf("no\n"); } return 0;}
2021-04-05 18:38:38
92
原创 HDU-1019 Least Common Multiple
HDU-1019 Least Common Multiple添加链接描述#include<stdio.h>int gcd(long long a,long long b);//求最大公约数 int main (void){ int n,i,j,m; long long x,y; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d %lld",&m,&x); for(j=0;j<m-1;j++){
2021-03-30 20:21:45
71
原创 HDU-1108
HDU-1108 最小公倍数添加链接描述#include<stdio.h>int main (void){ int a,b,t,max,a1,b1; while(scanf("%d %d",&a,&b)==2){ max=1; a1=a; b1=b; while(max!=0){ if(a1<b1){ max=b1%a1;
2021-03-30 18:59:41
37
原创 HDU-1001
HDU-1001 Sum Problem添加链接描述#include<stdio.h>int main (void){ int a,s,i; while(scanf("%d",&a)==1){ s=0; for(i=1;i<=a;i++) s+=i; printf("%d\n\n",s); } return 0;
2021-03-30 18:53:36
71
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人