MDeath-Kid

- M I T & Y
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  ACM-POJ-报告

开始POJ的刷题生涯
摘要:图论的题目,求一个人通过虫洞或者普通路径进行行走,能不能在出发前回到原地,抽象成最短路回到原地权值为负。 我数组开505,RE了,结果改大了就A了。 MDK 3259 Accepted 860K 813MS G++ 2604B 2011-11-09 20:54:46#define MAXN 5050struct edge { int v; int dis; edge(int a=0,int ... 阅读全文

posted @ 2011-11-09 21:02 MDeath-Kid 阅读(230) 评论(0) 推荐(0)

摘要:第K短路。A*经典问题:要求两点间的K短路,则图中一个点最多如队列K次(这些都是结论),POJ 2449#define MAXN 10005constint INTMAX =0x7f7f7f7f;int minl[MAXN],vis[MAXN];int n, m, stx, sty, k, mark;struct node { int x; int dis;}u,s,v,t;struct edge { int v; int dis;}p;vector<edge> mat[10005];vector<edge> matT[10005];priority_queue< 阅读全文

posted @ 2011-11-09 20:38 MDeath-Kid 阅读(266) 评论(0) 推荐(0)

摘要:模拟题目,没什么难度。 //MDK 1573 Accepted 216K 0MS C++ 2460B 2011-11-08 19:31:29int n,m,ini;char mat[MAXN][MAXN];int vis[MAXN][MAXN];int go[4][2]={{-1,0},{1,0},{0,-1},{0,1}};int getgo(char c) { if(c == 'N') ret... 阅读全文

posted @ 2011-11-08 19:38 MDeath-Kid 阅读(212) 评论(0) 推荐(0)

