Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >OJ算法题

OJ算法题

作者头像
chenchenchen
发布于 2023-01-30 09:04:37
发布于 2023-01-30 09:04:37
3620
举报
文章被收录于专栏:chenchenchenchenchenchen

1331 是否可达、keda

#include <stdio.h> #include <string.h> #define MAX 1000 struct Node{     int v,net; }; struct Node node[MAX]; int main(){     int n,e,t,i,x,y,z,head[MAX],que[MAX],map[MAX/2][MAX/2],qh,qt;     while(scanf("%d %d",&n,&e)!=EOF){         memset(head,-1,sizeof(head));         for(i = 0;i < e;i++){             scanf("%d %d",&x,&y);             node[i].v = y;             node[i].net = head[x];             head[x] = i;         }         scanf("%d",&t);         while(t--){             z = 0;             memset(map,0,sizeof(map));             qh = qt = 1;             scanf("%d %d",&x,&y);             if(x == y){                 printf("yes\n");                 continue;             }             que[qt++] = x;             while(qh < qt){                 for(i = head[que[qh]];i != -1;i = node[i].net){                     if(map[que[qh]][node[i].v] == 0){                         map[que[qh]][node[i].v] = 1;                         que[qt++] = node[i].v;                     }                     if(node[i].v == y){                         z = 1;                         break;                     }                 }                 if(z == 1) break;                 qh++;             }             if(z == 1) printf("yes\n");             else printf("no\n");         }         printf("\n");     }     return 0; }

1351 二分查找、erfen

#include <stdio.h> #define MAX 200000 int a[MAX],b[MAX]; void search(int x,int len){     int low = 0,high = len-1;     while(low <= high){         int mid = (low + high)/2;         if(a[mid] == x){             printf("%d\n",mid);             return;         }else if(a[mid] > x){             high = mid - 1;         }else{             low = mid + 1;         }     }     printf("Not Found\n"); } int main(){     int M,N,i;     scanf("%d",&M);     getchar();     for(i = 0;i < M;i++){         scanf("%d",&a[i]);     }     scanf("%d",&N);     for(i = 0;i < N;i++){         scanf("%d",&b[i]);     }     for(i = 0;i < N;i++){         search(b[i],M);     }     return 0; }

1360 快速排序、kuaipai

#include <stdio.h> #define MAX 100000 int a[MAX],n; void show(){     for(int i = 0;i < n;i++){         printf("%d ",a[i]);     }     printf("\n"); } void quicksort(int begin,int end){     if(begin < end){         int root = a[begin];         int m = begin,n = end;         while(m < n){             while(m < n){                 if(a[n] < root){                     a[m] = a[n];                     break;                 }else{                     n--;                 }             }             while(m < n){                 if(a[m] > root){                     a[n] = a[m];                     break;                 }else{                     m++;                 }             }         }         a[m] = root;         show();         quicksort(begin,m-1);         quicksort(n+1,end);     } } int main(){     scanf("%d",&n);     getchar();     for(int i = 0;i < n;i++){         scanf("%d",&a[i]);     }     quicksort(0,n-1);     return 0; }

1503 捕牛记、puniu

#include<stdio.h> #include<string.h> int v[1000000],p[1000000],s[1000000]; int main(){ int n,m,h,t; while(scanf("%d%d",&n,&m)!=EOF&&n!=-1){ h=0,t=1; memset(v,0,sizeof(v)); memset(p,0,sizeof(v)); memset(s,0,sizeof(v)); v[n]=1,p[t]=n; while(h<t){

h++;

if(p[h]==m){

printf("%d\n",s[h]); break; } if(v[p[h]-1]==0&&p[h]-1>=0) t++,p[t]=p[h]-1,s[t]=s[h]+1,v[p[h]-1]=1; if(v[p[h]+1]==0&&p[h]+1<=100000) t++,p[t]=p[h]+1,s[t]=s[h]+1,v[p[h]+1]=1; if(v[2*p[h]]==0&&2*p[h]<=100000) t++,p[t]=2*p[h],s[t]=s[h]+1,v[2*p[h]]=1;   }  }    return 0; }

