摘要:此题我觉得非常的亢爹,用while(cin>>n)输入肯定wa,原因不详,所以此题只能用while(scanf("%d",&n)!=EOF),作为输入语句。ac代码:View Code #include<iostream>using namespace std;const int M=38000;int dp[M];int main(){ /*freopen("in.txt","r",stdin); freopen("out1.txt","w",stdout);*
阅读全文
摘要:题意:中文题,此处省。ac代码:View Code #include<iostream>using namespace std;int map[12][12];int k; int foat;struct tree{ int i; int j;}node[90];int check(struct tree n,int p){ int i,j; int x,y; for(i=1;i<=9;i++)//判断行与列是否已经存在p { if(map[n.i][i]==p||map[i][n.j]==p) return 0; ...
阅读全文
摘要:题意:中文题,省。ac代码:View Code #include<iostream>#include<string.h>#include<algorithm>using namespace std;int a[15];int use[15];int foat;//判断是否要输出“NONE”int t,n;int k;//use[]数组中使用bool cmp(int a,int b){ return a>b;}void dfs(int s,int step,int k){ if(t==s) { foat=1; for(int i=0;i<k-1;i
阅读全文
摘要:题意:中文题,省。解法:线段树。注意:输入,输出最后用scanf(),printf(),其他的可能超时。ac代码:View Code //线段树,节点更新,区间求和#include<iostream>#include<string>using namespace std;const int M=50000+10;//最大区间int num[M];//记录每一个营的人数struct treestruct{ int left;//左区间 int right;//右区间 int sum;//区间求和}node[M*3];//节点数大约是最大区间的3倍int build(int
阅读全文
摘要:View Code #include<iostream>using namespace std;const int M=100000+9;struct treenode{ int left;//左区间 int right;//右区间 int sum; //区间之和}node[M*3];//节点数大约是最大区间的3被void build(int low,int top,int index)//功能:建树{ node[index].left=low; node[index].right=top; node[index].sum=0; if(low==top...
阅读全文
摘要:题意:第1列单调递增,第2列单调递减,满足这两个要求最长的子序列。ac代码:View Code #include<iostream>#include<stack>#include<algorithm>using namespace std;struct node{ int num;//记录输入的顺序 int weight; int rate; const bool operator<(struct node &d)const{ //重载小于号,作用:结构体中的元素按weight的升序排列 return weight<d.weight; }
阅读全文
摘要:题意:如题。ac代码:#include<iostream>#include<string>using namespace std;int change(string ch){ /*switch(ch) { case "zero":return 0; }*/ if(ch=="zero") return 0; if(ch=="one") return 1; if(ch=="two") return 2; if(ch=="three") return 3; if(ch==&qu
阅读全文
摘要:题意:输出最大子序列和。解法:DPac代码:#include<iostream>using namespace std;#define mem(x,y) memset(x,y,sizeof(x));const int M=100099;int a[M];//存储输入的数int sum[M];//sum[i]代表第i个为结尾的最大和int front[M];//front[i]代表以i为结尾的最大子串和的起始位置int main(){ int t; cin>>t; int l=1; while(t--) { mem(sum,0);mem(front,0...
阅读全文
摘要:题意:如题所说。注意:1.要考虑人是否能走到推箱子的地方 2.箱子经过的格子可以再次经过,而箱子经过同一个格子从同一个方向来的只能有一次 3.人不能穿过箱子解法:BFS+BFSAC代码:View Code //bfs+bfs#include<iostream>#include<queue>using namespace std;#define mem(x,y) memset(x,y,sizeof(x));//牛b的数组初始化,网上学的const int M=25;int useb[M][M][4],used[M][M];//用作标记useb[][][]之所以是三维数组是
阅读全文
摘要:题意:两点间的最短距离,并输出路径(按字典序排列),如何理解字典序,如:1>4>5>6的值等于1>2>5>6的值而且都为最短路径,此时必须输出:1>2>5>6解法:floydac代码:View Code #include<iostream>using namespace std;const int INT=0x7fffff;const int M=1000+99;int map[M][M];//存地图int d[M];//存每一个点的税金int path[M][M];//记录点i->j经过的点int n;void floy
阅读全文
摘要:题意:此题唯一亢爹的就是,输入的站号可能是负数,但是起点到终点的站号不可能是负数,下面举个例你就清楚了,如输入站号顺序为:-1 ,-2, -3, -4, 1, 2, 3, 4.若L1-L4,C1-C4分别为1 2 3 4 1 3 5 7,问1到5的最短路径,答案:3.很多我想你会认为不能到达,但最短路径确是3.原因是:-1(代号为1),-2(代号为2), -3(代号为3), -4(代号为4), 1(代号为5), 2(代号为6), 3(代号为7), 4(代号为8)问:1到5的最短路径其实是问-1到1的最短路径。2到5的最短路径其实是问-2到1的最短路径。8到5的最短路径其实是问4到1的最短路径。
阅读全文
摘要:题意:此题唯一亢爹的就是,输入的站号可能是负数,但是起点到终点的站号不可能是负数,下面举个例你就清楚了,如输入站号顺序为:-1 ,-2, -3, -4, 1, 2, 3, 4.若L1-L4,C1-C4分别为1 2 3 4 1 3 5 7,问1到5的最短路径,答案:3.很多我想你会认为不能到达,但最短路径确是3.原因是:-1(代号为1),-2(代号为2), -3(代号为3), -4(代号为4), 1(代号为5), 2(代号为6), 3(代号为7), 4(代号为8)问:1到5的最短路径其实是问-1到1的最短路径。2到5的最短路径其实是问-2到1的最短路径。8到5的最短路径其实是问4到1的最短路径。
阅读全文
摘要:VS2008快捷键大全VS2008 快捷键大全[转帖] Ctrl+m+Crtr+o折叠所有大纲 Ctrl+M+Crtr+P: 停止大纲显示 Ctrl+K+Crtr+C: 注释选定内容 Ctrl+K+Crtr+U: 取消选定注释内容 Ctrl+J : 列出成员 智能感知 Shift+Alt+Enter: 切换全屏编辑 Ctrl+B,T / Ctrl+K,K: 切换书签开关 Ctrl+B,N / Ctrl+K,N: 移动到下一书签 Ctrl+B,P: 移动到上一书签 Ctrl+B,C: 清除全部标签 Ctrl+I: 渐进式搜索 Ctrl+Shift+I: 反向渐进式搜索 Ctrl+F: 查找 Ct
阅读全文
摘要:c语言字符串函数详解 void *memset(void *dest, int c, size_t count); 将dest前面count个字符置为字符c. 返回dest的值. void *memmove(void *dest, const void *src, size_t count); 从src复制count字节的字符到dest. 如果src和dest出现重叠, 函数会自动处理. 返回dest的值. void *memcpy(void *dest, const void *src, size_t count); 从src复制count字节的字符到dest. 与memmove功能一样..
阅读全文
摘要:第一种方法:在优先队列中,优先级高的元素先出队列。标准库默认使用元素类型的<操作符来确定它们之间的优先级关系。优先队列的第一种用法,也是最常用的用法:priority_queue<int> qi;通过<操作符可知在整数中元素大的优先级高。故示例1中输出结果为:9 6 5 3 2第二种方法:在示例1中,如果我们要把元素从小到大输出怎么办呢?这时我们可以传入一个比较函数,使用functional.h函数对象作为比较函数。priority_queue<int, vector<int>, greater<int> >qi2;其中第二个参数为容
阅读全文
摘要:ac代码:View Code #include<iostream>using namespace std;int map[61];int use[21];int ss[22];int n;void dfs(int i){ if(i==n&&map[ss[i-1]+1]==0) { for(int l=0;l<n-1;l++) cout<<ss[l]<<" "; cout<<ss[n-1]<<endl; } else { for(int j=2;j<=n;j++) { ...
阅读全文
摘要:题意:地图中最多能放多少炮台。解法:深搜。ac代码:View Code #include<iostream>using namespace std;char map[8][8];int sum,maxi,n;bool check(int x,int y){ if(map[x][y]=='X')return 0; int i; for(i=x-1;i>=0;i--) { if(map[i][y]=='X')break; if(map[i][y]=='0')return 0; } for(i=y-1;i>=0;i--) { .
阅读全文