自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(52)
  • 资源 (1)
  • 收藏
  • 关注

原创 UVa OJ 167

1、就是个八皇后问题的变体,但是刚开始我忘记给max清零以及记错了右对齐输出的格式,WA了2次。 #include#includeusing namespace std;int C[8],a[8][8],max=0;void dfs(int num,int sum){    if(num==8){        if(sum>max) max=sum;     

2013-10-29 22:49:20 294

原创 UVa OJ 10012

1、这道题的难点就在于“圆”,圆会相切,圆有大有小,所以要考虑各种情况。2、用回溯法,每次添加一个新圆的时候,这个新圆可能与前面任一个圆重叠,所以要全部扫描一遍,求出位于最右边的圆心位置,存入b数组。3、还要小心两端,每次添加新圆的时候,还要考虑是否和最左边的板重叠,而在计算最右边的板的位置的时候,要注意任何一个圆都可能与之相切。#include#include#include

2013-10-29 22:01:13 332

原创 USACO Number Triangles

1、数字三角形问题,有最优子结构性质,明显是DP。。。一次AC~ /*ID:mrxy564PROG:numtriLANG:C++*/#include#include#includeusing namespace std;int a[1010][1010],d[1010][1010];int dp(int i,int j){    int &ans

2013-10-28 21:25:19 232

原创 USACO Mother's Milk

1、倒水问题的变形,把上一个程序(UVa 10603 Fill)改改就行了,一次AC~/*ID:mrxy564PROG:milk3LANG:C++*/#include#includeusing namespace std;struct node{    int v[3];};int vis[21][21];int cap[3],in[21];

2013-10-27 19:35:01 274

原创 UVa OJ 10603

1、第一次写隐式图搜索,经典的倒水问题,真是非常容易错!不能AC的童鞋就请严格对照我的程序,看看哪里错了吧。2、感觉隐式图搜索的难度在于状态转移以及判重,但是本题的判重比较简单,只要比较a、b杯子里的水量是否分别相同即可(因为总水量一定)。#include#includeusing namespace std;struct node{    int v[3];    i

2013-10-27 19:14:21 337

原创 NOIp2012 寻宝

1、其实我已经做了优化(取模,把带楼梯房间加入队列),但是用Cena测评,最大的一组数据却要1.5s才能过(超过1s),刚在想我怎么越来越长出息了连普及组题目都过不了了,突然想到可能是因为文件太大了输入需要很长时间所以超时了,果不其然交到tyvj上就过了。2、这题就是约瑟夫问题的变形,注意取模的时候要特殊处理,因为“走的房间数”是从1开始编号的。比如说要走过5个带楼梯的房间,但这层楼一共就5个

2013-10-26 22:27:55 511

原创 USACO Arithmetic Progressions

1、通过这道题,我明白了优化的重要性,引入了list后,生生将20+s的程序给优化到不到1s左右了~(大数据尤其明显)2、枚举顺序也很重要,从后往前枚举要更快一些。3、这是博客上的第三百篇解题报告!值得庆祝!撒花~/*ID:mrxy564PROG:ariprogLANG:C++*/#include#include#include#includeusi

2013-10-26 18:23:23 360

原创 UVa OJ 10020

1、最小区间覆盖问题,比较经典,用贪心法解决。2、要注意的是刚开始要判断有没有left0的区间,有再进行搜索,否则会RE。3、搜索到right>=M的区间后立即停止,否则区间数量就不是最小。#include#includeusing namespace std;struct interval{    int l,r;    bool operator      

2013-10-26 15:58:15 340

原创 Round #208 (Div. 2)A、 Dima and Continuous Line

1、题目链接:http://codeforces.com/problemset/problem/358/A2、昨晚看这道题没有什么思路,所以就没做了,其实就是暴力法,不要去在乎那些点是怎么变化的,而是要有一种全局观,每两个点都会组成一个半圆,只要暴力枚举“所有的半圆对”,再看看是否相交就可以了。相交的条件就是L1 #include #include using namespac

2013-10-26 13:13:08 387

原创 USACO The Clocks

1、这道题在前面TEXT讲解过,可惜我完全忘记了,在那里用IDDFS,果断TLE了。状态的选取非常重要,从9^k到k^9再到4^9,性能得到了巨大的优化!2、今天做了两道IOI题目,感觉收获非常大。/*ID:mrxy564PROG:clocksLANG:C++*/#include#includeusing namespace std;int a[3][3],

