pku
zealotll
爱游戏,爱编程,爱IT技术
展开
-
pku 2282 The Counting Problem
题目意思:求a到b之间[0..9]这十个数字出现的次数 递归解法 #include int getbit(int num){ int i; for(i = 1; num/i > 9; i *= 10); return i;}int fn(int num, int n) // 算num有多少个 n{ int bit = getbit(num)原创 2010-04-12 20:53:00 · 675 阅读 · 0 评论 -
Pku 3368 Frequent Values
<br />#include <cstdio> #define NN 100001 #define MAXN NN*3 #define lc(x) ((x)<<1) #define rc(x) ((x)<<1|1) #define getmid(a,b) ((a)+(b))>>1 #define max(a,b) ((a)>(b)?(a):(b)) struct point { int s,e; // 点的起始坐标跟末尾坐标 int cnt; // 点的数跟那个数出现的次数 }原创 2010-09-28 22:07:00 · 488 阅读 · 0 评论 -
pku 3159 Candies
狗题~~做到我快抓狂,很明显一道差分约束题因为没写过bellman,所以刚开始的时候用bellman写,超时。。理解后来用spfa+queue ~~~还是超时了后来看了discuss~~才知道别人用spfa+queue都是超时的,然后用spfa+stack才不超时。然后我改成spfa+stack,一交,,,还是超时~~郁闷~~后来再详细看看discuss,估计数据是加强过,以前可以过的现在未必可以过然后有人提出跟高效一点的办法,,,dijkstra+优先级队列,,,看到别人写了ac了, 自己也写stl写一个原创 2010-09-06 19:14:00 · 523 阅读 · 0 评论 -
pku 1470 Closest Common Ancestors
<br /> lca问题<br />看了黑书指导的伪码写的<br /> <br />LCA(u) { Make-Set(u) ancestor[Find-Set(u)]=u ① 对于u的每一个孩子v { LCA(v) Union(u) ancestor[Find-Set(u)]=u // 上面①已经确定了u的祖先,不明白这里有什么用的原创 2010-09-05 14:44:00 · 735 阅读 · 2 评论 -
pku 3304 Segments
网上很多人给出了解题思路的了,自己也是根据大牛们的思路做了,小弟很少做计算几何的问题,因为这道题涉及到比较严格的精度控制的问题,所以记录一下以备自己以后复习查看。。思路(都是转载别人的):首先题中的要求等价于:存在一条直线l和所有的线段都相交。证明:若存在一条直线l和所有线段相交,作一条直线m和l垂直,则m就是题中要求的直线,所有线段投影的一个公共点即为垂足。(l和每条线段的交点沿l投影到m上的垂足处)反过来,若存在m,所有线段在m上的投影有公共点,则过这点垂直于m作直线l,l一定和所有线段相交。然后证存在原创 2010-09-10 15:22:00 · 483 阅读 · 0 评论 -
pku 1166 The Clocks
<br />在最优解中,每种转法最多只能转3次,因为当一种转法转到第4次时针就恢复了原来的样子,相当于没转;时针最多只有4^9个状态,之前是用bfs做的,但是这样要开很大的空间记录路径,后来看了网上牛人们的分析,其实完全可以暴力枚举来做的;<br /> <br />ps:请未满18岁的同学在父母的指导下观看此代码(哈哈,代码很暴力)<br /> <br />#include <cstdio> #include <string> #include <vector> using namespace std原创 2010-08-06 20:03:00 · 745 阅读 · 1 评论 -
pku 2704 Pascal's Travels
简单dp#include #include using namespace std;int main (){ int step[35][35]; __int64 list[35][35]; char input[35]; int n; while(cin >> n && n != -1) { me原创 2010-05-26 15:24:00 · 399 阅读 · 0 评论 -
pku 2513 Colored Sticks
题目意思:给出若干两端染色的木棍,两根木棍相同颜色的一端可以连在一起,问所有木棍能否连成一条解题思路:网上普遍的解法:字典树+并查集+欧拉通路 每输入一种颜色都让它插入到树中,并给每种颜色编号--第一个出现的颜色编号为1,第二个为2………每次输入一根木棍都将该木棍的两种颜色合并。输入完后查看是否所有的颜色的代表都一样,而且奇度点是否只出现0(欧拉回路)次或者2次。 代码原创 2010-04-22 16:10:00 · 441 阅读 · 0 评论 -
pku 1928 The Peanuts
题目意思:求dodo在不大于K的时间内能采到的peanuts最大数量,其中(1)走一格,(2)从马路进入田地,(3)从田地进入马路,(4)采一处peanuts。都消耗单位时间1。dodo只能从大到小采。 解题思路:纯模拟,注意细节就行。 代码:#include #include #include typedef struct{ int x,y; in原创 2010-04-10 13:50:00 · 450 阅读 · 0 评论 -
pku 2083 Fractal
题目意思不用多说了。解题思路:由于n不大,最大是729*729(3^6)个字符,所以可以用一个二维数组储存每行每列应该打印的字符。用递归将相应的位置赋值成X。每次递归的size是上层的size/3,直到size==1;每次递归把相应的坐标传下去。 代码:#include#include#include#define SIZE 731int getpow(原创 2010-04-10 11:32:00 · 643 阅读 · 0 评论 -
pku 2078 Matrix
题目意思:题目给出你一个矩阵,举证的每一行可以任意向右旋转任意多格,存在一个状态,使得所有列的和的最大值是最小,求这个最小值。解题思路:暴力枚举,虽然很耗时,呵呵,但是很简单就通过了代码: #include#define MAX 0x7FFFFFFFint m[7][7];int MIN;void show(int n){ for(int原创 2010-04-10 11:24:00 · 762 阅读 · 1 评论 -
pku 2362 Square
这是我在csdn写的第一篇文章,这道题也是我第一次用回溯法做出来的题目,虽然不是什么难题,但是挺有纪念意义,以此记载题目意思:给出你不同长短的木棍,问是否能够构成一个正方形解题思路:暴力搜索+简单剪枝1、如果所有木棍的长度加起来不能整除4,那么一定不能构成正方形2、如果有一条木棍长度超过一条边的长度,那么也可以排除了3、搜索前按降序排序能减少重复搜索#include原创 2010-04-07 12:01:00 · 470 阅读 · 0 评论 -
1204 Word Puzzles
<br />初学ac自动机,拿别人的代码作别模板修改的。<br />之前用query()查询的时候,查询到一个合适解就返回了,wa了n次,自己竟然犯这么低级错误,太不应该了 <br />这次看了别人的代码后受益良多,以此记载一下<br />#include<iostream> #include <stdio.h> #include <string.h> using namespace std; #define TXTL 1005 //子树节点是在插入时new的, //寻找失配指针中使用的队列原创 2011-04-19 16:36:00 · 605 阅读 · 0 评论