摘要:巨复杂的一个模拟题。首先给的坐标系统和正常的二维数组下标不一样,需要你颠倒过来,这一来你的方向标就要颠倒。接着就模拟就行了。POJ 2632MDK2632Accepted212K16MSC++3365B2011-11-07 21:54:51struct roboot { int x,y; char dire;}R[MAXN];struct Ans { int ith; char dire; int rep;}A[MAXN];int a,b;int n,m;int mat[MAXN][MAXN];int go[4][2]={{0,1},{0,-1},{-1,0},{... 阅读全文

posted @ 2011-11-07 21:59 MDeath-Kid 阅读(341) 评论(0) 推荐(0)

摘要:模拟题目,先把P转换成 字符串 ,然后在求 Wq By an integer sequence P = p1 p2...pn where pi is the number of left parentheses before the ith right parenthesis in S (P-sequence).q By an integer sequence W = w1 w2...wn where for each right parenthesis, say a in S, we associate an integer which is the number of right pare 阅读全文

posted @ 2011-11-07 19:43 MDeath-Kid 阅读(537) 评论(0) 推荐(0)

摘要:看完这个题目后,果断没思路了,看了一下discuss,百度了一下,知道了什么是后缀式,前缀式,然后用后缀式+stack+位枚举水过了。换成C++提交MDK3295Accepted172K0MSC++2636B2011-11-07 16:59:540ms亲~~POJ 3295MDK3295Accepted704K16MSG++2636B2011-11-07 16:55:58stack<bool> st;char ss[MAXN];int len = 0;bool p, q, r, s, t;bool get_bit(int t,int x) { // 在 t 中,取出第 x 位 .. 阅读全文

posted @ 2011-11-07 17:00 MDeath-Kid 阅读(344) 评论(0) 推荐(0)

摘要:以前就做过的一道题目,结果程序中打错一个系数,WA了一段时间。。。POJ 2586MDK2586Accepted716K16MSG++1675B2011-11-07 15:52:32int main () { int d,s; while(~SCFD(s,d)) { int sum = 0; if(4 * s < d) { sum = 10 * s - 2 * d; } else if(3 * s < 2 * d) { sum = 8 * s - 4 * d; } else if(2... 阅读全文

posted @ 2011-11-07 15:55 MDeath-Kid 阅读(208) 评论(0) 推荐(0)

摘要:二分过的,注意对整数二分的时候,if判断要有=号,找了好长时间,自己都忘了。。POJ 2109MDK2109Accepted736K32MSG++1644B2011-11-06 21:18:20int n;double p;double cal(int x) { return pow(x,n);}int main () { while(~scanf("%d %lf",&n,&p)) { int ans; int L = 1,R = 1000000000; while(L <= R) { int mid = (L + R... 阅读全文

posted @ 2011-11-06 21:20 MDeath-Kid 阅读(286) 评论(0) 推荐(0)

摘要:纠结了很长时间,决定还是不写这个题目了,HOJ的过了,POJ一直WA,估计就是精度问题了,这个贪心思维挺会,精度控制就很无脑了,决定放弃这个题目,贴出来HOJ 1052的代码。HOJ 1052 POJ 1328#include <stdio.h>#include <iostream>#include <algorithm>#include <limits.h>#include <map>#include <cmath>#include <set>#define FOPEN freopen("D:\\1 阅读全文

posted @ 2011-11-06 20:47 MDeath-Kid 阅读(285) 评论(0) 推荐(0)

摘要:WA 11了 居然是没有去掉注释。。。。ORZ自己了,有自己一个响亮的耳光。没什么难度,状态转移,BFS,然后打出答案就行了,记得有个点会被change2次,在变一次就行了POJ 2965/***BFSMDK2965Accepted3620K782MSG++2590B2011-11-06 20:14:26*/struct node { int sta; int step; int prenode; int x,y; node(int a=0,int b=0,int c=0,int d=0,int e=0) :sta(a),step(b),prenode(c)... 阅读全文

posted @ 2011-11-06 20:18 MDeath-Kid 阅读(254) 评论(0) 推荐(0)

摘要:可以看的出来,我现在的水平大大的下降了,不知道是不是发烧烧糊涂了。。就当是了。这个题目DFS,BFS都能做,第一反应就是高斯消元,硬着头皮自己写了个BFS,发现什么都不会了,没hash判重,没有转移正确,都。。都恶心死自己了。纠结了2个小时,终于A了。谢天谢地。还有,POJ的hash_map不能用了,有谁知道怎么解决吗?BS下POJ总结BFSBFS 1 // node 2 struct node { 3 int sta; 4 int step; 5 node(int a,int b) { 6 sta = a; 7 step = b; 8 ... 阅读全文

posted @ 2011-11-06 18:11 MDeath-Kid 阅读(232) 评论(0) 推荐(0)

摘要:先打素数表,然后打表就OK了。水题一个。POJ 2739/*MDK2739Accepted796K0MSG++2305B2011-11-03 21:45:41*/LL mat[MAXN];bool is[MAXN];int prm[MAXN];int getprm(int n){ int i, j, k = 0; int s, e = (int)(sqrt(0.0 + n) + 1); memset(is, 1, sizeof(is)); prm[k++] = 2; is[0] = is[1] = 0; for... 阅读全文

posted @ 2011-11-03 21:47 MDeath-Kid 阅读(193) 评论(0) 推荐(0)

摘要:不得不说,这个题目不算很水,题目也看了很长时间,就读懂了是hash,还是看了discuss才懂了,安装频度比较。想一想,这个题目说可以安装任意的方式进行swap,可以+ - 任意大小进行转化,so 抓住频度这个特征。POJ 2159/*MDK 2159 Accepted 720K 79MS G++ 2493B 2011-11-03 21:23:24*/map<char,int> mp,mpt;map<char,int>::iterator p;VI vecs,vect;int main (){ char ss[MAXN],st[MAXN]... 阅读全文

posted @ 2011-11-03 21:27 MDeath-Kid 阅读(142) 评论(0) 推荐(0)

摘要:g++WAC++ ACdon't know why!代码流程控制有点多,还好AC了,为了避免精度损失,用的二分。POJ 3299/*MDK 3299 Accepted 220K 16MS C++ 3166B 2011-11-03 20:45:05 */double T,D,H;double get_e(double D){ return 6.11 * pow(EXP, 5417.7530 * ((1.0/273.16) - (1.0/(D + 273.16... 阅读全文

posted @ 2011-11-03 20:49 MDeath-Kid 阅读(224) 评论(0) 推荐(0)

摘要:poj 1042#define MAXNT 2000#define MAXV 60struct edge { int to; int va; edge(){} edge(int t,int v) {to = t;va = v;} bool operator < (const edge a) const { return va < a.va; }};vector<edge> adj[MAXV];int x,y,va;int V,M,stp;int path[MAXNT];bool visit[MAXNT],record[MAXV];void init() { SET(vi 阅读全文

posted @ 2011-08-12 16:35 MDeath-Kid 阅读(334) 评论(0) 推荐(0)

摘要:题目大意求一旋转向内的连线,可以想象成蜗牛的壳不得不说这个我弄的狠纠结,一开是用的Graham,带上模板,一WA到死,怒了,代码全删了,自己看过包裹法,又认真看了遍叉积,点积,自己写了个只用叉积的算法。算法思路:step 1: 第一次取y最小,y相等取x最小的点。p0step 2: 每次取第一个未标记的点pk,尝试拓展 p0-pk ,若发现存在pi 使得 p0-pi 在p0-pk 的左边(他们的叉积 < 0),则 k = i ;step 3: 重复执行step 2,直到取得所有点参考代码:HOJ 1696 1 struct POINT { 2 int x,y; 3 int idx; 4 阅读全文

posted @ 2011-08-10 17:52 MDeath-Kid 阅读(229) 评论(0) 推荐(0)

摘要:练习基本的计算几何。主要这个题意很BUG,线段在矩形内要T,这个看出来了,没看到输入不保证 -左上-右下-。。。POJ 1410/**9117030 MDK 1410 Accepted 688K 0MS G++ 2707B 2011-08-09 14:42:44*/using namespace std;struct POINT { int x,y; POINT(int a = 0,int b = 0) { x=a;y=b; }};struct LINESEG { POINT s; POINT e; LINESEG(POINT a,POINT b){s=a;e=b;} LINESEG() {} 阅读全文

posted @ 2011-08-09 14:48 MDeath-Kid 阅读(228) 评论(0) 推荐(0)

摘要:POJ 2823#define MAXN 1000003int a[MAXN];int n,m;struct node { int num,t;}q[MAXN];int head,rear;void add(int num,int i) { while(head <= rear && q[rear].num <= num) rear--; rear++; q[rear].num = num; q[rear].t = i;}void addmin(int num,int i) { while(head <= rear && q[rear].num 阅读全文

posted @ 2011-08-08 17:29 MDeath-Kid 阅读(337) 评论(0) 推荐(1)

摘要:求相交的公路,对N排序,然后对M求逆序对,不过要求有相交的,必然要求在次城市后面,所以int sumge = i - (qur(s[tmp].y)) - ge;,这里修改了老多次,不过还好1Y了。3067#define lowbit(x) x & -xstruct sta{ int x,y;};sta s[MAXN];int n,m,k,maxx;int num[1005];int cmp(const void *a,const void *b){ struct sta *c = (sta *)a; struct sta *d = (sta *)b; if(c->x == d-& 阅读全文

posted @ 2011-07-21 16:50 MDeath-Kid 阅读(153) 评论(0) 推荐(0)

摘要:求逆序对,数据量大,离散化,当然,这是树状数组的做法。2299#define FOPEN freopen("d:\\1.txt","r",stdin)#define lowbit(x) x & -xstruct sta{ int va,idx; int sta;};sta s[MAXN];int n,a;int num[MAXN];int cmp(const void *a,const void *b){ struct sta *c = (sta *)a; struct sta *d = (sta *)b; return d->va - c 阅读全文

posted @ 2011-07-21 16:46 MDeath-Kid 阅读(255) 评论(0) 推荐(0)