入门课程
mozeli
这个作者很懒,什么都没留下…
展开
-
hdu1053优先队列bfs
添加链接描述#include<bits/stdc++.h>using namespace std;string str;int num[30];int bfs(){ int a,b,sum=0; priority_queue<int,vector<int>,greater<int> > q; for(int i=0;i<=26;i++){ if(num[i]) q.push(num[i]); } if(q.size()==1) s原创 2021-07-22 11:07:25 · 67 阅读 · 0 评论 -
hdu1978记忆化dfs
添加链接描述#include<bits/stdc++.h>using namespace std;int t,n,m; int init[105][105];int ans[105][105];int dfs(int x,int y){ if(ans[x][y]>=0) return ans[x][y]; ans[x][y]=0; for(int i=0;i<=init[x][y];i++){//遍历所有一步能走到的点 for(int j=0;j<=ini原创 2021-07-21 20:45:14 · 75 阅读 · 0 评论 -
hdu1078记忆化dfs
添加链接描述#include<bits/stdc++.h>using namespace std;int n,k;int init[102][102];//当前奶酪数 int ans[102][102];//当前出发的最优解 int to[4][2]={0,1,0,-1,1,0,-1,0};//可走方向 bool ok(int x,int y){ if(x<0||x>=n||y<0||y>=n) return false; return true;}原创 2021-07-21 20:18:58 · 59 阅读 · 0 评论 -
hdu1536
添加链接描述#include<bits/stdc++.h>using namespace std;int k,a[100],f[10001];int sg(int x){ int i,t; int vis[101]; memset(vis,0,sizeof(vis)); for(i=0;i<k;i++){ t=x-a[i]; if(t<0) break; if(f[t]==-1) f[t]=sg(t); vis[f[t]]=1; } for(i=0原创 2021-07-21 16:47:42 · 60 阅读 · 0 评论 -
hdu2188
添加链接描述#include<bits/stdc++.h>using namespace std;int c,n,m;int main(){ cin>>c; while(c--){ cin>>n>>m; int t; t=1+m; if(n%t==0) printf("Rabbit\n"); else printf("Grass\n"); } return 0;}原创 2021-07-21 16:39:46 · 42 阅读 · 0 评论 -
hdu2149
添加链接描述#include<bits/stdc++.h>using namespace std;int n,m;int main(){ while(scanf("%d%d",&m,&n)!=EOF){ int t; t=1+n; if(m%t==0) printf("none\n"); else{ if(m>n) printf("%d\n",m%t); else if(m==n) printf("%d\n",m); else{原创 2021-07-21 16:05:08 · 39 阅读 · 0 评论 -
hdu1850
添加链接描述#include<bits/stdc++.h>using namespace std;int m;int a[105];int main(){ int s; while(scanf("%d",&m)!=EOF){ if(m==0) break; s=0; for(int i=0;i<m;i++){ scanf("%d",&a[i]); s=s^a[i]; } int c=0; for(int i=0;i<原创 2021-07-21 15:47:34 · 52 阅读 · 0 评论 -
hdu1849
添加链接描述#include<bits/stdc++.h>using namespace std;int m,ki;int f[1005];int sg(int x){ int i,j,t; int vis[1005]; memset(vis,0,sizeof vis); for(i=0;i<m;i++){ for(j=1;j<=x;j++){ t=x-j; if(t<0) break; if(f[t]==-1) f[t]=sg(t);原创 2021-07-21 15:20:01 · 61 阅读 · 0 评论 -
hdu1848
添加链接描述#include<bits/stdc++.h>using namespace std;int m,n,p;int s[1005];int f[1005];void sg(){ int i,j; int vis[1005]; memset(s,0,sizeof s); for(i=1;i<=1005;i++){ memset(vis,0,sizeof vis); for(j=1;f[j]<=i;j++) vis[s[i-f[j]]]=1;原创 2021-07-21 15:01:35 · 59 阅读 · 0 评论 -
hdu1847sg函数
添加链接描述#include<bits/stdc++.h>using namespace std;int n;int a[11],s[1005];int sg(int x){ int t; int vis[1005]; memset(vis,0,sizeof vis); for(int i=0;a[i]<=x;i++){ t=x-a[i]; if(s[t]==-1) s[t]=sg(t); vis[s[t]]=1; } for(int i=0;;i++){原创 2021-07-21 11:04:11 · 57 阅读 · 0 评论 -
hdu1846组合博弈
添加链接描述#include<bits/stdc++.h>using namespace std;int n,m;int c;int main(){ scanf("%d",&c); while(c--){ scanf("%d%d",&n,&m); int t; t=1+m; if(n%t!=0) printf("first\n"); else printf("second\n"); } return 0;}...原创 2021-07-21 10:45:01 · 72 阅读 · 0 评论 -
hdu1068
添加链接描述#include<bits/stdc++.h>using namespace std;int id1,id2,num,n;int g[1010][1010];int linker[1010];int used[1010];int dfs(int x){ for(int i=0;i<n;i++){ if(g[x][i]&&!used[i]){ used[i]=1; if(linker[i]==0||dfs(linker[i])){原创 2021-07-20 15:04:06 · 54 阅读 · 0 评论 -
hdu1151
添加链接描述#include<bits/stdc++.h>using namespace std;int g[125][125];int linker[125];int used[125];int s,e;int in,st;int dfs(int x){ for(int i=1;i<=in;i++){ if(g[x][i]&&!used[i]){ used[i]=1; if(linker[i]==0||dfs(linker[i])){原创 2021-07-20 11:05:44 · 44 阅读 · 0 评论 -
hdu1150
添加链接描述#include<bits/stdc++.h>using namespace std;int n,m,k;int ai,bi,id;int g[105][105];int linker[105];int used[105];int dfs(int x){ for(int i=0;i<m;i++){ if(g[x][i]&&!used[i]){ used[i]=1; if(linker[i]==0||dfs(linker[i]))原创 2021-07-20 10:31:14 · 68 阅读 · 0 评论 -
hdu1281
添加链接描述#include<bits/stdc++.h>using namespace std;int n,m,k;int x,y;int g[105][105];int vis[105];int linker[105];bool dfs(int x){ for(int i=1;i<=m;i++){ if(g[x][i]&&!vis[i]){ vis[i]=1; if(!linker[i]||dfs(linker[i])){ vi原创 2021-07-19 15:47:31 · 45 阅读 · 0 评论 -
hdu2063二分匹配
添加链接描述#include<bits/stdc++.h>using namespace std;int k,m,n;int g[505][505];int linker[505];bool used[505];bool dfs(int ai){ for(int bj=1;bj<=n;bj++){ if(g[ai][bj]&&!used[bj]){ used[bj]=true; if(linker[bj]==-1||dfs(linker[bj原创 2021-07-19 10:58:46 · 63 阅读 · 0 评论 -
hdu1241
添加链接描述#include<bits/stdc++.h>using namespace std;char a[105][105];int m,n;int w;int to[8][2]={{1,0},{-1,0},{0,1},{0,-1},{-1,-1},{-1,1},{1,-1},{1,1}};void dfs(int x,int y){ a[x][y]='*'; for(int i=0;i<8;i++){ int dx,dy; d原创 2021-07-18 16:03:33 · 66 阅读 · 0 评论 -
hdu1010dfs剪枝
添加链接描述#include<bits/stdc++.h>using namespace std;bool escape;int n,m,t,di,dj;int to[4][2]={1,0,-1,0,0,1,0,-1};char a[9][9];void dfs(int si,int sj,int cnt);int main(){ int i,j,si,sj; while(scanf("%d%d%d",&n,&m,&t)!=EOF){ if(n=原创 2021-07-18 11:16:08 · 903 阅读 · 0 评论 -
hdu1253
添加链接描述#include<bits/stdc++.h>using namespace std;int a,b,c,t;int vis[55][55][55];int step[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};struct pos{ int x,y,z; int time;};int ti;void bfs(int x,int y,int z){ pos s,q;原创 2021-07-16 16:36:04 · 59 阅读 · 0 评论 -
hdu1242优先队列bfs
添加链接描述#include<bits/stdc++.h>using namespace std;struct pos{ int x,y,t; friend bool operator<(pos a,pos b){ return a.t >b.t ; }};int n,m;int a,b,ti;int to[4][2]={{1,0},{-1,0},{0,1},{0,-1}};char vis[205][205];void bfs(){ priority原创 2021-07-16 16:30:23 · 52 阅读 · 0 评论 -
hdu1372跳马问题bfs
添加链接描述#include<bits/stdc++.h>using namespace std;struct pos{ int x,y,step;};int to[8][2]={1,2,1,-2,-1,2,-1,-2,2,1,2,-1,-2,1,-2,-1};//国际象棋骑士走法int vis[10][10];int ex,ey;char s[5],s1[5];int bfs(){ queue<pos> q; pos t,nex,sta; sta.x =s原创 2021-07-14 20:12:55 · 77 阅读 · 0 评论 -
hdu1495倒水问题BFS
添加链接描述#include<bits/stdc++.h>using namespace std;int s,m,n;int vis[101][101][101];struct pos{ int s,m,n; int step;}a[101];void bfs(){ queue<pos> q; memset(vis,0,sizeof vis); pos p1; p1.s =s; p1.m =0; p1.n =0; p1.step =0; q.push原创 2021-07-14 19:14:03 · 123 阅读 · 0 评论 -
hdu2680
添加链接描述#include<bits/stdc++.h>using namespace std;const int maxn=1e+7;int mins[1005][1005];int vis[1005],tim[1005];int n,m,s;void dij(int st){ for(int i=1;i<=n;i++){ vis[i]=0; tim[i]=mins[st][i]; } vis[st]=1; for(int i=1;i<=n;i++)原创 2021-07-14 11:26:57 · 45 阅读 · 0 评论 -
hdu2066
添加链接描述#include<bits/stdc++.h>using namespace std;const int maxn=1e+7;int tim[1005],vis[1005];int mins[1005][1005];int connect[1005],want[1005];int n;int main(){ int t,s,d; int i,j; while(cin>>t>>s>>d){ n=0; for(i=0;i原创 2021-07-13 16:33:43 · 64 阅读 · 0 评论 -
hdu1874最短路径
添加链接描述#include<bits/stdc++.h>using namespace std;const int maxn=1e+7;int dis[205],vis[205];int mins[205][205];int main(){ int n,m; int s,t; int i,j; int a,b,x; while(cin>>n>>m){ memset(vis,0,sizeof(vis)); memset(dis,maxn,s原创 2021-07-13 14:51:07 · 97 阅读 · 0 评论 -
hdu3496
添加链接描述#include<bits/stdc++.h>using namespace std;int dp[1005][10001],ti[1005],v[1005];//dp[i][j],i为消耗的时间,j为数量 int main(){ int t; int i,j,k; cin>>t; int n,m,l; while(t--){ cin>>n>>m>>l; for(i=1;i<=n;i++){ ci原创 2021-05-25 20:33:27 · 67 阅读 · 0 评论 -
hdu2159
添加链接描述#include<bits/stdc++.h>using namespace std;const int maxn=1e3+5;int a[maxn],b[maxn],dp[maxn],num[maxn];int main(){ int n,m,k,s; while(scanf("%d%d%d%d",&n,&m,&k,&s)!=EOF){ memset(dp,0,sizeof(dp)); me原创 2021-05-25 19:22:06 · 44 阅读 · 0 评论 -
hdu4508
添加链接描述#include<bits/stdc++.h>using namespace std;int a[101],b[101],dp[100001];int main(){ int n,m; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++){ scanf("%d%d",&a[i],&b[i]); } scanf("%d",&m); memset(dp,0,sizeof(原创 2021-05-24 19:45:55 · 56 阅读 · 0 评论 -
hdu1248
添加链接描述#include<bits/stdc++.h>using namespace std;int dp[10005];int a[10005],b[10005];int main(){ int t; cin>>t; int n; while(t--){ cin>>n; memset(dp,0,sizeof(dp)); a[0]=b[0]=150; a[1]=b[1]=200; a[2]=b[2]=350; for(in原创 2021-05-23 15:44:14 · 43 阅读 · 0 评论 -
hdu2191
添加链接描述#include<bits/stdc++.h>using namespace std;int dp[105];int p[105],h[202],c[105];int main(){ int C; cin>>C; while(C--){ int n,m; cin>>n>>m; for(int i=0;i<m;i++){ scanf("%d%d%d",&p[i],&h[i],&c[i原创 2021-05-23 14:57:32 · 45 阅读 · 0 评论 -
hdu1114
添加链接描述#include<bits/stdc++.h>using namespace std;int dp[10005];int main(){ int t,e,f; int n; int p[501],w[501]; int we; scanf("%d",&t); while(t--){ cin>>e>>f; we=f-e; cin>>n; for(int i=0;i<n;i++){ scanf(原创 2021-05-20 19:57:55 · 73 阅读 · 0 评论 -
hdu2602背包
添加链接描述#include<bits/stdc++.h>using namespace std;int n[1001],v[1001];int w[1001];int main(){ int t; int N,V; cin>>t; while(t--){ cin>>N>>V; for(int i=1;i<=N;i++){ cin>>n[i]; } for(int i=1;i<=N;i++){原创 2021-05-18 20:52:40 · 53 阅读 · 0 评论 -
hdu4165卡特兰数
添加链接描述#include<bits/stdc++.h>using namespace std;long long c[32];int main(){ int n; c[0]=1; c[1]=1; for(int i=2;i<=30;i++){ for(int j=0;j<i;j++){ c[i]+=c[i-j-1]*c[j]; } } while(cin>>n){ if(n==0) break; cout<<c[原创 2021-05-18 20:13:04 · 85 阅读 · 0 评论 -
hdu1421
添加链接描述#include<bits/stdc++.h>using namespace std;const int m=0x3f3f3f3f;int a[2005];int dp[2005][2005];//d[i][j]表示在前i个物体中拿走j个物体的最小疲劳度 int main(){ int n,k; while(~scanf("%d%d",&n,&k)){ for(int i=1;i<=n;i++){ scanf("%d",&a[原创 2021-05-18 19:55:06 · 41 阅读 · 0 评论 -
hdu1176
添加链接描述#include<bits/stdc++.h>using namespace std;int dp[100001][12];int main(){ int n; while(~scanf("%d",&n)){ if(n==0) break; memset(dp,0,sizeof(dp)); int x,t; int m=0; for(int i=0;i<n;i++){ scanf("%d%d",&x,&t);原创 2021-05-16 17:00:58 · 113 阅读 · 0 评论 -
hdu1257
添加链接描述#include<bits/stdc++.h>using namespace std;int main(){ int n; int h[30001],f[30001]; int i; while(cin>>n){ for(i=0;i<n;i++){ cin>>h[i]; } int c=0; memset(f,0,sizeof(f)); for(i=0;i<n;i++){ if(f[i]==0){原创 2021-05-16 16:32:59 · 101 阅读 · 0 评论 -
hdu2084数塔dp
添加链接描述#include<bits/stdc++.h>using namespace std;int dp[101][101],a[101][101];int main(){ int c,n,i,j; cin>>c; while(c--){ cin>>n; for(i=1;i<=n;i++){ for(j=1;j<=i;j++){ cin>>a[i][j]; } } for(i=n;i>原创 2021-05-10 20:43:47 · 83 阅读 · 0 评论 -
hdu1058
添加链接描述#include<bits/stdc++.h>using namespace std;int s[6000];int main(){ int n; int a=0,b=0,c=0,d=0; s[0]=1; int i,j; for(i=1;i<6000;i++){ if(s[a]*2<=s[b]*3&&s[a]*2<=s[c]*5&&s[a]*2<=s[d]*7) s[i]=s[a++]*2;原创 2021-05-10 20:19:53 · 52 阅读 · 0 评论 -
hdu2067卡特兰数
添加链接描述#include<bits/stdc++.h>using namespace std;long long f[36];int main(){ int i,j,n; f[0]=1; f[1]=1; long long sum=0; for(i=2;i<36;i++){ sum=0; for(j=0;j<i;j++){ sum+=f[j]*f[i-j-1]; } f[i]=sum; } int a=1; while(cin>原创 2021-05-09 16:22:21 · 113 阅读 · 0 评论 -
hdu2045
添加链接描述#include<bits/stdc++.h>using namespace std;long long f[51];int main(){ int n,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]; while(cin>>n){ cout<<f[n]<<endl; } return 0;}原创 2021-05-09 15:33:58 · 39 阅读 · 0 评论