自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

No Program No Life

落寞是岁月的痕迹。

  • 博客(30)
  • 收藏
  • 关注

原创 【UOJ#34】 多项式乘法(FFT && NTT)

记录一个菜逼的成长。。题目链接 这是一道模板题。。#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;const double PI = acos(-1);const int INF = 0x3f3f3f3f;

2017-01-30 20:59:52 301

原创 【HDU4609】3-idiots(FFT+计数问题)

题目链接 题目大意: 给你n个边长,问能组成三角形的概率如果用一个多项式A(x), 其x^k的系数ak表示长度为k的树枝的数量, 那么A(x)的平方当中x^k的系数就是从这些树枝中取两根可重复的和为k的排列数, 稍作处理即可得到A[i]数组其中i表示两根树枝的长度和为i, A[i]表示这样的组合数量是A[i]种 sum[i] :表示两边和为i的组合数的前缀和具体可见这里

2017-01-30 20:31:43 378

原创 【HDU1402】A * B Problem Plus(FFT)

题目链接 用java,普通的高精度也能过。 但这里记下用FFT的方法学习 及 模板学习资料里解释的很好。#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;const double PI =

2017-01-30 19:10:56 266

原创 雷德(Rader)算法

解释与图转自:http://m.blog.csdn.net/article/details?id=50273039 在实现FFT(快速Fourier变换)计算的时候,第一步要做的就是实现码位(二进制码)倒序,这里有一种算法,叫做雷德(Rader)算法。 废话少说,请看下面0-7的顺序排列与倒序排列: 由上面的表可以看出,按自然顺序排列的二进制数,其下

2017-01-30 19:04:39 1459

原创 主席树模板题

POJ2104 POJ2761 HDU2665 题意都是区间求第k小主席树插入是按数组序列从小到大后排名的插入。 所以之后查询才可以按左右子树的个数递归查询#include <cstdio>#include <iostream>#include <algorithm>using namespace std;const int maxn = 100000 + 1

2017-01-29 17:53:02 559

原创 主席树笔记

给几个链接。 http://www.cnblogs.com/oyking/p/3230296.html http://blog.csdn.net/metalseed/article/details/8045038 http://www.cnblogs.com/Rlemon/archive/2013/05/23/3094635.html等以后再来完善。。

2017-01-27 16:28:18 520

原创 Codeforces Round #393 (Div. 2)-D. Travel Card(dp)

题目链接dp[i] := 表示以第i个旅行结尾的最少花费。#include <bits/stdc++.h>using namespace std;typedef long long LL;const int INF = 0x3f3f3f3f;const int maxn = 100000 + 10;int a[maxn],dp[maxn];int main(){

2017-01-23 21:01:11 301

原创 Codeforces Round #393 (Div. 2)-C. Pavel and barbecue(并查集)

题目链接PS:题目意思实在是难看懂。。题目大意: 有n个串,n个位置,初始一 一对应。 给你一个排列,p1,p2,...,pnp_1,p_2,...,p_n,表示在第ii个位置的串需要移动到第pip_i 给你一个01序列,b1,b2,...,bnb_1,b_2,...,b_n表示如果bib_i为1,那么移动到第ii个位置的串需要翻转。 问要改变排列或序列的个数为多少,

2017-01-23 20:45:22 268

原创 Codeforces Round #393 (Div. 2) -B. Frodo and pillows(贪心)

题目链接题目大意: 有n张床,m个枕头。 每个人至少有一个枕头,相邻的床枕头数差不能超过1.问指定的床最多可以获得多少个枕头。先每张床都给一个。 当床两边都有相邻的床位时。 然后优先给指定的床位,当差超过1时,我们需要给相邻的床位一个枕头。 所以要让指定的床位有两个枕头,要从剩余的枕头里拿出1个。 要让指定的床位有三个枕头,要从剩余的枕头里拿出4个.有两个给旁边的

2017-01-23 20:30:28 218

原创 BestCoder Round #91-B.Lotus and Horticulture(尺取法)

题目链接官方题解 首先考虑应该尝试选择哪些点:区间的左右端点、与区间左右端点距离0.5的点,这样就一定可以包括所有情况。 为了方便处理与区间左右端点距离0.5的点,只要将所有坐标扩大一倍,然后这些点就变成了“与区间左右端点距离1的点”了 考虑选出这些点后如何进行统计。显然先要将可以选的位置进行离散。假如我们选择的温度一开始是负无穷,这时答案是所有的c之和,考虑选择的温度不断

2017-01-22 14:01:24 266

原创 BestCoder Round #91-A .Lotus and Characters(贪心)

题目链接有中文题面。PS:感觉自己还是太年轻,套路还是太少。。orz官方题解: 根据排序不等式,显然应该把字母从小往大放。 一种错误的做法是把正权值的字母取出来从前往后放。错误是因为负权的也可能出现在答案中:放在最前面来使后面每个字母的贡献都增加。 正确的做法是把字母从大往小从后往前放,如果加入该字母后答案变劣就停下来。考虑到要放的字母对整个串的贡献,放前后进行比较。#in