1567 中位数、zhongwei

#include <stdio.h> #define MAX 1000000 int n; int a[MAX],b[MAX]; int main(){     scanf("%d",&n);     getchar();     for(int i = 0;i < n;i++){         scanf("%d",&a[i]);     }     for(int i = 0;i < n;i++){         scanf("%d",&b[i]);     }     int i=0,j=0,goal;     while(n--){         if(a[i] >= b[j]){             goal = b[j++];         }else{             goal = a[i++];         }     }     printf("%d\n",goal);     return 0; }

1901 最长公共子序列、zuichang

#include <stdio.h> #include <string.h> #define MAX 1001 char str1[MAX],str2[MAX]; int dp[MAX][MAX]; void cal(){     int len1 = strlen(str1);     int len2 = strlen(str2);     int len = len1 > len2 ? len1 :len2;     for(int i = 1;i <= len;i++){         dp[0][i] = 0;         dp[i][0] = 0;     }     for(int i = 1;i <= len1;i++){         for(int j = 1;j <= len2;j++){             if(str1[i-1] == str2[j-1]){                 dp[i][j] = dp[i-1][j-1] + 1;             }else{                 dp[i][j] = dp[i-1][j] > dp[i][j-1]? dp[i-1][j]:dp[i][j-1];             }         }     }     printf("%d\n",dp[len1][len2]); } int main(){     int T;     scanf("%d",&T);     getchar();     while(T--){         gets(str1);         gets(str2);         cal();     } }

1923 符号三角形问题、sanjiao

#include <stdio.h> #define MAX 26 int n,c,sum,half,p[MAX][MAX]; void Cal(int t){     if(t > n){         sum++;     }else{         int i,j;         for(i = 0;i < 2;++i){             p[1][t] = i;             c += i;             for(j = 2;j <= t;++j){                 p[j][t-j+1] = p[j-1][t-j+1]^p[j-1][t-j+2];                 c += p[j][t-j+1];             }             if(c <= half&&((t+1)*t/2-c) <= half){                 Cal(t+1);             }             c -= i;             for(j = 2;j <= t;++j){                 c -= p[j][t-j+1];             }         }     } } int main(){     int T,t=1;     scanf("%d",&T);     while(T--){         scanf("%d",&n);         c = 0;         sum = 0;         half = (n+1)*n/2;         if(half%2==0){             half/=2;             Cal(1);         }         printf("Case %d: %d\n",t++,sum);     }     return 0; }

1924 n后问题、nhou

#include <stdio.h> #include <stdlib.h> #define MAX 15 int n,sum,x[MAX]; int place(int k){     if(k == 1) return 1;     for(int i = 1;i < k;i++){         if((abs(k-i)==abs(x[k]-x[i]))||(x[k]==x[i])) return 0;     }     return 1; } void backtrack(int t){     if(t > n){         sum++;     }else{         for(int i = 1;i <= n;i++){             x[t] = i;             if(place(t)) backtrack(t+1);         }     } } int main(){     int T;     scanf("%d",&T);     getchar();     while(T--){         sum = 0;         scanf("%d",&n);         backtrack(1);         printf("%d\n",sum);     }     return 0; }

1925 最大团、tuan

