上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 25 下一页
摘要: 二分H2的位置,判断条件为是否有Hi 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 const double eps = 1e-9;10 11 int N;12 double A;13 14 int dcmp( double a )15 {16 if ( fabs(a) 0 )41 {42 //++cnt;43 double mid = ( l + r ) / 2.0;44 //pri... 阅读全文
posted @ 2013-08-02 21:31 冰鸮 阅读(169) 评论(0) 推荐(0)
摘要: 实际上就是问这个区间编号连续的段的个数,假如一个编号连续的段有(a+b)个人,我把他们分在同一组能得到的分值为(a+b)^2,而把他们分成人数为a和b的两组的话,得到的分值就是a^2+b^2,显然(a+b)^2 > a^2+b^2,所以对于每个区间,尽可能把他们分成尽量少的组。考虑把这些数从后往前添加,每添加一个数num[i],如果num[i]+1或者num[i]-1有且只有一个已经存在,则段数不变;如果num[i]+1和num[i]-1同时存在,则段数-1,如果都不在,则段数+1。对于每个数num[i],我们记录把它添加进去的时候,它对段数产生的影响为c[i]( 即插入num[i]时对 阅读全文
posted @ 2013-08-02 21:09 冰鸮 阅读(219) 评论(0) 推荐(0)
摘要: 原地址:http://www.wumii.com/item/W4Q5yFme个人觉得这是套比较好的搜索题目,涵盖了基本的经典搜索题型。-----------------------------------------------------------格式说明:题目名后面列出个人此题的大致难度(对菜鸟而言)POJ 1069 -The Bermuda Triangle(难)http://acm.pku.edu.cn/JudgeOnline/problem?id=1069题意:用给定三角型填充六边形解法:此题的思想上精华在于坐标化ps:传说中比较bt,确实比较bt,主要很容易写错,我ac了,但程序 阅读全文
posted @ 2013-08-01 18:35 冰鸮 阅读(227) 评论(0) 推荐(0)
摘要: 总体思路参考了 这里。细节:1.控制精度,虽然这题没卡精度,不过还是要控制一下。之前 bool operator#include #include #include #include #include using namespace std;const int MAXN = 20010;const double eps = 1e-9;struct Point{ double x, y; int type; Point( double x = 0, double y = 0, int tp = 0 ): x(x), y(y), type(tp) { } void read... 阅读全文
posted @ 2013-08-01 17:17 冰鸮 阅读(379) 评论(2) 推荐(0)
摘要: 思路参考这里。 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 const int MAXN = 50010; 9 10 struct node 11 { 12 int l, r; 13 int idx; 14 }; 15 16 node Qry[MAXN]; //查询 17 int C[MAXN]; //树状数组 18 int vis[MAXN]; // i 的倍数上一次出现的位置 19 int num[MAXN]; //原数组... 阅读全文
posted @ 2013-07-31 15:01 冰鸮 阅读(251) 评论(0) 推荐(0)
摘要: 一个结论:一个数,如果它的所有数字之和能被3整除,那么这个数也能被3整除。最后一位肯定是0或者5,如果没有就impossible。剩下的就是,如何删除尽量少的数,使所有数字之和为3的倍数。情况比较多,注意考虑全面。 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 const int MAXN = 1010; 8 9 char str[MAXN]; 10 int cnt[14]; 11 int end; 12 13 void OutPut() 14 { 15 bool ok = f... 阅读全文
posted @ 2013-07-29 21:39 冰鸮 阅读(252) 评论(0) 推荐(0)
摘要: 先提个注意点,由于Lowbit(0) = 0,这会导致x递增的那条路径发生死循环,所有当树状数组中可能出现0时,我们都全部加一,这样可以避免0带来的麻烦~~简单: POJ 2299 Ultra-QuickSorthttp://acm.pku.edu.cn/JudgeOnline/problem?id=2299 求逆序数,可以用经典的归并排序做,也是基本的树状数组题目。 POJ 2352 Stars http://acm.pku.edu.cn/JudgeOnline/problem?id=2352 题目意思就是求每个星星左下方的星星的个数,由于y轴已经排序好了,我们可以直接用按x轴建立一维树状数 阅读全文
posted @ 2013-07-29 20:02 冰鸮 阅读(875) 评论(0) 推荐(0)
摘要: O(n^3)的时间复杂度,改了半天交了二三十遍,TLE到死,实在没办法了……跪求指点!!! 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 const int MAXN = 1010; 9 const int INF = 1 tempS[m] - K ) continue; 51 while ( tempS[st] = K ) //特殊情况,只覆盖一个点 82 { 83 flag = ... 阅读全文
posted @ 2013-07-29 19:44 冰鸮 阅读(436) 评论(0) 推荐(0)
摘要: 题意:设原数组为a[i],pos[i]代表第 i 个位置之前有多少个数比a[i]大,求原数组a[i]。这个题意是看了别人的题解才明白,我自己没读出来……方法:假设我们从左往右放,因为后面的数还有可能影响前面的数的位置,所以在最后一个数放完之前,我们没法确定每个数的位置,所以我们反过来考虑,从右往左放。因为每个数前面比它大的数的个数pos[i]已知,我们可以不必关心这些数的具体数值,从而转化为它从右往左走了多少个空格,即pos[i]个,因此这个数放在第 pos[i] + 1 个空格位置上。这个空格所在位置的下标id,即是a[i]。a[i] = id;树状数组或线段树记录区间[1, i ]的空格个 阅读全文
posted @ 2013-07-29 19:38 冰鸮 阅读(300) 评论(0) 推荐(0)
摘要: 搜索+最优性剪枝。DFS的下一层起点应为当前选择的 i 的下一个,即DFS(i + 1)而不是DFS( cur + 1 ),cur+1代表当前起点的下一个。没想清楚,TLE到死…… 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 const int MAXN = 40; 9 10 struct node 11 { 12 int t, id; 13 int cnt; 14 int fruit[12]; 15 }; 16 17 int N, M... 阅读全文
posted @ 2013-07-28 16:26 冰鸮 阅读(363) 评论(0) 推荐(0)
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 25 下一页