2017-01-22 13:53:46 176

原创 Codeforces Round #392 (Div. 2)-D. Ability To Convert(贪心+dp)

题目链接 题目大意: 给你一个进制数n,和一个不超过60位的数k。 以超过十的数代替字母。 问转换成十进制的数最小是多少。PS:果然dp的题懵逼时刻占大多数。dp[i] := 以第i个数结尾的最小的十进制数。 i枚举起点,j枚举起点往后不超过n的数,那么dp[j+1] = min(dp[j+1],dp[i]*n+x) 比如3^3+2*3^2+3^1 = ((3+2

2017-01-20 13:53:42 279

原创 Codeforces Round #392 (Div. 2)-C. Unfair Poll(xjb)

题目链接题目大意: 数数,从第1,…n排,再从第n-1,…,1排的顺序。问一个人被问最多和最少的次数和指定人的次数。这题真的是xjb乱搞一通。。 特判只有一排和两排的。 以2*(n-1)*m为一轮 不满一轮的特判。 然后剩余k%2*(n-1)*m 暴力标记 最大的一定不在第一行和第n行。最小的一定在第n行。 不在第一行和第n行的每轮计算了两次,其他计算了一次。

2017-01-20 13:41:48 260

原创 Codeforces Round #392 (Div. 2)-B. Blown Garland(水题)

题目链接题目大意: 一个灯泡有四种颜色 ‘R’ — red, ‘B’ — blue, ‘Y’ — yellow, ‘G’ — green. 一个坏灯泡用!表示,每连续的四个灯泡不会有同样的颜色,每种颜色保证至少有一个灯泡正常工作。 给你一串字符串,问每种颜色坏灯泡有多少个。既然每四个连续的灯泡不会有同样的颜色,那么每隔三个就会出现同样的颜色。 也就是说在当前序列的四个

2017-01-20 13:31:29 178

原创 Codeforces 755-D. PolandBall and Polygon(树状数组+计算几何)

题目链接 题目大意: 给你一个凸n边形。从1开始,将点与接下来的第k个点连条线,然后从第k个点开始重复操作,每次操作输出凸边形有多少块区域。不会有三条线交于一点的情况。我们需要知道每次连线相交了多少条线。 假设现在在x点,那么只需要知道x+1,…,x+k-1和x-k+1,…,x-1有多少条线是以这些点为起点的。因为如果是以这些点为起点的线,那么x’+k肯定会超过x或x+

2017-01-18 15:12:03 344

原创 Codeforces 755-C. PolandBall and Forest(交互式题)

题目链接 题目大意: 给你n个点,每个点给出所在树的距离自己最远距离的点。问这个森林有多少棵树。PS:第一次交这种交互式的题。。交了一发给出了Idleness limit exceeded on test 1。一脸懵逼。查了一下发现这种题是用文件读入? 读入不能超过所需,否则就会出现这样的错误。 如果是用printf输出,需要在后面添上fflush(stdout),将

2017-01-18 14:53:18 584

原创 Codeforces 755-B. PolandBall and Game(贪心)

题目链接题目大意: 有两个人在玩一个游戏,每个人都有一个由单词组成的列表。由第一个人先开始,每回合都要说一句在自己列表里的并且未说过的话。谁不能再说就算输。问第一个人是否能赢。 Note:每个人的单词列表里的话都是唯一的,一个单词可被两个人共有。要让对方没话可讲,显然要说两个人共有的话。假设有c个共有的单词,如果c是奇数则第一个人可以说c/2+1个,第二个人可以说c/2个

2017-01-18 14:20:10 314

原创 Codeforces Round #391 -C. Felicity is Coming!

题目链接题目大意: 有n家场馆,m种宠物小精灵。每个场馆有g[i]个小精灵,每种小精灵可以进化。进化规则f(x) = y。类型为x的可以进化为y。每个场馆要保证进化前后,每种类型的宠物小精灵数不变。问有几种方案。标程简直不要太sao。。 数组a[i]的元素表示拥有类型的为i的宠物小精灵的场馆编号 然后用对二维类型的vector排序,排序规则同字符串排序。 然后统计场馆

2017-01-16 19:48:55 237

原创 Codeforces Round #391 -B. Bash's Big Day

题目链接 题目大意: 给你n个数,问最大的gcd不为1的集合大小。把gcd都变成素因子。 先筛选素数,统计包含素因子的数的个数。 有几个剪枝: 1.如果是1直接跳过 2.如果是素数直接加1 然后就直接枚举素因子并统计#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,s

2017-01-16 19:31:23 239

原创 Codeforces Round #391 -A. Gotta Catch Em' All!

题目链接 题目大意: 给你一个字符串,可以随意组合,问其中有多少个”Bulbasaur”。“Bulbasaur”里有7种字符,统计每种字符的个数,又因为a和u有两个,将这两个的字符个数除以2,然后7种个数取最小值即可。#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeo

2017-01-16 19:17:56 228

原创 "玲珑杯”ACM比赛 Round #8-D XJT Loves Boggle(dfs)

记录一个菜逼的成长。。DESCRIPTIONBoggle is a word game designed by Allan Turoff and distributed by Hasbro. It involves a board made up of 16 cubic dice, where each die has a letter printed on each of its sides.

2017-01-14 17:01:57 271

原创 "玲珑杯”ACM比赛 Round #8-E XJT Love Digits(递推)

题目链接 题目大意: 有一个函数f(x) = x的各位数字之和,给你n个数,q次询问 每次询问给出一个x,求从a1,a2,...,axa_1,a_2,...,a_x里选一个最大的数p使得f(p) = f(axa_x)建立一个链接表形式的数组m. m[f[i]].first,m[f[i]].second := 表示到第first个数过,和为f[i]的最大的数second

2017-01-14 16:56:14 469

原创 【POJ2587】Airline Hub(经纬度求距离)

题目链接 题目大意: 给你n个点的经纬度,求一个点到其他点的距离的最大值里是最小。具体解释 需要用到经纬度求距离的公式。 当个模板好了。#include <cstdio>#include <cmath>#include <algorithm>using namespace std;int INF = 0x3f3f3f3f;const double pi =

2017-01-12 20:20:49 364

原创 【POJ2589】Snap(模拟)

题目大意: 有两个人初始有同样数量的牌组,背面朝上放置。两人同时翻开牌组最上面的一张牌,如果不相同,则将牌正面朝上放置在另一堆上。如果相同,则由随机函数判断一个人讲另一个人的正面朝上的牌组全部拿过来放到自己正面朝上的牌组的上面。如果一个人牌组翻完了,则将自己正面朝上的那堆翻转,重复操作,直到

2017-01-12 12:06:38 300

原创 Codeforces Round #390 (Div. 2)-DFedor and coupons(优先队列)

题目链接 题目大意: 给你n个区间,问k个区间相交的最大区间。PS:这类题型貌似挺经典。用优先队列去维护很方便。 把区间按左端点从小到大排序。 创建一个优先队列,默认是大顶堆,但我们要维护区间右端点的最小值 所以只需把区间右端点取负数即可。 判断区间相交大小只需用到队头与当前的区间。#include <bits/stdc++.h>using namespace

2017-01-08 13:30:56 222

原创 Codeforces Round #390 (Div. 2)-B Ilya and tic-tac-toe game(模拟)

题目链接题目大意: 有一个4*4的图,先手画’x’,后手画’o’,谁先满足在对角线或者横线或竖线上有三个连续的标记,则这个人获胜。 问在这个图上画一个’x’标记,是否可以获胜。直接暴力模拟这个过程即可。对角线两条,横线一条,竖线一条#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,

2017-01-08 13:03:19 303

原创 Codeforces Round #390 (Div. 2) - A Lesha and array splitting (贪心)

题目链接题目大意: 将一个长度为n的序列划分成几个连续的子序列,使得每个子序列的和不为0 输出子序列的个数和各区间1.这个序列如果所有元素的和不为0 那么直接输出1个子序列,区间为1到n 2.如果为0且所有元素里存在非0元素,那么这个序列肯定可以划分成两个和不为0的连续子序列,如果都是0则输出NO。 如果存在非0元素,现在要找出这个点,那么从后往前贪心,直到遇到非0。

2017-01-08 12:58:21 229

原创 【POJ2504】Bounding box(计算几何)

题目链接 题目大意: 给你一个正n边形的三个点,求一个边平行于坐标轴的面积最小的矩形,能覆盖正n边形的所有点。这题用到向量旋转公式(逆时针旋转,若顺时针则r改为-r): (x1−x0)=(x′−x0)∗cos(r)+(y′−y0)∗sin(r);(x1 - x0) = (x' - x0) * cos(r) + (y' - y0) * sin(r); (y1−x0)=(

2017-01-05 19:31:57 480

原创 51NOD算法马拉松21(迎新年) A - 1737 配对(dfs树的重心)

题目链接 1737 配对 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 给出一棵n个点的树,将这n个点两两配对,求所有可行的方案中配对两点间的距离的总和最大为多少。 Input一个数n(1<=n<=100,000,n保证为偶数) 接下来n-1行每行三个数x,y,z表示有一条长度为z的边连接x和y(0<=z<=1,

2017-01-03 14:49:39 722

原创 【ZCMU1469】修路(最小生成树)

PS: 这题找不到最初的来源。。应该是OI的一道题目,题目好像又叫最小差异值。题目意思不说了。 一开始差点给骗了,路径最少,其实就是一棵树。 直接暴力枚举下界,套最小生成树算法,保存最小差异值就行了。 如果不存在的话,就是在最小生成树算法里加个变量记录合并的次数,不存在的次数小于n-1.#pragma comment(linker, "/STACK:102400000

2017-01-03 13:47:45 402

空空如也

空空如也

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

TA关注的人

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