#include <stdio.h> #include <stdlib.h> struct Node{     int **a,*x,*bestx;     int n,cn,bestn; }; void cal(struct Node *node,int i){     int j,flag = 1;     if(i > node->n){         for(j = 1;j <= node->n;j++){             node->bestx[j] = node->x[j];         }         node->bestn = node->cn;         return;     }     for(j = 1;j < i;j++){         if(node->x[j] == 1&&node->a[i][j] == 0){             flag = 0;             break;         }     }     if(flag){         node->x[i] = 1;         node->cn++;         cal(node,i+1);         node->cn--;     }     if(node->n + node->cn - i >= node->bestn){         node->x[i] = 0;         cal(node,i+1);     } } int main(){     int T,t = 1,i,n,m,x,y;     scanf("%d",&T);     while(T--){         scanf("%d %d",&n,&m);         int *v = (int *)malloc(sizeof(int)*(n+1));         int *temp = (int *)malloc(sizeof(int)*(n+1));         int **a = (int **)malloc(sizeof(int *)*(n+1));         for(i = 0;i <= n;i++){             a[i] = (int *)calloc(sizeof(int),n+1);         }         for(i = 1;i <= m;i++){             scanf("%d %d",&x,&y);             a[x][y] = 1;             a[y][x] = 1;         }         struct Node *node = (struct Node *)malloc(sizeof(struct Node));         node->a = a;         node->x = temp;         node->bestx = v;         node->n = n;         node->cn = 0;         node->bestn = 0;         cal(node,1);         printf("Case %d: %d\n",t++,node->bestn);     }     return 0; }

1927 旅行售货员问题、lvxing

#include<iostream>   #define N 100   using namespace std;   int n,m,w,               graph[N][N],          c=0,                  bestc=-1,              x[N],                bestx[N];      void swap(int &a,int &b){       int temp=a;       a=b;       b=temp;   } void backtrack(int k)  {       if(k==n)  {           if( (c+graph[x[n-1]][x[n]]+graph[x[n]][1]<bestc||bestc==-1) && graph[x[n-1]][x[n]]!=-1 && graph[x[n]][1]!=-1 )  {               bestc=c+graph[x[n-1]][x[n]]+graph[x[n]][1];               for(int i=1;i<=n;i++)  {                   bestx[i]=x[i];               }           }           return ;       }       else  {           for(int i=k;i<=n;i++)  {               if( graph[x[k-1]][x[i]]!=-1 && (c+graph[x[k-1]][x[i]]<bestc || bestc==-1))  {                   swap(x[i],x[k]);                   c+=graph[x[k-1]][x[k]];                   backtrack(k+1);                   c-=graph[x[k-1]][x[k]];                   swap(x[i],x[k]);               }           }       }   }  int main(void)  {   int i,j,tmp=1,testNum; cin>>testNum; while(tmp<=testNum){ cin>>n>>m; for(i=1;i<=n;i++) for(j=1;j<=n;j++) graph[i][j]=-1; for(int k=1;k<=m;k++){ cin>>i>>j>>w; graph[i][j]=w; graph[j][i]=w; } for(i=1;i<=n;i++)  {   x[i]=i;   bestx[i]=i;   }  backtrack(2);   cout<<"Case "<<tmp<<": "<<bestc<<endl; bestc=-1; c=0; tmp++; } return 0;   }  

1930 主元素、zhu

#include <stdio.h> #include <stdlib.h> #include <time.h> #define MAX 100001 int n,x,t[MAX]; int m2(){     int i = rand()%n+1;     x = t[i];     int k;     for(int j = 1;j <= n;j++){         if(t[j]==x) k++;     }     if(k > n/2) return 1;     else return 0; } int m1(){     int l = 100;     while(l--){         if(m2()) return 1;         else return m2();     } } int main(){     int T,i;     srand((int)time(0));     scanf("%d",&T);     while(T--){         scanf("%d",&n);         for(i = 1;i <= n;i++){             scanf("%d",&t[i]);         }         if(m1()) printf("%d\n",x);         else printf("no\n");     }     return 0; }

1940 用DFS计算pre和post、jisuan