2013-10-25 23:00:21 284

原创 USACO Packing Rectangles

1、USACO真是相当重口,才1.4节就给了一道95年的IOI题目,如果不是事先知道用搜索做,而且还有测试数据(21组!)的话,以我的水平,真的很可能做不出来。2、这个程序需要6个dfs,也就是每一种情况都要分别为它写一个dfs,最后一种“田”字型是最难的,要分成四类,刚开始因为思路不清晰在乱做,所以总是WA。一定要注意分类讨论要不重不漏,也就是大于等于的等于号不能少。3、注意,标号为1,

2013-10-25 17:30:43 276

原创 UVa OJ 11987

1、注意对并查集的每个操作都是对代表元进行操作,所以不要忘了在元素外面套个find。2、这里移动点的时候不要实际移动,而是创立一个新结点(给它一个编号),并更新相应信息即可,操作都是对这个新结点进行,而且这个新结点永远不能当代表元。#includeusing namespace std;int n,m,cmd,p,q,pointer;int fa[200010],now[100

2013-10-24 13:38:15 480

原创 USACO Prime Cryptarithm

1、这题很怪,刚开始数组s开成5就一直是运行错,开成6就没问题了。。。2、暴力法,很简单。/*ID:mrxy564PROG:crypt1LANG:C++*/#include#includeusing namespace std;int cnt,in[10];bool is_valid(int num,int bit){    char s[6];

2013-10-23 23:27:41 262

原创 USACO Calf Flac

1、这道题真是相当麻烦,无法预处理,而且数据还可能是好多行。2、刚开始我忽略了回文串可以是偶数,所以WA。3、代码比较乱。注意数组很容易越界,要控制边界。/*ID:mrxy564PROG:calfflacLANG:C++*/#include#include#includeusing namespace std;char s[20010],ch;i

2013-10-23 22:21:27 285

原创 NOIp2010 关押罪犯

1、本题用并查集做,将边从大到小排序,然后看两个端点是否在同一个集合中,如果在同一个集合就输出(贪心法),如果不在同一个集合,或至少有一个还没有分配,则他们两个分配到对立的监狱,注意后面应用find,而不是f[],因为a[i].y+n的集合可能已经在前几轮中被修改过。#include#includeusing namespace std;struct edge{    int

2013-10-22 09:14:06 484

原创 NOIp2010 乌龟棋

1、确实感觉自己的解题水平有很大提升。以前很怕dp,但是这个题一次AC了。其实找准状态就行,状态不是当前到的格子编号(太乱了,不好划分,而且卡片数很难维护),而是已使用的卡片数。用一个四维数组来记录当前最优值即可。#include#include#includeusing namespace std;int n,m,temp,answer,a[360],num[5],d[45]

2013-10-21 21:56:46 421

原创 NOIp2010 机器翻译

1、不会用STL,自己手工写了个循环队列。vis数组的运用可使查找的时间复杂度变成O(1)。#include#includeusing namespace std;int vis[1010],a[110];int main(){    freopen("translate.in","r",stdin);    freopen("translate.ans","w",

2013-10-21 20:55:30 516

原创 NOIp2010 三国游戏

1、这题很有意思,在一个博弈的背景下,考察贪心法。我通过分析隐约感觉到是求次大值,但是并没有分析出小涵是必胜的,所以没有得出“求次大值的最大值”算法。真希望这个是自己分析出来的,而不是靠别人的题解来理清思路的。所以说还是要多做一些博弈题,习惯习惯。#includeusing namespace std;int a[510][510];int main(){    freop

2013-10-21 18:42:02 400

原创 NOIp2010 导弹拦截

1、本题很显然用贪心法,我的做法是,先比较某个导弹和哪个拦截点最近,然后导弹就归属于那个拦截点,求出两个拦截点各自能拦截到的最远的导弹,然后将这两个距离相加,测评后只得了40分。2、想出了一个反例。比如两个拦截点在一维数轴上,A在左,B在右,导弹1在A\B间距离A30米距离B31米的地方,导弹2在B右边,距离B40米的地方,按我的算法,答案是50的平方,实际上只是40的平方就可以了,也就是说,

2013-10-21 17:39:49 501

原创 NOIp2012 分解质因数

1、刚开始想到筛法求素数,但是数字太大,数组开不下,所以枚举。2、枚举的方向很重要,从小到大枚举就可以AC,但是从大到小枚举就会超时。#include#includeusing namespace std;bool is_prime(int n){    for(int i=2;i        if(n%i==0) return false;    return

