摘要:大体思路很容易想到,用邻接矩阵存储,floodfill之后细节:每个square墙的方向,一开始还想要不要写个结构体,4个方向的bool,能存下的.仔细一看2^0,2^1,2^2,2^3,所以直接存储下来就行了,floodfill时,(x>>n)&1就好了仔细阅读output中后面那一段文字,显然是在告诉我们搜索方向for j = 0 to m-1 for i = n-1 downto 0输出第一个答案就可以了,还有尝试东方和北方即可再说floodfill,二维数组存储标号,先置为-2,还需要sum数组存储每个标号共有多少个房间差不多分析好了,动工-------------
阅读全文
摘要:顶点:verticle,also called node边:edge边权图(edge-weighted graphs),或者带权图(weighted graphs),点权图(node-weighted graphs)如果一条边的起点和终点都是同一个顶点(form (u,u)),这条边被称为环边(self-loop)简单(simple) 图是指在边集 E 中,没有环图,且一条边不重复出现的图。如果图中多次包含了同一条边,或者包含环边,这种图被称作复杂图(multigraph)。连接(incident)如果顶点 u 和 v 被一条边相连,那么 u 和 v 就是相连(adjacent)的.如果边的总
阅读全文
摘要:沙茶表示先是写了个生成素数的,90+M...........即使加入一个只存奇数的小优化,依然挂.不过写了这个表示会筛法打素数表了 - - 其实自己完全可以估算出需要的内存是10^8/1024/1024 即使优化/2,40+M依然会挂- - 不过noip就不会了 - - 一般256M~View Code #include<iostream>#include<cstdio>#include<cmath>#include<cstring>using namespace std;unsigned long maxn;void getprimelist(
阅读全文
摘要:这题入门DP..因为以前写过了..所以搞起来很快但是又卡在某些细节花了很些时间此次教训,再也不把max,min写成宏,比如这次很多地方需要把(max())像这样括起来..写成函数方便多!提交的时候又忘记delete fropen的注释了.....悲剧/*id:y7276571lang:c++task:numtri*//*dp:f[i][j]=max{f[i+1][j], f[i+1][j+1]}(i >= 0 && j <= i)*/#include<iostream>#include<cstdio>#define max(x,y) x &g
阅读全文
摘要:好高欣~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~好激动~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~一个月了吧,终于搞掉这道题了,bfs =-=下面开始总结- -我的思路比较繁杂,总体上是bfs对每个状态6种方法倒水都写了呃,但是这个函数真的纠结了我很久,不好搞清楚究竟要传递什么值过去,修改了很多,编程基本功不行吧,最终办法是传递这个状态的指针(int模拟),然后from,to两个指针,//等等,突然觉得我好像写错了,但为什么也过了.....按照我的思路,用temp记录下当前状态要操作两个瓶子的水,
阅读全文
摘要:3个优化就可以过了。。。预处理所有bisquare并排序,以及一个bool数组判断是否有某个bisquare我的思路是先b后a。。。1.要满足有N个数 b <= MAXNUM/N2.a <= MAXNUM-b*(N-1),不满足就break3.a从预处理的bisquare数组中顺次选择最多得3.4s吧。。。---------------------------------------------------------------------------------------------------------------粗略看了看0.x sAC同学的题解。。。应该是枚举b太费时
阅读全文
摘要:思路基本上是看看题解自己想想出来的。通过这题自己以后应该能对位运算加速有一些印象,逐步积累技巧,毕竟我是看着位运算的标题先自己想了很久而又再看题解恍然大悟的。顺便也第一次写bfs(bfs+位运算)。 第一次写。。而且是两者,所以存在很大的困难。。这不代码还没搞出来,每一个细节都要自己专研。再说枚举算法,看样子是说枚举每一种可能,然后比较出最小步骤吧。就这题来说,dfs和枚举有什么差别?不都是要遍历所以的节点,况且dfs还要考虑会不会爆栈,手工栈。希望自己的见解是正确的,可惜没找到人交流。没有办法,自己可以说没有写过dfs,bfs,脑子里的确有些混淆。后面一些规律性优化的算法?不准备看了。时间.
阅读全文
摘要:参见大牛博客:http://starforever.blog.hexun.com/2097115_d.html自己是无论如何也想不到那里去的,特别是最后一种情况的分类讨论不仅如此,此题编码难度也非常的大,这给本来基础不好的我带来很大压力。还是决定先围观下白书生成全排列部分,周四再来写此题基本思路:读入数据/*生成每一组可能数组rec 0..3存放编号,调用next_permutation不断生成编写swap_permutation(int k){if(k == 4) cal();else swap_permutation(k+1); swap(x,y); swap_permutation(k+
阅读全文
摘要:唔..这道弱暴的贪心题花了我不少于半个小时,先简述解题思路之前就有模糊的思路,顺序计算出相邻奶牛之间距离,然后贪心最小的贪心遇到的麻烦就是到底贪多少个间隔,纠结无比之久,搞定之后发现我连qsort的cmp都写错了.尼玛样例还是不过,仔细思考,得出贪距离时,每一段都少了一个端点,于是+M样例过了交上去还是不过.我默认奶牛input有序了....于是qsort之.还不过...看数据.....忘记极限情况,即木板数多余牛= =...最后加个判断.简直弱暴了.唯一高兴的是,这道题是完全在vim下写+调试的,就是笔记本键盘不给力,效率低= =今天对于vim,算是进入一个新的小阶层~~~不再是只会hjkl
阅读全文
摘要:直接贪心嗯..这题都会的/*ID:y7276571LANG: C++TASK: milk*/#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAXN 5000typedef struct milk{ int cost, ans;}milk;int cmp(const void *a, const void *b){ return ((milk*)a)->cost - ((milk*)b)->cost;}int main(void){ freopen("milk.i
阅读全文
摘要:枚举的数据不大于4字节整形,最多用33位char就可以储存其二进制了。有上一题的基础。。这题就很简单了。。而且以前明明写过对初学者很难的mirrored palindrome 0 0网上有说进制转换用Itoa,不过这尼玛不是ansi c的,而且2-16进制= =/*ID:y7276571LANG: CTASK: dualpal*/#include<stdio.h>#include<string.h>#define MAXLEN 50char str[MAXLEN];int ispal(char *s){ int i, len = strlen(s); for(i = 0
阅读全文
摘要:英语坑人。。。唯一想说的= =没读懂题意,果断改了几次。。。/*ID:y7276571LANG: CTASK: palsquare*/#include<stdio.h>#include<string.h>#define MAXN 50char alpha[] = {"0123456789ABCDEFGHIJKLMN"};int ispal(char *s){ int i, len = strlen(s); for(i = 0; i <= len/2; i++) if(s[i] != s[len-i-1]) return 0; return 1;
阅读全文
摘要:这道题属于稍微想一下就很容易实现的。如果生成所有可能的name,再来比较,那么可能的数据 3^12(*5000),,不管能不能过。。总之很大。//刚看了题解,因为dict是有序的,可以用二分搜索,显然我不会。。。我感觉容易实现的就是用每个单词来比较。。5000*3*12 = =/*ID:y7276571LANG: CTASK: namenum*/#include<stdio.h>#include<string.h>#define MAXN 5000#define MAXLEN 14char name[MAXN][MAXLEN], p[10][3] = {"AA
阅读全文
摘要:不想再写下去了,对于这道题的模拟,我实在没什么好办法,在不断修改的过程中,bug也不断出现。这道题没AC,暂时搁在这里,心情不好!/*ID:y7276571LANG: CTASK: transform*/#include<stdio.h>#include<string.h>#define MAXN 10char a[MAXN][MAXN], b[MAXN][MAXN], c[MAXN][MAXN], d[MAXN][MAXN];int n;int rotate(int t){ int i, j; while(t--) { for(i = 0; i < n; i+.
阅读全文
摘要:最开始还以为自己做不出来。仔细思考之后想出了两种思路:1.直接开10^7的大数组,开char的应该不会爆吧。。藐视noip最多是开3*10^7的int大的数组2.用结构体储存数据,先读入一个农民,然后循环读取,每读一个,判断首位是否相连相连则更新相连长度,否则更新最大空缺,更新最大相连长度开始写代码 = = 只写第二种罢了//实实在在给自己一棒啊,结构体还不怎么会写//再总结下:使用指针之前肯定要先申请结构体分配内存 eg struct test a, *b; b = &a;//这样用b来指向结构体a,然后输入输出就分别 &(a->element) a->eleme
阅读全文
摘要:是我遇到的比较复杂的模拟了0 0 这道题先是自己写的糟糕版,交上去WA了,跟着数据改..最后改得面目全非....昨天找标程交的!今天稍微修改了一下..就过了T T这题对我来说没考虑到的是以下两点:1.在枚举每个端口,统计最大长度的时候,没有想到要是全是某个字母,那不是不停转圈.(另:我在编写此功能函数时,如果判重也很无力,等等看看标程)2.就算考虑上面那一点,遇到全是某个字母的情况,会重复统计,我在最后判断统计长度大于输入长度则输出输入的长度标程重要的部分:1.定义更为完整的mod,而我是每次mod各种判断,麻烦.2.统计函数很值得我借鉴,首先,用dir储存方向,要单独处理的只是初始位置,接着
阅读全文
摘要:居然是因为少输出化12月而调试了很久T T然后题目有说:OUTPUT FORMATSeven space separated integers on one line.7个空格有木有啊!我读错了?第一次交上去就应该最后多了个空格WA了T T就是模拟每月13日星期几加上。。。。初始化每月天数和闰年= =。/*ID:y7276571LANG: CTASK: friday*/#include<stdio.h>#include<string.h>#define YEARLEN 400#define MOUTHLEN 14#define WEEKLEN 7int leap[YEA
阅读全文
摘要:简单练习题嗯,不过找出自己一个严重问题。并不知道memset怎么用。暂时记为对于非charmemset( , 0(-1), sizeof()) 我直接填的数组长度导致初始化未成功。因为涉及memset,sizeof。以后再理解。//http://yiyunscu.blog.163.com/blog/static/36263320201042554133370/这篇不错,这里第一段就找到我所需要的了。按字节清空!1. memset void *memset( void *dest, int c, size_t count );所需头文件"memory.h",主要功能是将目标指
阅读全文
摘要:A不掉的题1.2 ???1.4.1 Packing Rectangles 完全没思路,就是看题解也是半懂的,最后一个layout怎么分为4种状态表示不清楚--------------------------------------异议……我个人觉得usaco挺不错的第一章 模拟 弱搜索第二章 搜索 动规 图论第三章 (貌似是杂题……)第四章 强搜索 强图论第五章 各种乱七八糟的难东西第六章 水题,动规,trieNPC_T感觉总是做数据结构不行,USACO题目比较经典吧还是这两个换着做,主要考虑第一章模拟练熟悉点那么以往Noip第一题不难的话能够拿到,弱搜索,我感觉枚举之类的是广义的搜索吧。(白
阅读全文