
其他
文章平均质量分 69
logic_nut
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
pku 1037 A decorative fence(DP,划分)
题目大意:题目讲得很复杂,其实数学模型很简单。就是 1~n 这 n 个数,若给出一个排列 a1,a2,a3…an ,对所有 i 满足 (ai-a(i+1))(ai-a(i-1))>0 (其实也就是数按大小的波浪形排列),则该排列符合要求。各个排列之间按字典序排序。(当 n=3 时,满足条件的序列依次为( 1 , 3 , 2 ),( 2 , 1 , 3 ),( 2 , 3 , 1 ),( 3原创 2009-07-13 10:11:00 · 1301 阅读 · 2 评论 -
pku 3368 Frequent values(转换,RMQ)
题目:首先给定一个非降序的数列,然后进行查询操作,问范围[l,r]内出现频率最高的数字出现了多少次。个人很喜欢这道题目,因为通过巧妙的转换,能使它成为一个RMQ问题。a[i]是原数列,b[i]是转换后的数列。b[i]代表与a[i]相同的左边的节点数(包括自己),例如,(-1 -1 1 1 1 1 3 10 10 10)==>(1 2 1 2 3 4 1 1 2 3)。这时候因为一个数字原创 2009-08-30 16:42:00 · 691 阅读 · 0 评论 -
google code jam 2008 Mousetrap (逆向)
题目大意:After reading the story, it is not hard to see that the task is clear: put card 1 in the first position, then for each card i (in the order 2, 3, ..., K), we start from the current position, and原创 2009-09-10 11:47:00 · 862 阅读 · 0 评论 -
pku 3321 Apple Tree(时间戳,树状数组)
题目:给定一棵树(题目中默认节点1为根),树的节点上可能有苹果,也可能没有。需要查询某个节点及其子节点上的苹果数量之和,并且支持节点上长苹果或苹果被摘。分析:需要统计范围和,树状数组是个不错的选择。可是根据当前节点的编号,是没办法使用树状数组的。对于节点i,我们必须让节点i的所有子节点的编号和i连续。对此我们需要做一些预处理。建好树,用DFS对树进行后序遍历,根据访问时间给节点重编原创 2009-09-22 11:20:00 · 1239 阅读 · 0 评论 -
pku 2481 Cows(预处理,树状数组)
给定n个区间(l,r),问每个区间被多少个另外的区间所包含。包含的定义(l1,r1),(l2,r2),如果l1 用节点存储区间,然后给节点排序。l小的区间放在前面,l相同则r大的区间放在前面。为什么这样排序呢?因为对排序之后的节点,节点n只可能被排在它前面的(0--n-1)号节点包含,而不可能被后面的包含。那么(0--n-1)号节点中,又哪些能包含节点n呢?只要ri>=rn即可原创 2009-09-21 18:29:00 · 1006 阅读 · 3 评论 -
google code jam Star Wars(判断多元不等式是否有解)
题目只需要输出最小的power,不需要求解坐标。直接用二分查找,枚举所有坐标点看是否满足。 找到满足(|xi - x| + |yi - y| + |zi - z|) ≤ piY的最小的Y。Ahyangyi的代码充分利用了该式的对称性 x + y + z ≤ xi + yi + zi + piY x + y + z ≥ xi + yi + zi - piY x + y - z原创 2009-09-19 11:46:00 · 1317 阅读 · 1 评论 -
pku 2976 Dropping tests(数值的二分测试)
数值的二分测试,这种方法已经在google 的比赛中见ACRUSH用了好几次了,但事实上自己一直没领会到其中的精髓,这道题目又是可以利用这种方法做解答的,真的很巧妙,很奇妙。给个官方的解答:/*Drop----This problem was intended to be the hardest problem in the set, and indeed, nobodysolved it原创 2009-10-19 16:21:00 · 926 阅读 · 1 评论 -
pku 2348 Euclid's Game(博弈)
这题的解法实在是精妙。对于任意一个局面(a,b),它是必胜局还是必败局这是确定的。但按这题的要求,如果要我们自己来判断却会极其难。对于局面(m,n)(m>n),两人一直往下取,必然会到局面(m%n,n)。如果m/n如果m/n>2,则局面(m,n)的先取者就可以决定由谁去面对局面(m%n,n),因为这个先取者足够聪明可以判断(m%n,n)是必胜还是必败,因此我们也已经可以确定(m,n原创 2009-10-21 07:51:00 · 1198 阅读 · 0 评论 -
几个经典的博弈
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty转载 2009-10-21 08:05:00 · 1658 阅读 · 0 评论 -
博弈问题及SG函数(真的很经典)
博弈问题若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多。(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要看“博弈论”的时候。)Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论,由这个游戏开始了解博弈论恐怕是最合适不过了。Nim游戏是组合游戏(Comb转载 2009-10-22 08:10:00 · 8644 阅读 · 2 评论 -
pku 1740 A New Stone Game(博弈,感性)
博弈类问题的关键,就是寻找平衡状态。这题的平衡状态是什么?石头堆的数量是成对出现的,也就是说后取者总可以模仿先取者。逐一分析:剩余1堆石头:先取者全部拿走,胜利。剩余2堆石头:假设两堆石头的数量相等,均为m。对于(m,m),先取者没办法一次将两堆石头拿走,则后取者总可以模仿先取者的动作,只需换一下操作对象,使两堆石头变成(n,n)。最后肯定有某一次先取者操作后石头只剩下一堆,这原创 2009-10-22 08:20:00 · 1352 阅读 · 1 评论 -
pku 1082 Calendar Game (博弈,有点复杂)
思想还比较简单,根据必胜态和必负态的关系从后往前推。因为是日历,实际处理起来稍微有点复杂,不过也还好就是。如果一个节点的所有后续节点都是必胜态,该节点为必败态,否则该节点为必胜态。也即是说,只要有一个后续节点是必败态,该节点就是必胜态。最后一天为必败态,倒数第一天为必胜态,从后往前推。#include using namespace std;bool state[2005][1原创 2009-10-22 08:24:00 · 1092 阅读 · 0 评论 -
pku 2425 A Chess Game(SG函数)
额,没什么可讲的,要讲我也讲不清楚,大家还是去看SG函数吧。#include #include using namespace std;vector edges[1000];int N,M,GS[1000],ans;int DFS(int n){ if(GS[n]!=-1) return GS[n]; bool used[1000]; memset(use原创 2009-10-22 08:29:00 · 758 阅读 · 0 评论 -
pku 2456 Aggressive cows(二分数值测试)
很经典的题目。对于给定的距离len,利用贪心的思想,只需要O(n)的时间就可以判断该len是否满足要求。因此采用二分测试的方法,时间复杂度是O(n*lg(L))。#include #include using namespace std;int pos[100005],N,C;bool Check(int len){ int sum=1,last=pos[0];原创 2010-02-08 11:49:00 · 991 阅读 · 0 评论 -
How to use map (STL)?-
The following code demonstrates how to use the map to count occurrences of words. It uses the word as the key and the count as the value.转载 2011-09-03 02:16:00 · 752 阅读 · 0 评论 -
STL map常用操作简介
1。目录 map简介 map的功能 使用map 在map中插入元素 查找并获取map中的元素 从map中删除元素 2。map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。 3。map的功转载 2009-08-30 11:35:00 · 648 阅读 · 0 评论 -
pku 1961 Period(KMP扩展)
给定一个字符串,问它的前2位是否是周期字符串,前3位。。。前n位?数据量大,要线性求解一个字符串才行。这题可以直接利用KMP算法求得的next数列来判断。next[i]=j,表示str[0..j]=str[i-j..i],因为是一个串,所以串的前str[0..i-j-1]是相同的,利用辗转相等可以发现,当(i+1)%(i-next[j])==0即可得到该串为周期串。 之前虽然想到了利用原创 2009-08-31 16:56:00 · 958 阅读 · 1 评论 -
KMP模板
// pku 1961.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "string.h" #include using namespace std; const int maxn=1000005; ch原创 2009-08-31 16:30:00 · 1137 阅读 · 0 评论 -
pku 1988 Cube Stacking(并查集扩展)
这道题自己想了很久,一直不敢下手。 用并查集来做,题目中的每个stack 对应一个集合。 parent[] ,根节点存储树的子节点数量sum ,非根结点存储父节点。 up[i] ,存储结点i 到父节点的距离。路径压缩后,父节点即根节点,则输出结果为count[i]=sum-up[i]-1 ; 当把stack A 放到stack B 上面的时候,做集合的Union() 操作,原创 2009-07-21 00:33:00 · 1110 阅读 · 2 评论 -
pku 1182 食物链(并查集扩展)
有 A,B,C 三种物种 , 但因为给定的 N 个动物之间的关系是相对的,我们没办法只用三个集来表示 N 个动物所属的物种。网上都说这题是用并查集做的,其实这题并没有集合的概念,大部分人只是借鉴了并查集的数据结构及操作。 我的思路是这样的,用树来存储各动物间的相互关系。结点有两个域, parent 和 flag ( parent 的作用大家都知道,这里 flag 用来表示子节点和父节点的原创 2009-07-19 21:20:00 · 1220 阅读 · 0 评论 -
stl中的优先队列
STL中优先队列的使用,关键是提供恰当的比较方式供队列内部使用。对于默认类型,比较符的选择确定了该优先队列是最大还是最小优先队列,对于自定义的结构体,如果比较方式没有选择好,会出现编译通过,但在第二次插入时出现运行时错误的问题。 头文件 template class Type, class Container=vector, class Comp原创 2009-07-26 12:22:00 · 2654 阅读 · 0 评论 -
pku 1200 Crazy Search(匹配,映射)
#include using namespace std;char str[1000000];int chartoint[125];//存储字符和数字的映射bool exist[16000000];//题目中有 maximum number of substrings formed by the possible set of characters does not exceed原创 2009-07-26 19:44:00 · 705 阅读 · 0 评论 -
pku 2051 Argus(优先队列)
#include #include using namespace std;struct node{ int time,Q_num,Period;};//struct cmp//{// bool operator()(const node& a,const node& b)// {// if(a.time!=b.time) return a.time>原创 2009-07-26 18:18:00 · 680 阅读 · 0 评论 -
pku 3295 Tautology(枚举+递归)
#include#includeusing namespace std;bool solve(string& WFF);string WFF;bool state[5];int main(){ bool flag; while(cin>>WFF) { if(WFF[0]==0) return 0; flag=true; for(int原创 2009-07-30 10:20:00 · 798 阅读 · 0 评论 -
pku 2299 Ultra-QuickSort(求逆序,归并排序)
利用归并排序求数组总逆序。#include using namespace std;int original[500005],temp[500005];__int64 reverse;void Merge(int first,int mid,int last){ int a=first,b=mid+1,p=first; while((a<=mid)&&(b<=las原创 2009-08-08 08:05:00 · 642 阅读 · 1 评论 -
pku 3349 Snowflake Snow Snowflakes(hash,最小表示法)
hash我是用的最简单的方法,6个数字求和后模大质数。匹配部分我一开始用的是朴素方式,超时。后来改成了最小表示法,具体的原理参考周源的论文《浅析“最小表示法”思想在字符串循环同构问题中的应用》,这方法真的不错,编码还超级简单。#include using namespace std;#define PRI_NUM 149997struct node{ int lengt原创 2009-08-08 12:29:00 · 1086 阅读 · 0 评论 -
pku 3274 Gold Balanced Lineup(预处理,hash)
写完代码后提交,一直RE。尝试把数组开大点,仔细找逻辑问题,看有没有造成死循环的可能,无果。后来看别人解题报告,才注意到有sum=sum%prime;if(sum //求模运算是可能得到负数的。 。。。。 看到题目的第一个反应是树状数组。思考,无果。看discuss,要hash。怎么hash,思考,无果。google之。得到如下转换方式。 给出SAMPLE原创 2009-08-08 18:02:00 · 659 阅读 · 0 评论 -
pku 1019 Number Sequence(逐步求精)
先求处在哪一段,再求是这一段中的哪一个数,最后求是这个数的第几位。#include using namespace std;int length(unsigned int k)//求k在10进制下有多少位{ int len=0; while(k) { k=k/10; len++; } return len;}int main(){ u原创 2009-08-11 19:33:00 · 678 阅读 · 1 评论 -
pku 3007 Organize Your Train part II(stl,c++内部函数)
vector+string+reverse+sort+unique+distanceC++超时,G++800ms 参考了dirlt的代码,之前听说G++速度比C++快,但尝试提交了几次都compile error。今天才知道,原来缺这个头文件。#include //G++的输入输出要这个头文件。。#include#include#include#includeu原创 2009-08-12 23:27:00 · 894 阅读 · 0 评论 -
快速排序模板
自己写的快速排序模板。:-)。第一种是常规形式,第二种加入了随机化数。#include "time.h"#include #include using namespace std;const int max_n=300;void quick_sort(int a[],int first,int last){ int left=first,right=last;原创 2009-08-19 14:08:00 · 901 阅读 · 0 评论 -
计数排序(O(n))
当k(k是数组中数的范围(1~k))比较小的时候,可获得O(n)的时间复杂度.#include using namespace std;const int arrLen = 5 ;void countingSort( int * a, int * b, int k) { // a数组元素在[0..k] int i, j;转载 2009-08-21 16:15:00 · 545 阅读 · 0 评论 -
[转自 matrix67.com]KMP算法详解
如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。 我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="Immatrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的M转载 2009-08-31 15:39:00 · 569 阅读 · 0 评论 -
HackerRank Palindromes
题目在这里https://www.hackerrank.com/challenges/palindromes用到了高斯消元#include "stdio.h"#include #include #include #include #include #include #include "string.h"using namespace std;double Matr原创 2013-09-11 09:09:45 · 1025 阅读 · 0 评论