SPOJ
2845xlc
这个作者很懒,什么都没留下…
展开
-
spoj 237
好牛的题 哈哈#include #include #define S(n) scanf("%d",&n)#define F(i,n) for(int i=1;i<=n;i++)using std::max;int a[110][110],T,m,n,f;main(){S(T);F(b,T){m=0;S(n);F(i,n)F(j,i)S(f),m=max(m,a[i][j]=f+max原创 2013-07-31 21:22:46 · 542 阅读 · 0 评论 -
spoj 362
规律还是比较好找的 大数除法#include#includeint len,a[1000],q;int cc[] = {0,1,2,5,9,8,6};bool check(int *a){ if(q == len) return false; for(int i = q; i < len; i++) if(a[i])原创 2013-08-09 14:29:54 · 636 阅读 · 0 评论 -
spoj 364
动规 f[i][j]表示第i到第j个数能取到的最大值 e[i][j]表示最小值 .......#include #include using namespace std;char a[110];int d[110];bool c[110];long long f[110][110],e[110][110];int main(){ int t; scanf("原创 2013-08-09 15:11:18 · 617 阅读 · 0 评论 -
spoj 1437
自己暴了一下不过 转一个 bfs... #include #include #include #include #define maxn 10010using namespace std;struct node{ int v,dist; node() {} node(int _v, int _dist) { v = _转载 2013-08-13 09:34:28 · 613 阅读 · 0 评论 -
spoj 2148
看似很水 却wa了好多遍 spoj上果然没有一下可以水过去的题.......#include#include#include#includeusing namespace std;int main(){ int t; scanf("%d",&t); while(t--) { long long n,a; lo原创 2013-08-13 10:29:58 · 611 阅读 · 0 评论 -
spoj 2178
好水......#include#include#include#include#includeusing namespace std;int a[20], b[20];int main(){ int A,D; while(scanf("%d%d",&A, &D) == 2 && A+D) { memset(a, 0, sizeof(a原创 2013-08-13 20:02:57 · 618 阅读 · 0 评论 -
spoj 24
大数 #include#include#include#include#includeusing namespace std;int a[2000];int main(){ int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); memse原创 2013-08-13 20:12:17 · 598 阅读 · 0 评论 -
spoj 390
简单题 记得uva上有个一样的 画个图就好了#include #include const double pi = acos(-1);int main (){ int a,b,s,m,n; while(scanf("%d%d%d%d%d",&a,&b,&s,&m,&n) == 5) { if(a+b+s+m+n == 0)原创 2013-08-15 09:39:56 · 534 阅读 · 0 评论 -
spoj 95
栈应用 ...... 水题#include#include#include#include#includeusing namespace std;int a[1010], b[1010];int main(){ int n; while(scanf("%d",&n) == 1 && n) { for(int i = 0; i < n原创 2013-08-14 10:54:14 · 668 阅读 · 0 评论 -
spoj 346
当一个数大于等于12 那分别处以2, 3, 4之后的和一定大于本身 但是直接递归会超时 然后发现有人用map存了 膜拜.....#include #include #include using namespace std;map d;long long cc(int x){ if(x < 12) return x; if(d[原创 2013-08-18 15:48:38 · 573 阅读 · 0 评论 -
spoj 138
离散化 去掉重复点 排序 二分查找#include#include#include#define maxn 40005using namespace std;int pp[maxn][2];int x[2*maxn],f[2*maxn];int d[2*maxn];int main(){ int t; scanf("%d",&t); whil原创 2013-07-26 20:53:31 · 580 阅读 · 0 评论 -
spoj 227
留着#include #include #include #define lson l, m, rt << 1#define rson m + 1, r, rt << 1 | 1const int MAXN = 200010;int pos[MAXN];int sum[MAXN << 2];// = MAXN*4int ans[MAXN];int N, id;voi转载 2013-07-29 20:58:56 · 589 阅读 · 0 评论 -
spoj 416
又臭又长的烂代码 ......#include #include #include #include #include #define maxn 1010using namespace std;char a[1010];int num[10],last;//bool cc(int sum)//{// if(sum%3 == 0)// retur原创 2013-07-29 20:48:27 · 647 阅读 · 0 评论 -
spoj 2
筛选法找素数 数据范围很大 1 一开始不知道怎么做 查了一下 先筛选出40000内的素数 再依靠这些素数筛选题目要求的素数#include #include #include #include #include #define maxn 40000using namespace std;int num_prime=0;bool vis[maxn];int pri原创 2013-10-06 15:58:56 · 605 阅读 · 0 评论 -
spoj 42
简单题 水水~~/************************************************************************* > Author: xlc2845 > Mail: xlc2845@gmail.com > Created Time: 2013年10月24日 星期四 13时33分17秒 **********原创 2013-10-24 13:39:54 · 695 阅读 · 0 评论 -
spoj 394
每段可以连续的串的可能性是个Fibonacci数列 但是直接dp更好吧~~#include #include using namespace std;char a[5010];int main(){ while(scanf("%s",a) && strcmp(a, "0")) { int len = strlen(a), cur = 1;原创 2013-08-09 12:26:13 · 648 阅读 · 0 评论 -
spoj 368
额 最小生成树 ........#include #include #include using namespace std;struct node{ int u,v,len; void f(int i, int j, int k) { u = i, v = j; len = k; } bool operat原创 2013-08-09 12:18:24 · 665 阅读 · 0 评论 -
spoj 78
数学 组合#include #include #include #include #include using namespace std;int main(){ int n,k,t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&k); double ans=1.0; if((n-k)<(k-1))原创 2013-07-26 15:18:40 · 495 阅读 · 0 评论 -
spoj 247
不管行列 总是先切割切割费用大的 代码比较烂 ......#include #include #include #include using namespace std;bool cmp(int a, int b){ return a > b;}int a[1010],b[1010];int main(){ int T; scanf("%d"原创 2013-07-30 19:40:17 · 529 阅读 · 0 评论 -
spoj 1108
要求输出一个牌的顺序 使每隔1、2、.....、n翻牌后出现1 2 3 4 5 6 7 8 9 .... n将牌想象成n个空格 正向推 空n个位置放n 循环 需优化#include #include #include #include #include #define maxn 30000using namespace std;int a[maxn],n;int f原创 2013-07-26 21:01:07 · 654 阅读 · 0 评论 -
spoj 274
离散化 枚举行 扫描横坐标#include #include #include #include #define inf 0x7fffffffusing namespace std;struct cc{ int x,y,val;};cc pp[1010];int k,line[1010],x[1010],cur;int _max,_min;int ma原创 2013-07-29 20:35:02 · 790 阅读 · 0 评论 -
spoj 147
dfs枚举真值 #include #include #include #include using namespace std;char s[120];bool ch[30];bool b[30];int cur[30];int len;int dfs(int m, int mm){ if(m == mm) { stack q;原创 2013-07-29 20:41:55 · 564 阅读 · 0 评论 -
spoj 297
就是对距离进行二分找最大值 ....#include #include #include #include using namespace std;int a[100010];int n,C;bool can(int lim){ int d = 0,w = 1; for(int i = 1; i < C; i++) { while(a[原创 2013-08-03 16:45:51 · 584 阅读 · 0 评论 -
spoj 345
DP 想了好久 还是看了一下题解。。。。 f[i][j]表示i到j全部合并后的最小花费,f[i][j] = min{f[i][k]+f[k+1][j]+d[i][k]*d[k+1][j]} (i #include #include #include #include using namespace std;#define INF 100000000int f[101][10原创 2013-08-19 11:13:46 · 800 阅读 · 0 评论 -
spoj 1436
用并查集看一下是否会围成一个环 若围成环直接输出NO 当然 当 m >= n 时必然会围成环直接输出NO#include #include #include using namespace std;int f[10010];int find(int x){ return f[x] == x ? x : f[x] = find(f[x]);}int main(原创 2013-08-06 20:36:57 · 695 阅读 · 0 评论 -
spoj 62
看了题解 自己好水 ......#include #include struct node{ int x,y;};node A,B;node add(node &a,node &b){ node f; f.x = a.x+b.x; f.y = a.y+b.y; return f;}node re(node &a,原创 2013-08-07 15:10:57 · 685 阅读 · 0 评论 -
spoj 338
题意: 无向图 每条边有长度和费用两个属性 求从点1到点n 在花费不超过 k 的情况下的最短路径BFS 使用优先队列 长度短的优先出列 题解上的方法没看懂 不知道怎么用链表维护 .....#include #include #include #include #include using namespace std;struct node原创 2013-08-07 16:47:22 · 891 阅读 · 0 评论 -
spoj 178
输出相邻的点 比较简单吧.......#include #include using namespace std;int main(){ int t,n; int G[200][200]; scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i = 0;原创 2013-08-20 14:08:45 · 515 阅读 · 0 评论 -
spoj 379
题是水题 但丫的题目意思太难懂 ....... 英语水平 ......#include #include #include #include using namespace std;int a[100010];int main(){ int n; while(scanf("%d",&n) && n) { for(int i = 1原创 2013-08-07 21:14:10 · 530 阅读 · 0 评论 -
spoj 39
DP 完全背包问题 的 d[i] = min(d[i], d[i-w]+p) #include #include #include #define INF 100000000using namespace std;int d[10010];int main(){ int t,n,m,wei; scanf("%d",&t); while(t--)原创 2013-08-20 16:08:09 · 574 阅读 · 0 评论 -
spoj 665
直接判 没什么算法 也没什么技巧 水水~~#include #include #include using namespace std;char a[500020];char b[500020];int main(){ int t; scanf("%d",&t); while(t--) { scanf("%s%s",a,b原创 2013-08-09 12:21:32 · 541 阅读 · 0 评论 -
spoj 375
树链剖分 此题是修改边的权值 shu'lian#include #include #include #include #include #include #include #include #include #include #include #include #include #define FFI freopen("in.txt", "r", stdin)原创 2014-10-02 12:42:33 · 553 阅读 · 0 评论