水算法
Arthur-Ji
不要崇拜,不要自卑
不要盲目相信高势能
不要随波逐流
脚踏实地
展开
-
二分查找、二分边界查找算法的模板代码总结
二分查找、二分边界查找算法的模板代码总结ChiuCheng发布于 2018-10-29 前言二分查找作为程序员的一项基本技能,是面试官最常使用来考察程序员基本素质的算法之一,也是解决很多查找类题目的常用方法,它可以达到O(log n)的时间复杂度。 一般而言,当一个题目出现以下特性时,你就应该立即联想到它可能需要使用二分查找:待查找的数组有序或者部分有序要求时间复杂度低于O(n),或者直接要求时间复杂度为O(log n)二分查找有很多种变体,使用时需要注意查找条件,判断条件和左右边界的更新转载 2021-04-08 12:37:07 · 315 阅读 · 0 评论 -
20201013携程研发笔试算法题
目录买饮料投币次数司机调度数组越界题目没记清,以下是大致描述买饮料投币次数现有一套贩卖机可以买可乐,该贩卖机只接受10,50,100的硬币。现在要买m瓶可乐,手里有a枚10元硬币、b枚50元硬币、c枚100元硬币,可乐的价格为 x (x为10的倍数)。每次投币优先选择面值较大的硬币,如可乐240,则我们优先投三枚100元硬币。贩卖机找零优先找面值较大的硬币,如刚才要找零60,则会选择一枚50元硬币和1枚10元硬币。每次只能买一瓶可乐(即每次都要经历投币,买可乐,找零)。输入描述:转载 2020-10-20 18:49:09 · 538 阅读 · 0 评论 -
[剑指offer] 数组中的逆序对
本文首发于我的个人博客:尾尾部落题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%100的数据,size<=2*10^5示例1输入1,2,3,4,5,6,7,0输出7解题思路很容易想到的方法就转载 2020-05-15 15:49:16 · 116 阅读 · 0 评论 -
HDU1048
#include<stdio.h>#include<string.h>#include<ctype.h>char h[27]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";char s[120];void hh(){ int i,j; for (i=0;i<=strlen(s);i++){ if (isupper(s[i])){ j=(原创 2016-10-22 12:07:36 · 389 阅读 · 0 评论 -
HDU1022 栈的简单 应用
#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;#include<stack>int main(){ int m; bool flage[20]; int i; char in[10],out[10]; while(scanf("%d %s%s",&原创 2016-10-22 12:05:29 · 401 阅读 · 0 评论 -
HDU1003
#include<stdio.h>int main(){ int t,n,i,a; int now,max,tep; int x,j; int pos1,pos2; scanf("%d",&t); for(i = 1; i <= t;i++) { scanf("%d%d",&n,&a); now = max原创 2016-10-22 12:04:50 · 436 阅读 · 0 评论 -
1002 好感人 终于 ac 了这题细节好多 传说中的大数
1002 好感人 终于 ac 了这题细节好多 传说中的大数#include<stdio.h>#include<string.h>int main(){ int n,i,j,len1,len2,k; char a1[1010],b1[1010]; int c[1010],y[1010],a[1010],b[1010]; scanf("%d",&n); ge原创 2016-10-22 12:03:48 · 675 阅读 · 0 评论 -
HDU1602
#include<stdio.h>#include<string.h>int main(){ int n,len,i,j; char a[1010],k[1010]; scanf("%d ",&n); while(n--){ gets(a); j=0; len=strlen(a); for(i=0;i原创 2016-10-22 12:09:55 · 434 阅读 · 0 评论 -
HDU1102
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int father[101];struct Road{ int a,b,cost;}road[5050];int cmp(Road a,Road b){ return a.cost < b.cost;}int fi原创 2016-10-22 12:10:42 · 470 阅读 · 0 评论 -
HDU1106
#include<stdio.h>#include<stdlib.h>#include<string.h>int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b;}int main(){ char s[1010]; int a[1010],i,j; char *gg; whi原创 2016-10-22 12:12:35 · 357 阅读 · 0 评论 -
HDU1229
#include<stdio.h>int main(){ int a,b,k,i,z; while(scanf("%d%d%d",&a,&b,&k)!=EOF&&a&&b){ z=10; for (i=2;i<=k;i++) z*=10; if(a%z==b%z)printf("-1\n"); else printf("%d\n",原创 2016-10-22 12:13:49 · 400 阅读 · 0 评论 -
HDU1234
#include<stdio.h>#include<string.h> struct note { char id[20]; char intime[20]; char outtime[20]; } s[1000];int main(){ char c[20]; int n,m,i,j,h,hh;原创 2016-10-22 12:14:47 · 407 阅读 · 0 评论 -
HDU1233最小生成树 prim
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct Road{ int c1,c2,cost;}road[5051];int father[101];int cmp(const Road a,const Road b){ return a.cost<b.cost原创 2016-10-22 12:14:20 · 428 阅读 · 0 评论 -
HDU1787 GCD again 欧拉公式 的运用
函数Eural就是欧拉公式的模板了,这里还是要有些注意的在在乘以(i-1)/i的时候,我们是先除再乘的,为什么这样做呢?因为这样可以避免中间结果的溢出,?而在for循环里边的条件写的也很有意思,我们并没有直接循环到N而是循环到了N??√,如果是22的话,那么岂不是循环到4就结束了么?别担心,N是动态变化的,而且我们可以保证N循环结束的时候是质数或者为1,因为不存在两个大于N??√的因子,如果有的话原创 2016-10-22 12:17:47 · 590 阅读 · 0 评论 -
HDU1716 next_permutation 的简单应用 排列2
#include<stdio.h>#include<algorithm>using namespace std;int main(){ int s[4]; int num = 0; while(scanf("%d%d%d%d",&s[0],&s[1],&s[2],&s[3])&&(s[0]||s[1]||s[2]||s[3])) { int t原创 2016-10-22 12:17:16 · 438 阅读 · 0 评论 -
HDU1702 队列 与 栈 基础题
#include<stdio.h>#include<string.h>#include<algorithm>#include<queue>#include<stack>using namespace std;int main(){ int n,m,t; char type[10]; scanf("%d",&n); while(n--) {原创 2016-10-22 12:16:30 · 466 阅读 · 0 评论 -
HDU 2014
#include<stdio.h>#include<stdlib.h>int comp(const void *a,const void *b){ return *(int*)a-*(int*)b;}int main(){ int a[100],i,j,n,average; while(scanf("%d",&n)!=EOF){ for (i=0;原创 2016-10-22 12:24:30 · 388 阅读 · 0 评论 -
HDU1898
#include<stdio.h>int main(){ int n,i,j,a,b,t; scanf("%d",&n); while(n--){ i=j=0; scanf("%d%d%d",&a,&b,&t); i=(t/a)*a; j=(t/b)*b; if(i>j)printf("Sem原创 2016-10-22 12:23:57 · 462 阅读 · 0 评论 -
HDU1879最小生成树 通畅工程
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct Road{ int c1,c2,cost,done;}road[5051];int father[110];int cmp(const Road a,const Road b){ return a.cost<b原创 2016-10-22 12:23:29 · 366 阅读 · 0 评论 -
HDU1877
#include<stdio.h>int rt(int c[],int n,int r) { int i; for(i=0; n>=r; i++) { c[i]=n%r; n=n/r; } c[i]=n; return i;}int main() { int i,p,n,a,b; while(scanf("原创 2016-10-22 12:19:51 · 459 阅读 · 0 评论 -
HDU1875 通畅工程再续 最小生成树
#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>using namespace std;struct Island{ int xi,yi,father,z;}island[101];struct Bridge{ int a,b; double price;}bridg原创 2016-10-22 12:19:22 · 371 阅读 · 0 评论 -
HDU1873 优先队列 看病
#include<stdio.h>#include<string.h>#include<algorithm>#include<queue>using namespace std;struct Patient{ int priority,key; friend bool operator < (Patient P1,Patient P2) { if(原创 2016-10-22 12:18:52 · 396 阅读 · 0 评论 -
HDU2015
#include<stdio.h>int main(){ int i,j,k,n,m,a[100],average; a[1]=2; for (k=2;k<=100;k++) a[k]=a[k-1]+2; while(scanf("%d%d",&n,&m)!=EOF){ for (i=1;i<=n/m;i++){ avera原创 2016-10-22 16:46:42 · 527 阅读 · 0 评论 -
HDU 2016
#include<stdio.h>int main(){ int i,n,gg; __int64 a[100],min; while(scanf("%d",&n)&&n!=0){ for (i=1;i<=n;i++) scanf("%I64d",&a[i]); min=a[1]; for (i=1;i<=n;i原创 2016-10-22 16:47:04 · 485 阅读 · 0 评论 -
HDU2018
#include<stdio.h>int main(){ int m,a[55],i; a[1]=1; a[2]=2; a[3]=3; a[4]=4; for (i=5;i<=55;i++) a[i]=a[i-1]+a[i-3]; while(scanf("%d",&m)&&m) print原创 2016-10-22 16:47:27 · 385 阅读 · 0 评论 -
HDU2019
#include<stdio.h>int main(){ int m,n,i,j,a[110]; while(scanf("%d%d",&n,&m)){ getchar(); if(n==0&&m==0)break; for(i=1;i<=n;i++) scanf("%d",&a[i]); a[n+1原创 2016-10-22 16:47:54 · 429 阅读 · 0 评论 -
HDU2020
#include<stdio.h>#include<math.h>int main(){ int m,a[110],i,j,t; while(scanf("%d",&m)&&m!=0){ for(i=1;i<=m;i++) scanf("%d",&a[i]); for(i=1;i<=m;i++) for(j原创 2016-10-22 16:48:20 · 455 阅读 · 0 评论 -
HDU2021
#include<stdio.h>int main(){ int n,i,m,sum; while(scanf("%d",&n),n){ sum=0; while(n--){ scanf("%d",&m); sum+=m/100; m%=100;原创 2016-10-22 16:48:39 · 632 阅读 · 0 评论 -
HDU2022
#include <math.h>#include <stdio.h>int main(){ int i, j,m,n,x,y,a,t; while (scanf("%d%d", &n, &m) != EOF) { a=x=y= 0; for (i = 1 ; i <=n ; i++) { for (j原创 2016-10-22 16:49:00 · 480 阅读 · 0 评论 -
HDU2023平均分
#include<stdio.h>int main(){ bool flage; double average[6]; int i,j; int sum; int n,m,s[55]; int grade[55][6]; while(scanf("%d%d",&n,&m)!=EOF){ for(i=0;i<n;i++){原创 2016-10-22 16:49:28 · 395 阅读 · 0 评论 -
HDU2024 标识符
#include<stdio.h>#include<string.h>int main(){ char s[55]; int n,m,i; while(scanf("%d",&n)!=EOF){ getchar(); while(n--){ gets(s); m=strlen(s); if(原创 2016-10-22 16:49:49 · 482 阅读 · 0 评论 -
HDU2025查找最大元素
#include<stdio.h>#include<string.h>int main(){ char s[110],t; int flage[110],i,m; while(scanf("%s",s)!=EOF){ m=strlen(s); t=s[0]; for(i=1;i<m;i++)原创 2016-10-22 16:50:13 · 340 阅读 · 0 评论 -
HDU2026 首字母改大写
#include<stdio.h>#include<string.h>int main(){ char s[110]; int m,i; while(gets(s)) { m=strlen(s); printf("%c",s[0]-32); for(i=1;i<m;i++){ if(s[i-原创 2016-10-22 16:50:47 · 472 阅读 · 0 评论 -
HDU2027统计元音
#include<stdio.h>#include<string.h>int main(){ int m,n,j,k; int a,e,i,o,u; char s[110]; while(scanf("%d",&m)!=EOF){ getchar(); for(j=0;j<m;j++) {原创 2016-10-22 16:51:15 · 380 阅读 · 0 评论 -
HDU2029回文字符
#include<stdio.h>#include<string.h>int main(){ int m,i,n; int flage; char s[100]; scanf("%d",&m); getchar(); while(m--) { memset(s,'\0',sizeof原创 2016-10-22 16:51:41 · 429 阅读 · 0 评论 -
HDU2030中文字数统计
#include<stdio.h>#include<string.h>int main(){ int m,n,i; int sum; char s[200]; scanf("%d",&m); getchar(); while(m--){ sum=0; gets(s); n=strlen(s);原创 2016-10-22 16:52:10 · 340 阅读 · 0 评论 -
HDU2031
#include <stdio.h>void zh(int n, int r){ if(n){ zh(n/r, r); if(n%r>9) printf("%c", n%r-10 +'A' ); else printf("%c",n % r + '0');}} main(){ int n,r; wh原创 2016-10-22 16:52:34 · 444 阅读 · 0 评论 -
HDU2032杨辉三角
#include<stdio.h>int main(){ int n,i,j; int s[35][35]; while(scanf("%d",&n)!=EOF){ for(i=1;i<=n;i++) for (j=1;j<=i;j++) { if(j==1||j==i)原创 2016-10-22 16:53:02 · 396 阅读 · 0 评论 -
HDU2033 时间加法
#include<stdio.h>int main(){ int ah,am,as,bh,bm,bs; int h,m,s; int n; scanf("%d",&n); while(n--){ scanf("%d%d%d%d%d%d",&ah,&am,&as,&bh,&bm,&bs); s=(as+bs)%60;原创 2016-10-22 16:53:25 · 371 阅读 · 0 评论 -
HDU2034
#include<stdio.h>#include<stdlib.h>#include<algorithm>using namespace std;int cmp(const void *m,const void *n){ return (*(int *)m-*(int *)n);}int main(){ int m,n,i,c1[101],c2[101]; w原创 2016-10-22 16:53:45 · 470 阅读 · 0 评论