#include <stdio.h> #include <stdlib.h> struct Node{     int flag,v,pre,post;     struct Node *next; }; int clock; struct Node node[1001]; void explore(int i){     if(node[i].flag == -1) return;     node[i].flag = -1;     node[i].pre = clock++;     struct Node *temp = &node[i];     while(temp->next){         if(temp->next->flag ==1) explore(temp->next->v);         temp = temp->next;     }     node[i].post = clock++; } void DFS(int v_count){     for(int i = 1;i <= v_count;i++){         if(node[i].flag == 1){             explore(node[i].v);         }     } } int main(){     int v_count,line_count,v_head,v_target;     while(scanf("%d",&v_count)!=EOF){         clock = 1;         scanf("%d",&line_count);         for(int i = 1;i <= v_count;i++){             node[i].flag = 1;             node[i].next = NULL;             node[i].v = i;         }         for(int i = 1;i <= line_count;i++){             scanf("%d %d",&v_head,&v_target);             struct Node *temp = &node[v_head];             struct Node *temp_next = temp->next;             while(temp_next != NULL&&temp_next->v<v_target){                 temp = temp_next;                 temp_next = temp_next->next;             }             if(temp_next == NULL){                 struct Node *n = (struct Node *)malloc(sizeof(struct Node));                 n->flag = 1;                 n->v = v_target;                 n->next = NULL;                 temp->next = n;             }else{                 struct Node *n = (struct Node *)malloc(sizeof(struct Node));                 n->flag = 1;                 n->v = v_target;                 n->next = temp_next;                 temp->next = n;             }         }         DFS(v_count);         for(int i = 1;i <= v_count;i++){             printf("%d ",node[i].pre);         }         printf("\n");         for(int i = 1;i <= v_count;i++){             printf("%d ",node[i].post);         }         printf("\n");     } }

1941 强连通分量、qiangliantong

#include<stdio.h> #include<string.h> int G[1001][1001]; int cG[1001][1001]; int v[1001]; int visited[1001]; int n, e; struct stack{     int data[1001];     int top; } s; void cDFS(int k); void DFS(int k); int count; int main(){     int i, j, k;     scanf("%d %d",&n,&e);     for(i=1;i<=n;i++){         v[i] = i;         visited[i] = 0;     }     for(k=1;k<=e;k++){         scanf("%d %d",&i,&j);         G[i][j] = 1;         cG[j][i] = 1;     }     s.top = -1;     for(i=1;i<=n;i++)         if(!visited[i]){             cDFS(i);             s.top++;             s.data[s.top] = v[i];         }     i =0;     while(s.top!=-1){         i++;         v[i] = s.data[s.top];         s.top--;     }     count = 0;     memset(visited,0,sizeof(visited));     for(i=1;i<=n;i++)         if(!visited[v[i]]){             count++;             DFS(v[i]);         }     printf("%d",count); } void cDFS(int k){     int i;     visited[k] = 1;     for(i=1;i<=n;i++){         if(!visited[i] && cG[k][i]==1){             cDFS(i);             s.top++;             s.data[s.top] = v[i];         }     } } void DFS(int k){     int i;     visited[k] = 1;     for(i=1;i<=n;i++){         if(!visited[i] && G[k][i]==1)             DFS(i);     } }

1943 多重背包、duozhong

#include <stdio.h> #define N 100 #define C 10000 int main(){     int T;     scanf("%d",&T);     while(T--){         int n,c,w[N+1],v[N+1],m[N+1],i,j,k = 0,t,f[C]={0};         scanf("%d %d",&n,&c);         for(i = 1;i <= n;i++){             scanf("%d %d %d",&w[i],&v[i],&m[i]);             t = 1;             if(m[i] > 1){                 while(m[i] > t){                     k++;                     w[n+k] = w[i]*t;                     v[n+k] = v[i]*t;                     m[n+k] = 1;                     m[i]-=t;                     t*=2;                 }                 w[i]*=m[i];                 v[i]*=m[i];                 m[i] = 1;             }         }         for(i = 1;i <= n+k;i++){             if(m[i] == 1){                 for(j = c;j >= w[i];j--){                     f[j] = f[j] > f[j-w[i]]+v[i] ? f[j] : f[j-w[i]]+v[i];                 }             }else{                 for(j = w[i];j <= c;j++){                     f[j] = f[j] > f[j-w[i]]+v[i] ? f[j] : f[j-w[i]]+v[i];                 }             }         }         printf("%d\n",f[c]);     }     return 0; }