2013-10-18 13:55:06 427

原创 NOIp2010 接水问题

1、学会了用Cena测评,还是很方便的。2、这题用贪心法,模拟可以做,但效率很低。3、刚开始sort的个数是n个,所以出错了,应该为m个,所以要小心! #include #include #include using namespace std;int main(){    freopen("water.in","r",stdin);    freope

2013-10-18 09:45:24 595

原创 NOIp2010 数字统计

1、最近得到一些noip题目的测试数据,想用这些题目来查漏补缺。2、暴力法是可以的,但是用递推更加方便、快捷。#include#includeusing namespace std;int main(){    int L,R,ans;    int a[10010];    while(scanf("%d%d",&L,&R)==2){        mem

2013-10-17 21:49:15 346

原创 SRM 594 FoxAndClassroom

1、昨天本来是满课,CF和TC一个都不想参加,但最后犹豫了一下,还是两个都参加了。。。2、这是一道很简单的暴力枚举题,第一次参加TC正式赛,字体很小不习惯,加上刚做完CF很累,AC了这个就没有再开题了。Problem Statement  Fox Ciel is now in high school. The seats in her classroom

2013-10-17 20:10:39 335

原创 Round #207 (Div. 2)C、Knight Tournament

1、我发现自己就是一弱智。。。2、首先,这道题线段树可以做(当然很多人用set,我不会),很明显是区间覆盖,但我纠结的是怎么特殊处理那个晋级的人,比赛时写了一小时,也没写出来,后来比赛完了一想,只要把区间分成左右两段分别赋值不就行了么。。。3、写啊写,可是总是WA,我觉得思路没有任何问题,调啊调,调了一晚上,没调出来,郁闷地睡了,第二天在检查N(N大于等于20)遍程序后,发现是数组开小了!

2013-10-17 19:56:19 298

原创 Round #207 (Div. 2)B、Flag Day

1、题目链接:http://codeforces.com/problemset/problem/357/B2、这道题刚开始想用回溯法,非常麻烦,其实仔细一想就知道模拟即可,因为前面已经出现过的人最多在后面出现一次,每一轮至少有两个人的衣服颜色是不确定的,因此不会出现冲突。#include#includeusing namespace std;int a[100010][3],n

2013-10-16 10:35:54 359

原创 Round #207 (Div. 2)A、Group of Students

1、题目链接:http://codeforces.com/problemset/problem/357/A2、这题悲剧了,因为没注意到“each“这个单词。觉得CF某种程度上比OI和ACM更难,因为OI有部分分,ACM没有hack机制,而CF要求一次性通过全部(刁钻的)数据,否则就零分。而且要求两小时过5题,过题速度越快越好,所以说参加CF还是很锻炼人的。 #includeusin

2013-10-16 10:29:40 243

原创 UVa OJ 10048

1、这道题竟是用Floyd算法,很灵活,要不是上网搜题解还真想不到。证明算法导论上有,但我没看懂,一定要抽空再看一看。2、要是网络赛前做了这道题,那道跟这个非常相似的题说不定就做出来了。唉,还需要努力啊!#include#include#includeusing namespace std;const int INF=100000010;int G[110][110];

2013-10-13 22:56:34 268

原创 LA 4481

#include#includeusing namespace std;char s[300];mapchar,int> p;int main(){    p['W']=64;p['H']=32;p['Q']=16;p['E']=8;p['S']=4;p['T']=2;p['X']=1;    while(fgets(s,300,stdin)!=NULL){

2013-10-13 19:09:59 258

原创 UVa OJ 11388

1、这道题想明白了就很容易,两个数都要大于等于gcd,而lcm肯定有一个因子gcd,所以答案呼之欲出。#include#includeusing namespace std;int main(){    int T,G,L,num,i;    scanf("%d",&T);    while(T--){       scanf("%d%d",&G,&L); 

2013-10-13 18:47:18 252

原创 NOIp2013 Training Series #1 Xor

1、给出无向图G,边(Ai,Bi)的权是Ci,判断下列性质是否成立:对于任意圈C,其边权的异或和是0。2、这道题看了一点思路都没有,首先什么是异或和?去群里问后,发现就是一系列数的异或。接着就是如何判环。数据量很小,明显dfs可以,但我在实现的过程中犯了三个错误:1、由于是无向图,所以必须记录结点的父亲,否则会循环访问,而且父亲必须是局部变量,是dfs的一个参数。2、异或和sum必须是局部变量

