摘要:
1,注意字符串的应用0在开头的输出2,注意输出格式俩个数字之间有空列,两个整数之间有空行3,模拟输出一定要注意找规律,是一行一行的输出#include<cstdio>#include<iostream>#include<string>using namespace std;int nums[100000000];int bits(string num)//计算数字的位数并将其整理成数组{ int n,i; i=1; n=num.length(); for(i=0;i<n;i++) nums[i]=num[i]-48; return n;}int ma. 阅读全文
摘要:
#include <cstdio>#include <iostream>#include <queue>using namespace std;int dir[8][2]={{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{-2,1},{2,-1},{-2,-1}};int vis[9][9];int sx,sy,ex,ey;struct node{ int x,y,step;};int num;queue<node> q; void bfs(int x1,int y1) { int i; while(!q.empty()) 阅读全文
摘要:
1,看问题一定要深入实质性的东西2,计算几何题注意角度的计算,有时能减少不少计算量3,做题时一定要注意大量题型的训练,能熟练运用各种题型的分析方法、技巧找到解题方法4,注意解题方法的总结归纳5,区间顺序的选择三层循环的DP6,选择满足条件的指定对象,注意条件的预处理,减少循环的次数7,对多个对象的元素进行选取,视图化用搜索8,对无法表示的图论map,可以考虑并查集、矩阵压缩9,回溯和深搜区别:前者是求有多少种情况,后者是能否出现这种情况10,二分、三分一般是用于求于求达到一定要求的未知数,可以是多个,一定要选出一个进行分,其他的未知数有其计算得出,用要求进行方向判断,小还是大了11,区间型的D 阅读全文
摘要:
#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;int a[1005][1005],vis[1005][1005];int dic[4][2]={{0,1},{0,-1},{1,0},{-1,0}};int n,m;struct node{ int x,y,dir,corner;};node start,end;void bfs(){ queue<node> q; int i; node pre,cur; 阅读全文
摘要:
充分利用下标的资源,tree[]表示节点含有的数据个数#include <stdio.h>const int MAXN=262144;int tree[MAXN<<1];int pos;void build(int l,int r,int rt){ tree[rt]=r-l+1;//表示节点含有的数据个数 if(r==l) return ; int m=(r+l)/2; build(l,m,rt*2); build(m+1,r,rt*2+1);}void update(int p,int l,int r,int rt){ tree[rt]--;//更新节点的数的个数 i 阅读全文
摘要:
#include <stdio.h>#include <math.h>#include <string.h>int r;int abs(int a){ if(a<0) return -a; return a;}int judge(int a,int b){ int k=abs((r-a)*(r-a)+(r-b)*(r-b)-r*r); if(k<=3) return 1; else return 0;}int main(){ int t,i,j,u=1; scanf("%d",&t); while(t--) { sca 阅读全文
摘要:
#include <stdio.h>#include <stdlib.h>struct node{ int c; int d;}nodes[100010];int cmp(const void * a,const void * b){ return (*(node *)a).d-(*(node *)b).d;}int main(){ int t,n,i,k=1; __int64 max,sum; scanf("%d",&t); while(t--) { max=0; sum=0; scanf("%d",&n); f 阅读全文
摘要:
#include <stdio.h>#include <malloc.h>int n,m,c;struct node{ int data; struct node * next;};void InitList(node * H){ H=(node *)malloc(sizeof(node)); H->next=NULL;}void CreateFromHead(node * H){ node *s; node *r; r=H; for(int i=1;i<=n;i++) { s=(node *)malloc(sizeof(node)); s->data 阅读全文
摘要:
从后往前#include <stdio.h>int abs(int s){ if(s<0) return -s; return s;}int main(){ int t,n,i,j,a[1010],sum,min,k=1; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&a[i]); min=abs(a[1]); //printf("%d\n",min); for(i 阅读全文
摘要:
有两个模板 注意模板使用时的数据改变#include <iostream>#include<cstdio>#include<cstdlib>#include<string.h>#define MAX_VOLUMN 100001#define MAX_N 11#define max(a,b) ((a)>(b) ? (a) : (b))using namespace std;int vol, n; // 背包容量 ;数量int cv[MAX_VOLUMN], num[MAX_VOLUMN], f[MAX_VOL... 阅读全文