1945 二维背包、erwei

#include <stdio.h> #define MAX 1000 int T,i,j,k,max,N,C,L,v[MAX],w[MAX],p[MAX],f[MAX][MAX]; int main(){     scanf("%d",&T);     while(T--){         scanf("%d %d %d",&N,&C,&L);         for(i = 1;i <= N;i++){             scanf("%d %d %d",&v[i],&w[i],&p[i]);         }         for(i = 0;i <= L;i++){             for(j = 0;j <= C;j++){                 f[i][j] = 0;             }         }         for(i = 1;i <= N;i++){             for(j = L;j >= w[i];j--){                 for(k = C;k >= v[i];k--){                     max = f[j][k];                     if(max < f[j-w[i]][k-v[i]]+p[i]){                         max = f[j-w[i]][k-v[i]]+p[i];                     }                     f[j][k]=max;                 }             }         }         printf("%d\n",f[L][C]);     }     return 0; }

1946 分组背包、fenzu

#include <stdio.h> #define MAX 1000 int T,max,i,j,k,N,C,num[MAX],v[MAX][MAX],p[MAX][MAX],f[MAX]; int main(){     scanf("%d",&T);     while(T--){         scanf("%d %d",&N,&C);         for(i = 1;i <= N;i++){             scanf("%d",&num[i]);             for(j = 1;j <= num[i];j++){                 scanf("%d %d",&v[i][j],&p[i][j]);             }         }         for(i = 0;i <= C;i++){             f[i] = 0;         }         for(i = 1;i <= N;i++){             for(j = C;j >= 0;j--){                 for(k = 1;k <= num[i];k++){                     if(j >= v[i][k]){                         max = f[j];                         if(max < f[j-v[i][k]]+p[i][k]){                             max = f[j-v[i][k]]+p[i][k];                         }                         f[j] = max;                     }                 }             }         }         printf("%d\n",f[C]);     }     return 0; }

1948 最大子矩阵和、zuida

#include <stdio.h> #define MAX 400 int main(){     int i,j,k,temp,max,m,n,flag,map[MAX][MAX];     while(scanf("%d %d",&m,&n)!=EOF){         flag = 0;         for(i = 0;i < m;i++){             for(j = 0;j < n;j++){                 scanf("%d",&map[i][j]);             }             for(k = 0;k < i;k++){                 for(j = 0;j < n;j++){                     map[k][j] += map[i][j];                 }             }             for(k = 0;k <= i;k++){                 for(j = n-1;j >= 0;j--){                     if(j == n-1) max = map[k][j];                     else max = map[k][j] > (map[k][j] + max) ? map[k][j] : (map[k][j] + max);                     if(flag == 0){                         temp = max;                         flag = 1;                     }else{                         temp = temp > max ? temp : max;                     }                 }             }         }         printf("%d\n",temp);     }     return 0; }

2005 输油管道、shuyou

#include <stdio.h> #include <math.h> #include <algorithm> #define MAX 10000 using namespace std; int cmp(int x, int y){     return x < y; } int main(){     int n,x,y,b[MAX]={0};     scanf("%d",&n);     for(int i = 0;i < n;i++){         scanf("%d %d",&x,&y);         b[i] = y;     }     sort(b,b+n,cmp);     int c = b[n/2];     int res = 0;     for(int i = 0;i < n;i++){         res += abs( c - b[i]);     }     printf("%d\n",res); }

2028 租用游艇问题、youting