2013-10-13 15:03:39 493

原创 NOIp2013 Training Series #1 Increasing

1、数列a1到an,修改最少的数字,使数列严格单调递增。2、拿到这道题第一个想法是求最长上升子序列,但是很容易举出反例,1,5,4,2,3明显最长上升子序列是1,2,3,但是知道这个没有什么用,1,2之间没有多余的整数给5和4来修改了。难道要分类讨论?太麻烦了。3、看到贴吧里的讨论,终于有了思路:其实,我们所有的要求就是a[j]-a[i]>=j-i,也就是说,如果两个数相差4,那他们中间最

2013-10-13 12:07:34 429

原创 NOIp2013 Training Series #1 Difference

1、数列a1到an,q个询问(L,R),问aL到aR是否互不相同。2、这道题刚拿到就觉得是线段树,但是要维护什么信息?刚开始,我维护了min和max两个信息,但是这只适用于判断aL到aR是否相同,而不能判断是否不同。因为,只要有两个数数值相同,就认为aL到aR是不同的。直到比赛结束,我都没有想出该维护什么信息。后来问了别人,知道应该用一个数组a来保存离第i个数最近的与它数值相同的数的位置j。然

2013-10-13 10:47:52 394

原创 UVa OJ 542

1、这道题考条件概率。。。刚开始temp=(2#include#include#includeusing namespace std;int main(){    //freopen("a.txt","r",stdin);    string s[16];    double a[16][16],d[16][5],p,sum;    int temp;   

2013-10-11 23:43:49 248

原创 UVa OJ 10759

1、刚开始没思路,后来到网上搜题解,发现是用递推的方法。。。嗯,长知识了。。。2、0和1的时候特殊处理,其他情况用gcd即可。#include#includeusing namespace std;long long d[25][150];long long gcd(long long a,long long b){    return b==0?a:gcd(b,a%b

2013-10-10 22:31:50 327

原创 UVa OJ 10491

1、就是条件概率的计算。。。一次AC~生活真美好啊~#includeusing namespace std;int main(){    int ncow,ncar,nshow,ntot,all;    double p;    while(scanf("%d%d%d",&ncow,&ncar,&nshow)==3){         ntot=ncow+ncar;al

2013-10-10 14:16:33 348

原创 UVa OJ 10105

1、数学题。。。因为涉及求组合数,本以为会出点小状况的,没想到AC得这么容易~#includeusing namespace std;long long fac[15];long long C(int n,int k){    return fac[n]/(fac[n-k]*fac[k]);}int main(){    int n,k,temp;    lon

2013-10-09 23:46:10 261

原创 USACO Barn Repair

1、这道题USACO Training前面有讲解,所以不难,就是每次挑“缝隙最小的”堵住就可以了。一次AC~唯一美中不足的是:代码不是很美观。/*ID:mrxy564PROG:barn1LANG:C++*/#include#include#includeusing namespace std;int main(){    freopen("barn1

2013-10-09 21:14:46 327

原创 USACO Mixing Milk

1、基础贪心。。。不难,跟在菜市场买菜一个道理。。。/*ID:mrxy564PROG:milkLANG:C++*/#include #include using namespace std;struct milk{   int p,num;   bool operator         return p   }}a[5010];int

2013-10-07 17:31:52 279

原创 USACO Dual Palindromes

1、有了上一道的铺垫,这个不难,依旧是暴力枚举,一次AC~2、开启新任务咯~/*ID:mrxy564PROG:dualpalLANG:C++*/#include using namespace std;bool is_pal(int *a,int cnt){    for(int i=0;i        if(a[i]!=a[cnt-1-i]) ret

2013-10-07 12:11:22 307

原创 USACO Palindromic Squares

1、因为没看清题目要求,WA了好几次。。。囧。。。2、题目还是比较简单的,暴力法判断是否为回文即可,不过不能被假象迷惑,我很清楚到后面章节就要被狂虐了。。。/*ID:mrxy564PROG:palsquareLANG:C++*/#include using namespace std;bool is_pal(int *a,int cnt){    for(i

2013-10-07 11:38:19 227

ACM2013长沙赛区解题报告

ACM 2013长沙赛区解题报告(有标程),只要一个积分!

2013-11-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除