
构造题
文章平均质量分 81
九野的博客
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ZOJ 3780 Paint the Grid Again 拓扑排序 策略题
题意: 给定n*n的矩阵 有2个操作: 1、把一行变成X 2、把一列变成O 限制:每行(每列)只能变一次 给定结果图,开始时图无O,X,问最小操作步数(且字典序最小) 直接模拟即可 #include #include #include #include #include #include #include #include using namespace std; #define原创 2014-04-14 12:06:31 · 2770 阅读 · 0 评论 -
2013 长沙邀请赛 ADEGH 题解
HDU 4565 So Easy! 类似fib的构造 设Fn = x + y*sqrt(b) 啪啦啪啦 #include #include #include #include #include using namespace std; typedef vector vec; typedef vector mat; typedef long long ll; ll a, b,原创 2014-07-10 23:29:52 · 1642 阅读 · 0 评论 -
SGU 403 404 405 406 407 408 409 410 411 413
SGU 403 #include int x; int main(){ while(~scanf("%d",&x)) printf("%d\n", 2*x+1); return 0; } SGU 404 #include #include #include #include using namespace std; int n, m; char s[105][105]; int main原创 2014-08-04 16:43:19 · 2349 阅读 · 0 评论 -
Codeforces 364B 背包+贪心
题目链接:http://codeforces.com/problemset/problem/364/B 给定n个物品(每个物品只有1件,d值) 每次可以用手头的物品(设价值为val)换取不在手头的物品(任意件数,总价值要 问能换到的最大价值及在此价值下的最小次数。 思路: 先背包一下跑出所有可能换到的价值,然后贪心一直增加价值直到不能增加。 #include #include #inc原创 2014-06-20 23:29:47 · 1682 阅读 · 0 评论 -
Codeforces 346C Number Transformation II 构造
题目链接:点击打开链接 = = 990+ms卡过 #include #include #include #include #include #include using namespace std; #define N 100010 #define L(x) (x<<1) #define R(x) (x<<1|1) #define ll int ll n,m,k,a,b; ll x[N]; b原创 2014-06-21 18:28:28 · 1282 阅读 · 0 评论 -
HDU 4915 Parenthese sequence _(:зゝ∠)_ 呵呵
呵呵不是我做的 #include #include #include const int N = 1000000 + 10; char s[N]; int d[N], num[N]; int main() { while (~scanf("%s", s)) { memset(num, 0, sizeof num); int len = strlen原创 2014-08-05 17:30:58 · 1844 阅读 · 0 评论 -
Spoj 9887 Binomial coefficients 构造
题目链接:点击打开链接 #include #include #include #include #include using namespace std; const int MAX_N = 507; const long long INF = (long long)1e15; typedef long long ll; typedef pair pii; ll C[MAX_N][MA原创 2014-07-15 00:08:00 · 1666 阅读 · 0 评论 -
HDU 4961 Boring Sum 构造题
用一个数组c, c[i]表示i这个数出现的最近数字是几。 那么当加入一个6,则 c[1] = c[2] = c[3] = c[6] = 6; ==最近怎么都要开挂啊。。 #include #include #include #include using namespace std; typedef long long ll; const int N = 100005; inline原创 2014-08-19 19:47:08 · 1352 阅读 · 0 评论 -
SGU 238 Uncle Vasya and Bags for Potatoes 规律+构造
题目链接:点击打开链接 题意: 地上有n个背包,编号从1-n 下面n行第i行: 第一个数字表示背包i里有几个背包。 这样就得到了n个背包的一个状态。 问:有多少个背包状态可以通过一系列的操作达到输入的状态。 每步操作: 选取一个在地面上的背包a,然后把a背包内部的背包放到地上,把地上的放到a背包内部 思路: 我们可以把背包的嵌套关系 用一个图来表示。 就得到了一原创 2014-09-18 16:19:01 · 1268 阅读 · 0 评论 -
URAL 1737 Mnemonics and Palindromes 3 构造
题目链接:点击打开链接 题意: 给定n #include #include #include using namespace std; char a[][4] = {"abc", "acb", "bac", "bca", "cab", "cba"}; int main() { int n; while (~scanf("%d", &n)) { if(n * 6原创 2014-09-18 16:39:28 · 1363 阅读 · 0 评论 -
ZOJ 3810 A Volcanic Island 构造题
题目链接:点击打开链接 学弟是厉害啊。。 #include #include #include #include #include using namespace std; int vis[110][110],a[110][110],n; void fuck1() { for(int ii=1;ii<=n/2;ii++)//7 { int i=n,j=ii; in原创 2014-09-08 14:20:06 · 2358 阅读 · 4 评论 -
SGU 232 Infinite Fraction Hash
题目链接:点击打开链接 #include #include typedef unsigned long long ll; const int key = (int)(1e9) + 7; const int N = 150010; char b[N], a[N + N]; ll xp[N], h[N + N]; int len; void get() { char ch; wh原创 2014-09-18 16:14:03 · 1427 阅读 · 0 评论 -
Codeforces 482B Interesting Array 构造+线段树判可行
题目链接:点击打开链接 题意: 构造一个n长的序列,m个限制: 每个限制[l, r] q 序列要满足 区间[l,r]的所有数 & 起来结果是q 思路: 直接构造,然后判可行就好了。。 #include #include #include #include template inline bool rd(T &ret) { char c; int sg原创 2014-10-25 22:41:27 · 1479 阅读 · 0 评论 -
UVALive 6533 Inverting Huffman 哈夫曼树(构造
题目链接:点击打开链接 给定哈夫曼树的n个原创 2014-10-30 16:12:02 · 1976 阅读 · 0 评论 -
Codeforces 476D Dreamoon and Sets 规律+构造
题目链接:点击打开链接 题意: 输出n组集合,每组4个。 对于任意一组中的4个元素,一组内任意2个数的gcd==k 且n组的所有数字各不相同。 要使得n组中最大的数字最小。 问: 输出最大的那个数,并输出n组的数字。 思路: 首先能得到,当把这组数字都/k,则任意两个数互质。 然后就是规律: 1 2 3 5 7 8 9 11 对应+6 #include #includ原创 2014-10-17 20:24:50 · 1438 阅读 · 0 评论 -
UVALive 6088 Approximate Sorting 构造题
题目链接:点击打开链接 题意: 给定一个n*n的01矩阵 我们跑一下样例== 4 0111 0000 0100 0110 0123 \|____ 0|0111 1|0000 2|0100 3|0110 用0-n-1随便构造一个序列: 如:1230 我们计算1230的权值 : int ans = 0; 对于个位0,我们查找第0行:0111,0前面的数原创 2014-11-02 11:49:49 · 1403 阅读 · 0 评论 -
Aizu 1263 Network Mess 树的直径+构造
题目链接:点击打开链接 Network Mess Gilbert is the network admin of Ginkgo company. His boss is mad about the messy network cables on the floor. He finally walked up to Gilbert and asked the lazy netwo原创 2015-03-31 14:32:09 · 1536 阅读 · 0 评论 -
2014 北京邀请赛ABDHJ题解
A:点击打开链接 构造,结论是从第一行开始往下产生一条曲线,使得这条区间最长且从上到下递减, #include #include #include #include #include #include #include using namespace std; #define N 100005 vectorG[N], P[N], tmp; sets[N]; set::iterat原创 2014-07-03 23:27:08 · 1566 阅读 · 0 评论 -
CodeForces 26C Parquet 构造题
题目链接:点击打开链接 #include #include #include #include #include #include using namespace std; #define N 105 int n,m,a,b,c; char s[N][N]; setmyset; bool inmap(int x,int y){return 0<=x&&x<n&&0<=y&&y<m;}原创 2014-07-02 20:00:58 · 1411 阅读 · 0 评论 -
HDU 3832 BFS
题意: 给定n个圆,若2个圆之间相交或相切我们称之为连通 问前3个圆连通的情况下,能删除最多多少个圆。 题意可以转为: 给定n个点(3-200)的无向图,0 、1、2这3个点(即输入的前3个点)连通情况下删掉一些点,问最多能删多少点 思路: 暴力枚举每个点到0,1,2的单源最短路。 虽然那个点所在的路径存在重复,但一定有某点使得此路径不重复。 这样就有了对答案的原创 2014-04-16 23:04:24 · 1394 阅读 · 0 评论 -
Uva 12009 平方数尾数与自身相同 dfs 构造
题目链接:点击打开链接 题意:rt 思路:从最低位开始构造,若x位的平方数是自身则继续构造。 mark: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #inc原创 2014-05-07 00:17:22 · 1650 阅读 · 0 评论 -
HDU 2847 Binary String 给定二进制n与整数k,插入0/1使得n能整除k,求最小的解
题意: 给定二进制n与整数k 允许在任意位置插入0/1使得n能整除k 求最小的n 显然这样的n一定存在,且k 思路: 首先是 x*k一定是 k 的倍数 所以枚举 x = 1 -> 正无穷 若 字符串s 能构造成 x*k 则说明x*k是一个解 且此时x最小,即 x*k是最小解 构造过程是 先把x*k变成一个二进制字符串 t原创 2014-04-24 22:20:39 · 1939 阅读 · 0 评论 -
Codeforces 446B DZY Loves Modification 矩阵行列分开考虑 优先队列+构造
题目链接:点击打开链接 题意: 给定n行m列的矩阵 k次操作,一个常数p ans = 0; 对于每次操作 可以任选一行或一列, 则ans += 这行(列)的数字和 然后这行(列)上的每个数字都-=p 问最大的ans 思路: 首先我们设最终选了 行 i 次,则列选了 k-i 次 那么假设我们先全部选行,然后选列,则每次选列时,要-= i*p 这样最后是 -= i原创 2014-07-14 12:46:52 · 1635 阅读 · 0 评论 -
NWERC 2011 ABCDEH 题解
A:SPOJ NWERC11A A - Binomial coefficients 题解:点击打开链接 B: 点击打开链接 Bird tree 从下到上发现是个gcd的过程(辗转相除 #include #include #include using namespace std; int main() { int T; scanf("%d", &T);原创 2014-07-15 00:13:01 · 2397 阅读 · 0 评论 -
Codeforces 396B On Sum of Fractions 规律题
题目链接:点击打开链接 我们把 1 / { u(i)*v(i) }拆开-> (1/(u(i)-v(i)) * ( 1/v(i) - 1/u(i) ) 若n +1 是素数,则显然(1/(u(i)-v(i)) * ( 1/v(i) - 1/u(i) ) 这样完全相同的式子有 u(i)-v(i) 个 那么就可以把前面系数约掉,那么剩下的式子就是 1/2 - 1/(n+1) 若不是,则原创 2014-06-23 23:16:02 · 1368 阅读 · 0 评论 -
Codeforces 309C Memory for Arrays 二进制模拟进位
题目链接:点击打开链接 题意: 给定n个箱子m个物品 下面n个数字表示箱子的容量 下面m个数字b1-bm 表示物品体积为2^bi大 问最多有多少个物品可以放入箱子。 思路: 贪心,先放小的,小的不能放再放大的 显然我们把n个箱子拆成二进制,然后模拟二进制减法运算。 剩下就是简单模拟 #include #include #include #include #include #in原创 2014-06-23 23:20:41 · 1395 阅读 · 0 评论 -
Codeforces 362D Fools and Foolproof Roads 构造题
题目链接:点击打开链接 题意: 给定n个点 m条边的无向图 需要在图里增加p条边 使得图最后连通分量数为q 问是否可行,不可行输出NO 可行输出YES,并输出添加的p条边。 set走起。。 #include #include #include #include #include #include using namespace std; #define N 123456 #defin原创 2014-06-21 19:08:02 · 1669 阅读 · 0 评论 -
Codeforces 15D Map 单调队列+构造
题目链接:http://codeforces.com/problemset/problem/15/D 题意:给定n*m的矩阵,每个点都是一个地基,上面的数字表示该地基的高度。 再给定a*b的小房子,要把a*b放在这个矩阵上,显然建房子要保证选取的地基高度一致。 若不一致,则要把选取的a*b大的矩阵中所有地基都挖低使得和其中一块最矮的地基高度一样,花费是挖的高度和 操作: 选取当前花费最小原创 2014-06-26 00:20:10 · 1848 阅读 · 0 评论 -
Codeforces 12E Start of the season 构造 一个n*n矩阵使得每行恰好有一个[0,n-1]且对称
题目链接:点击打开链接 题意: 给定一个n 构造 一个n*n矩阵使得每行恰好有一个[0,n-1]且关于主对角线对称 且主对角线必须全为0 #include #include #include #include #include #include #include #include #include #include #include using namespace std; #defin原创 2014-06-26 17:43:16 · 1683 阅读 · 0 评论 -
PJOI 1024 Hamilton Circles 矩阵快速幂
题意:给定2*2*n的立方体 我们认为1*1*1 的小格子是一个顶点 有公共面的顶点认为有一条无向边 给定n 问有多少条哈密顿回路 结论:a[n] = 4*a[n-1] - a[n-2]; (n>=3) 别问我怎么知道的,我也不知道。。。TAT 然后有注意一点,这里面涉及到了减法,矩阵快速幂后要注意ans可能 #include"cstdio" #include"iostre原创 2014-05-15 16:41:53 · 1524 阅读 · 0 评论 -
BNU 25593 Prime Time 记忆化dp
题目链接:点击打开链接 题意: 一个游戏由3个人轮流玩 每局游戏由其中一名玩家选择一个数字作为开始 目的:获得最小的得分 对于当前玩家 O ,面对 u 这个数字 则他的操作有: 1、 计分 u +1 ,然后 u++; 2、计分 u / x, 然后 u /= x; 其中x为u的因子且x为素数 然后下一个玩家继续上述操作 3个人各操作一次 为1轮 当一轮结束后,若u==1 则游戏原创 2014-07-17 21:01:10 · 1148 阅读 · 0 评论 -
Codeforces 429D Tricky Function 最近点对
题目链接:点击打开链接 暴力出奇迹。 正解应该是最近点对,以i点为x轴,sum[i](前缀和)为y轴,求任意两点间的距离。 先来个科学的暴力代码: #include #include #include #include #include #include using namespace std; #define N 100050 #define ll __int64 ll a[N], su原创 2014-05-12 15:39:16 · 2125 阅读 · 1 评论 -
Codeforces 429B Working out bfs构造
题目链接:点击打开链接 题意:给定n*m的矩阵 有一个人a从左上角↖走到右下角↘,只能↓或→走 另一个人b从左下角↙走到右上角↗,只能↑或→走 使得2个人的路径有且仅有一个格子是相交的。 统计2个人的权值和(相交格子的权值和不计) 问最大的权值和是多少。 思路: 首先转换一下题意,也就是找一个格子与4个角落连不相交的线。 我们观察相交的那个格子,那个格子的上下左右必然对应着一个角原创 2014-05-12 15:34:42 · 2152 阅读 · 0 评论 -
Codeforces 355C 策略题
题目链接:http://codeforces.com/problemset/problem/355/C 题意: 给定n个杠铃的重量,问把所有杠铃举一次需要的最小能量 1、每次只能举最左边或最右边的一个杠铃 2、举一个杠铃可以用左手或右手,花费为 wi * l (wi*r) 3、若这次用左手,上次也是用左手,则要多花费 Ql 的能量。若连续用右手则要多花费Qr 显然我们最后会举一个杠铃,原创 2014-04-13 22:22:08 · 1552 阅读 · 0 评论 -
CodeForces 21C Stripe 2 构造题
题目链接: 题目链接:点击打开链接 #include #include #include #include #include #include #include #include using namespace std; #define inf 10000000 #define N 100050 #define ll __int64 ll n; ll a[N], lsu原创 2014-06-30 19:56:01 · 1594 阅读 · 0 评论 -
Codeforces 394D Physical Education and Buns 胡搞
题目链接:点击打开链接 题意:给定n个数的序列(可以排序) 操作一次可以使得某个数++或--。问最少操作几次使得序列变成一个等差序列 输出: 第一行输出最少操作的次数 第二行输出等差数列里的最小项 和 公差的绝对值。 思路:枚举公差,公差范围一定是0到 2Max. 先排个序。 我们使得首项不变,形成一个等差数列。 然后让整个数列位移至 操作后的数组的差值 最小值 == 0,这样这原创 2015-07-05 13:39:30 · 1510 阅读 · 0 评论