|
|
ZOJ,HDU,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 ...
阅读全文
摘要:第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<
阅读全文
摘要:/*ACMer:MDK2011-04-19 18:20:35 Accepted 1558 C++ 0 196 MDK */#include<stdio.h>#include<iostream>#include<limits.h>#include<string.h>#include<math.h>#define MAXN 2005usingnamespace std;int num[14]={0},opt[MAXN]= {0};int fun(int n){ if(n==0) return0; if(opt[n]) return opt
阅读全文
摘要:模拟题目,没什么难度。 //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...
阅读全文
摘要:巨复杂的一个模拟题。首先给的坐标系统和正常的二维数组下标不一样,需要你颠倒过来,这一来你的方向标就要颠倒。接着就模拟就行了。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},{...
阅读全文
摘要:模拟题目,先把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
阅读全文
摘要:看完这个题目后,果断没思路了,看了一下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 位 ..
阅读全文
摘要:先打素数表,然后打表就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...
阅读全文
摘要:不得不说,这个题目不算很水,题目也看了很长时间,就读懂了是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]...
阅读全文
摘要: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...
阅读全文
摘要:一共10个题目。前几个都是考基本流程控制的大水题。第一题,格式输入,条件判断。1001 1 #include<iostream> 2 #include<stdio.h> 3 #include<string.h> 4 #include<limits.h> 5 #include<queue> 6 #include<algorithm> 7 #define FOPEN freopen("d:\\1.txt","r",stdin); 8 #define MAXN 10005 9 10 usi
阅读全文
摘要:解题报告:http://hi.baidu.com/%C3%CD%E1%EF%D2%B2%D7%EA%B5%D8/blog/item/736d6dc27695c6000ff477c4.html#lastcmt猛犸神的blog。又被虐了,第一题我们三个人居然纠结了1:30小时没做出了,全都载到了lld上,导致后面状态很差,就做出来一道D,最长非递减子序列,快结束的时候终于队友发现了lld用错了,A了第一题,我则一直载道了Weekend Party上,不知道缩点,反正就是做法全错了!大三了居然还要调寝室,还要挤过来其他的学生,学校太BT了,特别不顺心,为啥调寝室,还不是因为院里面那点破事,不会办事!
阅读全文
摘要:写这道题报告就是提醒下自己,要精心去写代码,去思考,不然检查的时候就要哭了。。高斯消元A[][] * x[] = B[];B是转换后的,x就是一开是的,求出系数阵 然后高斯消元模板就行了输入是浮点行的,输出要控制,先输入的矩阵的列值,然后是行值和曼哈顿距离HDU 3359int n,m,t;double a[15][15];double A[105][105],B[105];//列主元gauss消去求解a[][]x[]=b[]//返回是否有唯一解,若有解在b[]中int gauss_cpivot(int n,double a[][MAXN],double b[]){ int i,j,k,...
阅读全文
摘要:解题报告:http://blog.renren.com/share/263436810/8196564875(+ 今天刚刚发现notonlysucceed大牛的主页有代码,弱了)notonlysucceed大牛的神题。出了四道说的水题外,其他近乎放弃了,1007想到了求最小支配集,怎么也木有想到能用舞蹈练解决重复选人的问题,还是A的题目不够,应当继续练习,还有1004的线段树,成段更新,成段询问,典型的线段树,但是看到过题率2.+%我就不敢写了,果然还是有没想到的地方,其实还是自己的线段树掌握的不好。。。。05是搜索,一开始没人去做,被自己无视了。。。其实可以做做的。06直接忽略。08被队友当
阅读全文
摘要: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
阅读全文
摘要:判断是否存在欧拉路径,而且图必需连通!第二点忘记判断了WA了几次。HOJ 1033#define MAXN 1005#define _ufind_run(x) for(;p[t=x];x=p[x],p[t]=(p[x]?p[x]:x))#define _run_both _ufind_run(i);_ufind_run(j)struct ufind{ int p[28],t; void init(){memset(p,0,sizeof(p));} void set_friend(int i,int j){_run_both;p[i]=(i==j?0:j);} int is_friend(int
阅读全文
摘要:找一个以前做过的MST,用堆实现一下。Kruskaltypedef double elemt;#define _ufind_run(x) for(;p[t=x];x=p[x],p[t]=(p[x]?p[x]:x))#define _run_both _ufind_run(i);_ufind_run(j)struct ufind{ int p[MAXNT],t; void init(){memset(p,0,sizeof(p));} void set_friend(int i,int j){_run_both;p[i]=(i==j?0:j);} int is_friend(int i,int j
阅读全文
摘要:题目大意求一旋转向内的连线,可以想象成蜗牛的壳不得不说这个我弄的狠纠结,一开是用的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
阅读全文
摘要:练习基本的计算几何。主要这个题意很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() {}
阅读全文
摘要:第一次按位DP,按位DP主要是求在一区间上满足某种或几种关系的数字有多少个。记得我从4月份的浙大月赛碰到第一个这样的题后,碰到了好多次,可都不会啊,现在终于会了这个DP。HDU 3555这个多校的赛大概是很多人第一次的按位DP,我也是,理解按位DP用了一天+晚上的时间,虽然比赛的时候还A出来两个比较水的按位DP,但自己的思路狠不清晰,狠让我震惊的就算这个题的discuss,那位童鞋太萌了!!~我为了理解按位DP到底是怎么运行的,我自己手动算了两张纸,而且是两边啊啊啊啊啊,因为不懂啊,知道那个状态设计,但是不知的实现起来怎么就那么的费劲啊啊啊,最后终于理解了,觉得用HDU那位童鞋的代码做模板了,
阅读全文
|