#include <stdio.h> #define MAX 201 int money[MAX][MAX]; void cal(int n){     int i,j = n,k,h = n-1;     for(i = n-2;i >= 1;i--){         for(k = h;k <= n-1;k++){             if(money[i][j]>(money[i][k]+money[k][j])){                 money[i][j] = money[i][k]+money[k][j];             }         }         h--;     }     printf("%d\n",money[1][n]); } int main(){     int n,i,j,k = 2;     scanf("%d",&n);     for(i = 1;i <= n-1;i++){         for(j = k;j <= n;j++){             scanf("%d",&money[i][j]);         }         k++;     }     cal(n);     return 0; }

2060 子集和问题

#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int a[7000]; bool book[7000]; int b[7000]; int n,c; int flag; int mark; void dfs(int step,int sum) {     if(step==n) {     if(sum<c)             mark=1;         return ;     }     if(mark)         return ;     if(a[step]>c)         return ;     if(sum>c)         return ;     if(flag)         return ;     int i;     if(sum==c)     {         flag=1;         for(i=0;i<step-1;i++)             printf("%d ",b[i]);         printf("%d \n",b[i]);         return ; }     for(i=0;i<n;i++)     {         if(book[i]==0)         {             book[i]=1;             b[step]=a[i];             dfs(step+1,sum+a[i]);             book[i]=0;         }     } } int main(void) {     while(scanf("%d%d",&n,&c)!=EOF)     {         int i;         for(i=0;i<n;i++)         scanf("%d",&a[i]);         memset(book,0,sizeof(book));         sort(a,a+n);         flag=0;         mark=0;         if(a[0]>c)         {             printf("No Solution!\n");             continue ;         }         dfs(0,0);         if(flag==0||mark==1)             printf("No Solution!\n");     }     return 0; }

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
剑指OFFER之链表中倒数第k个节点(九度OJ1517)
题目描述: 输入一个链表,输出该链表中倒数第k个结点。 (hint: 请务必使用链表。) 输入: 输入可能包含多个测试样例,输入以EOF结束。 对于每个测试案例,输入的第一行为两个整数n和k(0<=n<=1000, 0<=k<=1000):n代表将要输入的链表元素的个数,k代表要查询倒数第几个的元素。 输入的第二行包括n个数t(1<=t<=1000000):代表链表中的元素。 输出: 对应每个测试案例, 若有结果,输出相应的查找结果。否则,输出NULL。 样例输入: 5 2 1 2 3 4 5 1 0 5
用户1154259
2018/01/18
4720
化繁就简(结构体在算法中的运用)
某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。
GeekLiHua
2025/01/21
410
华北水利水电大学-C程序设计作业
从键盘输入10个学生的有关数据,然后把它们转存到磁盘文件上去。其中学生信息包括学号、姓名、年龄、地址。要求:程序中有save()、read()函数分别用于保存学生的信息和读取学生的信息。
啊QQQQQ
2024/11/19
450
华北水利水电大学-C程序设计作业
各种基本算法实现小结(七)—— 常用算法
======================================================================
阳光岛主
2019/02/20
4100
C/C++ 常用排序算法整理
(伪)冒泡排序算法: 相邻的两个元素之间,如果反序则交换数值,直到没有反序的记录为止.
王瑞MVP
2022/12/28
2690
SDUT 2019 级程序设计基(B)II 实验1–结构体、共用体和枚举
先把原始信息存入a结构体数组中,然后挑选出符合条件的放入b数组,对b按要求冒泡,最后遍历输出
Here_SDUT
2022/06/29
2950
acmer之路(3)四月第一周日志
这一周加入了院足球队,好久都没有感受到在赛场上奔腾的感觉了。不过正好赶上清明,因此也算有充足的时间来码代码。这个月一共码了20题,排名终于冲进了四万名。
用户2145057
2018/09/12
5720
acmer之路(3)四月第一周日志
过去一周写过的算法题的一部分(dfs,贪心)
自我介绍:一个脑子不好的大一学生,c语言接触还没到半年,若涉及到效率等问题,各位都可以在评论区提出见解,谢谢啦
用户11039529
2024/03/25
1070
嵌入式day3学习(2022.1.8)
1、编写一个程序,此程序要求输入一个整数,然后打印出从输入的值(含)到比输入的值大 10(含)的所有整数值(比如输入 5,则输出 5 到 15)。要求在各个输出值之间用空格、制表符或者换行符分开。
天天Lotay
2022/12/02
2570
嵌入式day3学习(2022.1.8)
Light oj 1082 - Array Queries(区间最小值)
ST算法:先是预处理部分(构造RMQ数组),DP处理。假设b是所求区间最值的数列,dp[i][j] 表示从i到i+2^j -1中最值(从i开始持续2^j个数)。即dp[i][j]=min{dp[i][j-1],dp[i+2^(j-1)][j-1]},或者dp[i][j]=max{dp[i][j-1],dp[i+2^(j-1)][j-1]},这个过程的复杂度为:O(n(longn))
xindoo
2021/01/22
4120
算法竞赛入门【码蹄集新手村600题】(MT1551-1600)[通俗易懂]
(1)题目描述 有一个字符数组存有多个字符串(一个紧接一个) : i\0love\0my\0mother\0
全栈程序员站长
2022/11/08
1.2K0
简单模拟答案
C语言的写法(不知字符那里该怎么改,总是才输入5行左右就异常,下次再看)(挖坑,待解决)
可定
2020/04/20
3700
简单模拟答案
老年人康复训练:基础篇
大概已经一年半没碰算法了,为找工作康复训练一下。 目标:落谷题单刷完-https://www.luogu.com.cn/training/list 按住Ctrl+F输入P+题号即可快速查看代码位置 ---- 入门1-6 速刷,不写题目描述和思路。 P5703 #include<stdio.h> int main() { long long a,b; scanf("%d%d",&a,&b); printf("%d",a*b); return 0; } P5704 #include<stdio.h>
[Sugar]
2022/09/21
4660
c语言牛客网64-114题基础练习
如烟花般绚烂却又稍纵即逝
2024/11/26
1630
c语言牛客网64-114题基础练习
XMU oj Problem List
注意不要有不必要的输出,比如"请输入 a 和 b 的值: ",示例代码见隐藏部分。
glm233
2020/09/28
8320
HDU 5877 2016大连网络赛 Weak Pair(树状数组,线段树,动态开点,启发式合并,可持久化线段树)
Weak Pair Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1468    Accepted Submission(s): 472 Problem Description You are given a  tree of  nodes, labeled from 1 to . To the th node a non-n
ShenduCC
2018/04/27
7190
搜索专题
POJ  Best Sequence http://poj.org/problem?id=1699 题意:给你n个字符窜,求其所能拼接的最短长度。 分析:预处理下,dp[i][j]表示j接在i后头的最
用户1624346
2018/04/17
8160
808《数据结构》参考答案
1. 从键盘输入10个整数建立一个顺序表,编程求这10个整数的最大值和次大值并输出。
石璞东
2022/01/18
7070
如何提高编程能力?(中)
函数方程: y - f2 = (f2 - f1) / (x2 - x1)(x - x2) 化简得: x=(f2x1-f1x2)/(f2-f1)
公众号guangcity
2019/09/20
8340
动态规划集合
动态规划,少说也做了,30 40道了但是感觉还是没有入门,接下来一星期将重新做动态规划,hdu入门的,uva入门的,外加poj的,把动态规划都重新学一下 01背包知识点  1.Robberies (hdu2955)  (01背包变形) 第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱  最脑残的是把总的概率以为是抢N家银行的概率之和… 实际上可以将其转化为安全的概率,则两个概率相乘,就是两次抢劫的安全概率了。     正确的方程是:f[j]=max(dp[j],dp[j-
用户1624346
2018/04/17
1.1K0
相关推荐
剑指OFFER之链表中倒数第k个节点(九度OJ1517)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档