- 博客(15)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 POJ1011 搜索+剪枝【很好】
1 题意。2 分析。枚举可能的最小长度,再搜索+剪枝,判断一下该最小长度是否可以由题目所给的一组子木条长度组合而成。剪枝点:。。。#include #include #include using namespace std;//const int INF=0x3f3f3f3f;const int maxn=70;int stick[maxn];int visted
2016-10-30 17:24:40 434
原创 UVA11000 水,注意输入范围&&提前打表看一下数组范围
1 题意。2 分析。①看到2^32,那么数组会不会不够长?这个辗转相加的增长速度足够大吗?提前打表看一下,是不是可以,发现可以,然后再写。②注意看清,N==0也是有判断的。#include#include #include #include using namespace std;typedef long long ll;const int maxn=100;ll
2016-10-30 11:50:54 320
原创 POJ1316 水,Runtime了,注意确定下标不越界再给数组赋值
1 题意。2 分析。第一个Fun函数, OJ返回Runtime Error,我以为是递归溢出了,写了第二个Fun,发现前者也有可能是数组越界,后来证明,是数组越界。So,如果要判断,就在数组赋值前进行判断,防止越界。#include#include #include #include using namespace std;const int maxn=1e4;int
2016-10-30 11:34:02 188
原创 POJ3299 (借助改变的初始变量,得知进入哪种情况)
#include #include #include using namespace std;int main(){ //freopen("out.txt","w",stdout); char a,b; double num1,num2; double T,D,H; double h,e; scanf("%c",&a); char
2016-10-29 15:39:53 246
原创 POJ1003 二分_查找/自定义zero()函数
12①参考的,a.它没有用递归,b.而且抽象出了Zero()函数,c.在细节上它让card[0]=0.0考虑到了小于0.5的情况(不用像自己写的还得特判)——【多想想某个递推的开始第一个值是不是需要为0】,是值得学习的。#include #include #include using namespace std;const double delta=1e-8;co
2016-10-29 10:47:29 480
原创 POJ1005 精度问题、向上取整ceil()与向下取整floor()
1 在 中向上取整ceil();向下取整floor()2#include #include #include #define M_PI 3.14159265358979323846using namespace std;int main(){ //freopen("out.txt","w",stdout); int kase; scanf("%d"
2016-10-29 09:32:02 653
原创 HDU2066 Floyd 裸
1(1)Floyd()函数中,注意K在最外层(2)Floyd()函数中,注意注意在前两层循环后先筛掉一批,对随机数据防超时有很好的表现。2#include #include #include #include using namespace std;const int INF=0x3f3f3f3f;int s,d;int maxn;int mat[1010][10
2016-10-20 19:33:26 303
原创 POJ2774 后缀数组,求两个字符串的最长公共子串
1 学习别人的模板(注意,len是字符串实际长度(不补0的情况下):sa[],下标是该后缀的名次(1到len),值是该后缀的首字符在字符串中的位置(0到len-1);rank_[],下标是该后缀首字符在字符串中的位置(0到len-1),值是该后缀的名次(1到len);heigh[],下标是该后缀的名次(1到len),值是sa[i]与sa[i-1]的公共前缀长度,且heigh[1]是第一名次的后
2016-10-18 23:16:13 463
原创 HDU5521 最短路,添加点
Inspire:将思路理清,将难点抛离出来,将问题抽象化,再思考解决方法。Analysis:最短路问题,难在建图。如果用邻接矩阵,边太多了,而点的个数我们可以接受,仔细读题发现,给出的集合内的任意的两个点的距离都是一定的,于是每个集合构造一个新的点作为中转站,集合内的点都连接两条线到该点,进来再出去,为了防止/2得到浮点数,所以进边和出边的权值都是t,最后结果/2。然后spfa搜两遍最短路,每
2016-10-11 12:07:32 435
原创 UVALive 3942 Trie+dp,白书P209
1Note:①node[maxn][27]、val[maxn],maxn应该远大于存放进该字典树的单词数量,因为Trie的叶子结点数量就已经等于单词数量了。(出现Runtime有可能就是因为数组不够大,程序越界了)②strlen()比较耗费时间,尽量减少它的使用次数,比如在insert()每一个单词时可以用,而在对于整个长字符串时用一次strlen()得到一个全局变量len即可(否则如
2016-10-09 17:41:11 326
原创 HDU5256 LIS变形
奇妙。#include #include #include using namespace std;const int maxn=1e5+10;int a[maxn],dp[maxn];int len;int n;int main(){ int t; scanf("%d",&t); for(int kk=1;kk<=t;kk++){
2016-10-07 22:17:16 298
原创 HDU5929 Basic Data Structure,ccpc,模拟双端队列(两倍大的数组从中间开始向两旁拓展)
1做题时:容易看出规律,最后一个0的后面的1的个数的奇偶性决定了输出结果,第一次超时后,想到应该记录最后一个0的位置即可,于是想用数组存储0的位置(太麻烦,应该用队列或者数组模拟的队列),同时依然用双端队列模拟全部1和0的操作,从而导致一直超时。重现赛后:看完题解后,领悟到模拟并不是单纯地将所有过程全部死板的模拟一遍,我们在抓住问题的本质(规律)时,应该去繁就简,只模拟需要的部分(去掉无效
2016-10-07 21:15:19 351
原创 5927 Auxiliary Set (CCPC) 无根树转有根树
1无根树转有根数,另外注意递归函数有返回值时,莫忘判断,否则TLE#include #include #include #include using namespace std;int kk;vector son[100010];set sset;int p[100010];int a[100010];int visted[100010];int n,q;int
2016-10-06 20:59:03 330
原创 kmp, next 数组
1) poj1961#include char s[1000005];int num[1000005];int main(){ int n,case1=1; while(scanf("%d",&n),n) { scanf("%s",s); int j=-1; num[0]=-1; for(int
2016-10-04 20:48:00 253
原创 cf375b_模拟_每个状态结束时,要及时清零标识变量和累积变量
每个状态结束时,要及时清零标识变量和累积变量。#include#include#include#include#include#include#include #include#include#include#include#include#include#include#include#define memset(ss,b) memset((ss),(b),
2016-10-04 09:52:59 373
acm水题 二叉树模拟 hdu5444,能想到的测试数据都测了还是WA,求大神
2016-03-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人