- 博客(84)
- 收藏
- 关注
原创 USACO 3.3.3 camelot
本来这是个简单题,但是两年前第一次做的时候发现它真的太经典了! 【camelot】/*ID: wangqia6TASK: camelotLANG: C++*/#include #include #include #inclu
2011-07-05 19:16:23
544
原创 USACO 3.2.6 sweet butter
头一回用头文件queue,感觉还算方便。第一次提交的时候懒得用邻接表,用的邻接矩阵,它硬是没让我过…… 【sweet butter】/*ID: wangqia6TASK: butterLANG: C++*/#include #include #include using namespace std;const long INF = 0x010
2011-06-28 18:04:00
573
原创 USACO 3.2.5 magic square
康拓展开的经典题目!n! - 0 = (n - 1)*(n - 1)! + (n - 2)*(n - 2)! + …… + 2*2! + 1*1!判重去吧!不解释! 【magic sqaure】/*ID: wangqia6TASK: msquareLANG: C++*/#include #include #include using name
2011-06-26 20:10:00
555
原创 USACO 两道题目
【electric fence】/*ID: wangqia6TASK: fence9LANG: C++*/#include #include using namespace std;ifstream fin ("fence9.in");ofstream fout ("fence9.out");long gcd(long a,long b)
2011-06-23 22:17:00
352
原创 USACO 3.2.2 stringsobits
这道题是关于排列组合的基础题目,当然也就是动态规划。 /*ID: wangqia6TASK: kimbitsLANG: C++*/#include using namespace std;const long NMAX = 35;ifstream fin ("kimbits.in");ofstream fout ("kimbits
2011-06-22 23:07:00
486
原创 USACO 3.4.1 closed fence
不得不承认这道题着实是一道好题,可惜当年我还在用PASCAL的时候压根没做这道题……具体详情我想我是需要追究matt和s.p.willam(原skyprophet)两位神牛的责任的…… 这个东西比较困难,我也不知道完美算法是什么(或者压根没有完美算法???),于是我祭出了近似算法。这道题目的第一问就是简单的判断线段是否相交,非常简单。由于n最大是200,所以就不用考虑O
2011-06-22 12:59:00
577
原创 USACO 四道题目
【stamps】/*ID: wangqia6TASK: stampsLANG: C++*/#include #include #include using namespace std;const long MMAX = 55;const long CMAX = 2000005;long n,m,i,j,data[MMAX],f[CMA
2011-06-21 11:10:00
1253
原创 USACO 三道题目
<br />三道3.1的题目,包括那道我觉得也算比较经典的shaping regions。如果有朝一日我还需要深入研究算法的话,我会用离散化和二维线段树代替冰块上浮法再把它做一遍。但今天就算了……第一道agrinet已经在之前写过了……<br />【score inflation】<br />/*ID: wangqia4TASK: inflateLANG: C++*/#include <fstream>using namespace std;const long NMAX
2011-04-30 20:23:00
448
原创 USACO 两道题目
<br />【bessie come home】<br />/*ID: wangqia6TASK: comehomeLANG: C++*/#include <fstream>#include <cstring>using namespace std;const long INF = 0x01010101;const long LEN = 200000;const int NMAX = 55;long dist[NMAX],g[NMAX][NMAX],q
2011-04-27 20:09:00
516
原创 USACO 3.2.4 feed ratios
<br /> 复习了一下自主招生时学的行列式求解方程组,也就是克莱姆定则的应用。<br /> <br />/*ID: wangqia6TASK: ratiosLANG: C++*/#include <fstream>using namespace std;const int N = 3;const int M = 4;long b[M],a[M][M],c[M][M];long det(long a[][M]){ return a[1][1]
2011-04-26 20:15:00
574
1
原创 USACO 三道题目
<br />【the tarmworth two】<br />/*ID: wangqia6TASK: ttwoLANG: C++*/#include <fstream>#include <cstring>using namespace std;const int DX[4] = {-1,0,1,0};const int DY[4] = {0,1,0,-1};const long MAXNUM = 160002; bool use[15][15];
2011-04-22 20:42:00
373
原创 USACO2.3 五道题目
<br />【prefix】<br />/*ID: wangqia6TASK: prefixLANG: C++*/#include <fstream>#include <string>#include <cstring>using namespace std;const long PNUM = 99901;const long LMAX = 200005;ifstream cin ("prefix.in");ofstream cout ("pref
2011-04-20 17:46:00
398
原创 由种子填充法谈两种基本搜索的实现
<br /> 所谓种子填充法,就是常见的基本算法floodfill的中文名字。就像一滴墨水浸到宣纸之上,渐渐扩散。使用两种基本搜索——DFS和BFS可以实现这种算法。下面我通过数据结构的层面来介绍一下DFS和BFS的实现。<br /> 首先来介绍“树”。计算机中的树和现实生活中的树相反——它的跟在上面,叶子在下面。相连的连个节点互为父子,同一高度的节点互为兄弟。如图:<br /> <br /><br /><br /><br /> 比如说:2,3,4节点互为兄弟
2011-04-16 22:12:00
1197
原创 USACO 三道题目
<br />今天做题没状态……<br /> <br />【subset sums】<br />/*ID: wangqia6TASK: subsetLANG: C++*/#include <fstream>#include <cstring>using namespace std;long long f[800];int i,j,n,sum[40];int main(){ ifstream cin ("subset.in"); ofstream
2011-04-15 20:05:00
325
原创 比赛技巧
鉴于大家要比赛了,我把我个人的经验同大家分享一下。大家就取长补短,在提升自身实力的同时,也把发挥实力的能力最大化! 我就按考试的顺寻来谈谈吧! 考试前两三天我就进入到了备考状态。在这段时间我要做的是两件事儿。首先,看基础代码,并敲一遍。比如说:敲一遍快排,敲一个agri-net练习kruskal等等。显然这些都是巨水无比的东西,但这个过程是对自己思路的总结,另外也能让自己心里有个底儿。其次,我把考试中的tips看了看,这个实在长期实践过程中体会和总结的,我会在后面提到。
2011-04-14 20:09:00
427
原创 USACO 两道题目
好吧!我承认我在这么道水题上犯了错用能犯的错误……改来改去代码被我弄得巨丑无比……/*ID: wangqia6TASK: lampsLANG: C++*/#include #include using namespace std;const int LIGHT = 63,ONE = 63,TWO = 21,THREE = 42,FOUR = 18;const string MESS = "IMPOSSIBLE";bool onit[7],offit[7],
2011-04-13 20:58:00
476
原创 USACO 4.3.2 the primes
人的一生中总能遇到几道想prime3这样百做不厌的好题!啥也不多说了,祭出代码吧!/*ID: wangqia6TASK: prime3LANG: C++*/#include #include using namespace std;struct { long num[6],next; } node[100000];struct matrix{ long rec[6][6];} ans[10000];long tmp[6][6],hea
2011-04-13 18:58:00
716
原创 USACO 两道题目
<br /> 【sorting a three valued sequence】<br />/*ID: wangqia6TASK: sort3LANG: C++*/#include <fstream>#include <algorithm>#include <cstring>using namespace std;int data[1002],should[1002];int get_min(int a,int b){ return a <
2011-04-11 20:48:00
356
原创 USACO 两道题目
<br />【the castle】<br />/*ID: wangqia6TASK: castleLANG: C++*/#include <fstream>#include <cstring>using namespace std;bool vis[55][55];int mark[55][55],data[55][55],sum[3000];void dfs(int i,int j,int color){ vis[i][j] = 1;
2011-04-10 14:03:00
353
原创 USACO 两道题目
<br />CHAPTER 1 结业啦!<br /> <br />【number triangles】<br />/*ID: wangqia6TASK: numtriLANG: C++*/#include <fstream>using namespace std;long data[1001][1001],ans[1001][1001]; long get_max(long a,long b){ return a > b ? a : b; }i
2011-04-09 23:49:00
388
原创 USACO 1.5.2 prime palindromes
<br /> 这道题应该也算CHAPTER1中有点儿价值的题。考察到了二分搜索和miller rabin判断质数。<br /> <br />【prime palindromes】<br />/*ID: wangia6TASK: pprimeLANG: C++*/#include <fstream>#include <cstdlib>using namespace std;const long INF = 150000000;long tot = 0,list
2011-04-09 19:56:00
407
原创 USACO 三道题目
<br />【the clocks】<br />/*ID: wangqia6TASK: clocksLANG: C++*/#include <fstream>using namespace std;const int RELATE[9][6]={ {4,0,1,3,4,0},{3,0,1,2,0,0},{4,1,2,4,5,0}, {3,0,3,6,0,0},{5,1,3,4,5,7},{3,2,5,8,0,0}, {4,3,4,6,7,0},{3,6,7,8
2011-04-08 21:20:00
479
原创 浅谈搜索入门
搜索是OI beginners 的必修课,也是在各类比赛中十分通用的技巧。已近三年辽宁省的NOIP 成绩为例,我们假设一名选手掌握了基本的搜索和模拟算法,那么TA的成绩将如下所示(均达到辽宁省省一线):2010: 100 + 30 + 30 + 50 = 2102009: 100 + 50 + 30 + 40 = 2202008: 100 + 100 + 30 + 10 = 240 下面就简单谈谈各种常见的搜索并另附了一些可供练习的好题。一深度优先搜索 深度
2011-04-07 20:43:00
896
原创 USACO 1.4.1 packing rectangles
<br />我宣布我手机报废了…<br />这道枚举是IOI95的题目。虽说是枚举但是情况要考虑5种清楚(图示中的4,5图是同样的情况),尤其是第6图的一系列if-else非常非常叫我恶心!<br /> <br />【packing rectangles】<br />/*ID: wanqia6TASK: packrecLANG: C++*/#include <fstream>using namespace std;int getmax(int a,int b,int c
2011-04-06 20:33:00
539
原创 USACO1.3 三道题目
<br />【mixing milk】<br />/*ID: wangqia6TASK: milkLANG: C++*/#include <fstream>#include <cstring>using namespace std;int main(){ ifstream infile; ofstream outfile; infile.open("milk.in"); outfile.open("milk.out"); long nee
2011-04-05 20:58:00
377
原创 USACO 两道题目
<br />【prime cryptarithm】<br /> /*ID: wangqia6TASK: crypt1LANG: C++*/#include <fstream>#include <cstring>using namespace std;bool vis[10];int check(long x, long m){ for (int i = 0; i < m; i++) { if (!vis[x % 10]) return
2011-03-25 19:41:00
397
原创 USACO1.5.4 checker challenge
<br />以前用pascal 写过的东西,这回是C++。明天去北校区给初中生讲N皇后,所以自己也熟悉一下呗!<br />/*ID: wangqia6TASK: checkerLANG: C++*/#include <fstream>#include <cstring>using namespace std;const int NEED = 3;ifstream infile;ofstream outfile;int n,now = 0,rec[15]
2011-03-24 21:05:00
497
原创 USACO1.2 最后两道题目
<br />【milking cows】<br />/*ID: wangqia6TASK: milk2LANG: C++*/#include <fstream>using namespace std;long st[5005],en[5005];void swapq(long &a,long &b){ long tmp; tmp = a; a = b; b = tmp; }void quicksort(int s,int t)
2011-03-22 19:44:00
392
原创 USACO1.2.2 transfomations
这道题让我弄回了函数中使用多维数组作参数。/*ID: wangqia6TASK: transformLANG: C++*/ #include using namespace std;char st[15][15],en[15][15],transa[15][15],transb[15][15];int n;int check(char arr[][15], char brr[][15]){ for (int i = 0; i
2011-03-20 15:08:00
367
原创 USACO 1.2 两道题目
<br /> 今天又弄了两道题目。<br />这个memset要加<cstring>我老是给忘了……<br /> <br />【name that number】<br />/*ID: wangqia6TASK: namenumLANG: C++*/ #include <fstream>#include <cstring>#include <string>using namespace std;struct word{ string name; lon
2011-03-20 01:05:00
391
原创 USACO 1.1 四道题目
<br />都是非常简单的,刚刚开始学习C++,就从USACO入手吧!<br /> <br />【your ride is here】<br />/*ID: wangqia6TASK: rideLANG: C++*/# include<fstream># include<string>int main(){ using namespace std; ifstream infile; ofstream outfile; infile.open("r
2011-03-18 21:24:00
413
原创 PKU2603 brave ballonists
<br />这道题的大意是,十个数相乘,求所得积的约数个数。但是,它考察的显然不是高精度计算,而是约数个数定理。对于一个数a,如果我们有:<br />a=(p1^k1)* (p2^k2)* (p3^k3)*……*(pn^kn)<br /> 那么a的约数个数为(k1+1)*(k2+1)*(k3+1)*……*(kn+1)<br /><br />program Brave_balloonists;const maxn=15000;var p:array[0..maxn] o
2010-11-18 21:03:00
354
原创 PKU1804 brainman
<br /> 这道题让我们模拟冒泡排序,求交换次数,本质上是求序列的逆序对个数。<br /> 我们有两种方法求解——归并排序和树状数组。<br /> <br />【归并排序】<br /> <br />program Brainman;const maxn=1005; inf=10000000; msg='Scenario #';type arr=array[0..maxn] of longint;var data:ar
2010-11-18 12:46:00
525
原创 PKU2553 the bottom of the graph
<br /> 昨天skyprophet 神牛给我讲了一句用Tarjan求强连通分量,感觉并不太难,于是试了一下。它只是在基本的DFS中添了一段话。就是对一个顶点,当我们发现他满足low=d 时,它就是一个强连通分量的顶部。我们同时需要用一个栈来维护点序列,通过出栈的方式求强连通。这个方法是线性的,时间效率高于kosaraju算法。而且它跟求桥,求割点的方法是统一的。<br /><br />program bottom;const maxn=5100;type poi
2010-11-18 11:22:00
373
原创 PKU1144 network
本题考查的是寻找割点(也叫挂接点),运用DFS执行。 每个节点我们除了需要用d来记录它的时间戳,还需要low来记录它及其后裔中最浅的反向边指向。对于一个图的割点,我们能发现如下充要条件:(1) 若u为图G搜索树的根,当且仅当u在这棵搜索树中有至少两个儿子。(2) 若u为图G搜索树的非根结点,当且仅当u有一个子节点v,使其不存在从v或v的后裔中指向u的真祖先的反向边。program network;const root=1; max
2010-11-17 17:28:00
440
原创 PKU2413 how many fibs
<br /> 学以致用,高精度题目一个!先用高精度加法预处理,接着一起二分搜索。<br /><br />program fibs;const maxlen=200; maxn=500; stop='0 0';type hightype=record num:array[0..maxlen] of longint; len:longint; end;v
2010-11-17 17:19:00
388
原创 PKU1847 tram
<br /> 这题上次做的时候居然是WA!我感到很莫名其妙。<br /> 只是一道最简单的最短路而已。对于每个顶点,与其相邻的第一个顶点权值为0,其余相邻节点的权值为1。求出从起点到终点的最短路即可!<br /><br />program tram;const inf=10000000; maxn=110; len=2000000;type pointer=^node; node=record
2010-11-16 20:51:00
423
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人