不起眼的模型
看见我请叫我去学习
此人很懒
展开
-
cf1260A(div2)
差点拦住我的水题题意:给定两个数c,sumc, sumc,sum要求至少有ccc个整数(可重复,可为0), 满足c1+c2+c3+⋯+cn=sumc_1+ c_2+c_3+\cdots+c_n = sumc1+c2+c3+⋯+cn=summin(∑i=1nci2)min(\sum_{i= 1}^nc_i^2)min(i=1∑nci2)数据范围: n≤10000n \l...原创 2019-11-28 12:43:16 · 115 阅读 · 0 评论 -
计算几何专题(Ⅶ)
题意: 给定一个x的区间(x1, x2),然后给定n条直线,判断这些直线的交点有没有在区间(x1, x2)内;>> face << strategy: 仔细想想 就会发现 针对每两个在区间内相交的直线 都有(y1∣x=x1−y2∣x=x1)(y1∣x=x2−y2∣x=x2)<0 (y_1\mid _{x = x_1} - y_2 \mid _{x ...原创 2019-07-11 15:45:10 · 134 阅读 · 0 评论 -
计算几何进阶(一)
题意: 在一个平面内给定一个点集, 要求在这些点中找到一个三角形, 而且要求这个三角形内没有点(包括三角形的三条边) >> face <<strategy: 默认点1, 2, 3为答案, 当三角形内部有点时,我就更新1, 2, 3为新的点 Complexity : O(n)#include <bits/stdc++.h>#include <bit...原创 2019-07-11 20:16:26 · 162 阅读 · 0 评论 -
异或专题-1
题意:给定一个长度为n的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为0。linksstragegy: 用两个vector存储异或值为i的左端点和右端点,针对每个相同的异或值,我们考虑每个左区间的右端点的右边有多少个左端点(画个图,显然),然后用二分查找答案;#include<bits/stdc++.h>// #include<bits/extc...原创 2019-07-07 14:58:08 · 407 阅读 · 0 评论 -
DP(状压专题三)
题意 :给定n个灯,m个开关, 以及每个开关的效果, 要求灭掉所有的灯至少需要多少次>> face <<Strategy:状压DP, i是一个表示二进制的十进制数,'1’表示开灯状态: dp[i] 达到状态’i’ 最少需要多少次目标: dp[0] -> 全灭边界: dp[(1 << n) - 1 ] = 1 ;其余全部初始成无穷合法判断: 默认...原创 2019-07-18 18:20:20 · 97 阅读 · 0 评论 -
DP(线性专题二)
题意 : 给定线段集合, 求不重合的线段长和>> face <<Strategy:DP, sortings状态: dp[i] : 前i个线段中最长的和边界: dp[1] = length[1];转移: 先排右端点升序 (last_end为上一个可以接上的线段)dp[i]=max(dp[i−1],dp[i−lastend]+len[i]) dp [i] = max...原创 2019-07-17 13:05:33 · 91 阅读 · 0 评论 -
DP(状压专题一)
题意 : 选课问题的变形, 给定若干若干课程, 以及该课程的前置课程, 每做一个课程都会得到a[i]*t + b[i]的收益, 问收益最大是多少>> face <<Strategy:状压DP, i是一个表示二进制的十进制数状态: dp[i] -> 状态’i’的最大收益目标:dp[(1 << n) - 1];边界: 初始化0, 无边界, 直接推转...原创 2019-07-17 21:53:48 · 87 阅读 · 0 评论 -
DP(区间专题六)
题意: 有N个宴会,对于每一个宴会,女猪脚都要穿一种礼服,礼服可以套着穿,但是脱了的不能再用,参加宴会必须按顺序来,从第一个到第N个,问参加这些宴会最少需要几件礼服>> face <<Strategy:区间dp状态: dp[l][r]→dp[l][r]\todp[l][r]→该区间内的最小花费目标:dp[1][n]dp[1][n]dp[1][n]边界: dp[i]...原创 2019-08-04 16:43:35 · 86 阅读 · 0 评论 -
DP(状压专题十二)
题意: 有若干首曲子, 每首曲子具有三个性质, 名字NiN_iNi, 时长costicost_icosti, 还有截止时刻tit_iti,每首歌对答案的贡献是截止时刻减去播完该首曲子的时刻,现给定n首曲子, 演奏总时间, 最低胜利分数, 当且仅当, 播完n首曲子, 最终分数大于等于最低分 不输出 No answer, 其他情况输出最高分数和演奏顺序>> face <<...原创 2019-07-22 20:20:15 · 112 阅读 · 0 评论 -
DP(树型专题5)
题意:给定一棵树, 然后咱们可以给每条边加权1, 现要求: 使得从根节点到每个叶子结点的权和是相同的, 问咱们至少要加几次权;P1131 [ZJOI2007]时态同步strategy : 显然, 咱们得维护每个子树的最大权, 然后修改所有路径使得权和等于最大权, 于是想到dfs搜最大权, 每个节点的贡献都是 m[cur] - way[i].cost - m[way[i].to]感觉根本不是...原创 2019-08-21 21:13:51 · 106 阅读 · 0 评论 -
Educational Codeforces Round 68 (Rated for Div
题意:给定若干平行与坐标轴的线段, 求这些线段组成的图形有多少个矩形>> face << Tutorial:这样考虑, 针对每个水平的线段, 我们需要维护这些垂直的线段:与该水平线段相交的垂直线段的最高点大于水平线段的高度于是我们就可以用权值树状数组来维护该水平线段上有多少条符合要求的线段, 然后再用一个vector装最高点, 于是我们就可以向上扫描, 若在...原创 2019-09-27 16:36:23 · 89 阅读 · 0 评论 -
牛客Laptop(离散+树状数组二维偏序)
题意 给定n个二元组, 求某种二元组–(x,y都不大于另一个二元组)的个数题面Strategy:先对其中一维离散化,然后按另一维升序排列,用树状数组统计前缀和#include<bits/stdc++.h>//#include<bits/extc++.h>// #define oo INT_MAX#define maxn 100009 #define _r...原创 2019-07-05 22:36:53 · 299 阅读 · 0 评论 -
Educational Codeforces Round 67 -- D .subarray sorting
题意: 给定两个长度为N的序列a,b 每次操作可以将a的连续子序列[l, r]排序, 问能否通过若干操作使得序列a变成b题面Strategy: p[i] 代表/p[i] : 数组b内a[i]这个数出现的位置, 转化:将"子序列[l,r]排序" -> 若干len=2的操作 -> 通过相邻swap消除掉[l,r]中所有逆序对, 观察到操作"不会产生新的逆序对",即ans=yes的必...原创 2019-07-05 20:43:19 · 121 阅读 · 0 评论 -
Codeforces Round #573 (Div
题意:题目的意思还是比较好懂的—给定一个平面点集, 求用一个没有上界的矩形去框这些点有几种框法>> face << strategy: wa了几发,很容易把区间算重复, 其实可以这样想, 我们沿着y轴扫, 如果这一条线上只有一个点, 那么这个点对答案的贡献就很好求, 即囊括这一个点的区间数,在该点上方的空间里,横坐标小于等于该点的横坐标的坐标数乘上纵坐标大于等于该点的坐...原创 2019-07-15 14:11:51 · 78 阅读 · 0 评论 -
三分求单峰函数极值
三分求单峰函数极值洛谷P3382 @_@由于题目给定的是 == 单增后单减的函数 == 于是我们就可以画一个图:# 然后联想到原创 2019-05-07 18:52:28 · 409 阅读 · 0 评论 -
马拉车算法poj3974
本题是马拉车模板poj-3974题目链接马拉车博客// #include<bits/stdc++.h>// #include<bits/extc++.h>#include<iostream>#include<string>#include<algorithm>#include<cstdio>#includ...原创 2019-06-09 17:34:19 · 145 阅读 · 0 评论 -
Codeforces Round #568 (Div
A. Ropewalkers题意:给定三个坐标a,b,c, 要求要使他们两两之间相隔距离d所要移动的最少步骤;Strategy: 模拟+暴力, 先排序,然后用d减去两两之差//@Author jasonleft#include<bits/stdc++.h>// #include<bits/extc++.h>#define oo INT_MAX#define l...原创 2019-06-20 14:47:15 · 145 阅读 · 2 评论 -
Nauuo and Cards CodeForces - 1172A
这是一道有趣的模型,里面蕴藏着有有技巧(greedy)参考dalao的参考2lao的我寻思着还是上个链接比较友好引用大佬的题意:题意:每次操作可以吧 a 中任意一个放到 b 的末尾, 同时 把 b 的第一个放到 a 求最小操作次数 使得b递增friendly codes#include<bits/stdc++.h>#include<bits/extc++....原创 2019-06-11 00:16:25 · 303 阅读 · 0 评论 -
Merge it! CodeForces - 1176B
题意 :合并一些数,S.T.3的倍数最多策略: greedy:题目传送门#include<bits/stdc++.h>#include<bits/extc++.h>#define oo INT_MAX#define ll long long#define db double#define mp(a, b) make_pair(a, b)#define me...原创 2019-06-11 14:00:45 · 191 阅读 · 0 评论 -
Lose it! CodeForces - 1176C
题意: 给定一个序列,有n个元素, 每个元素只能用一次,求出最多能拼成的数组"4 ,8, 15, 16, 23, 42"的个数T,并输出n - 6T;策略:先用1,2,3,4,5,6 替代原数组,然后遍历,若当前位置为i时,如果a[i] = 1 则cnt[1]++,否则必须保证i-1的个数大于i已有的个数,才能将i计入一个新的子序列,cnt[i]+1。最后cnt[6]就是最多的满足要求的子序列个...原创 2019-06-11 19:37:00 · 500 阅读 · 0 评论 -
计算几何专题(一)
题意:给定一个矩形的的四个顶点,要求判断点是被否在矩形内部>> face <<Strategy: see photo:that is :{y≤x+dy≤2n−d−xy≥x−dy≥d−x \begin{cases}y \leq x + d \\y\leq 2n-d-x \\ y\geq x -d \\ y\geq d - x\end{cas...原创 2019-07-08 20:00:22 · 191 阅读 · 0 评论 -
Codeforces Round #570 (Div. 3)--F - Topforces Strikes Back
题意:给定一个数组, 要求在这数组里面选n(1 <= n <= 3)个数, S.T 这三个数的和最大, 且两两互质我感觉这次题意写的还可以Strategy: 贪心, 先排序, 找到一个最大的数,然后在删掉数组中与该数不互质的数,得到一个数组, 重复上述操作。。。。然后样例都没过,,,其实大体上是对的,但是后来才知道,要加一个特判Let’s imagine that th...原创 2019-06-30 02:05:12 · 168 阅读 · 0 评论 -
Codeforces Round #570 (Div. 3)-- Subsequences
Easy version :题意:给定字符串s,数k, 求 $ min(\sum_{i=1}^k (n - len(i_{th}lensubstring))$ 且,substrings 不可重复, n是母串的长度。可能我没说清楚stragety: BFS ,数据还比较小#include<bits/stdc++.h>#include<bits/extc++.h>#...原创 2019-06-30 17:27:22 · 247 阅读 · 0 评论 -
计算几何专题(六)
题意:给定一个由很多正三角形组成的六边形的边长,求该六边形是由多少个三角形组成的>> face <<Strategy: 然后仔细想想就会发现:ans=(a1+a2+a3)2−a12−a32−a52 ans = (a_1 + a_2+ a_3)^2 - a_1^2 - a_3^2 - a_5^2 ans=(a1+a2+a3)2−a12−a32−a52#i...原创 2019-07-10 21:42:16 · 157 阅读 · 2 评论 -
Codeforces Round #571 (Div.2) C
题意:给定两个01序列a,b($ len(a) >= len (b)$), 然后要求让b,按位于a比较,如果不同之处有偶数个,那么ans++,最后输出ans;可能我讲的不是很清楚Strategy: 每比较一次,时间复杂度都是 O(b.size())O(b.size())O(b.size()), 其实是可以优化到 O(1)O(1)O(1)的 , 其实也不难想, 我们设两个待比较的两个字符...原创 2019-06-30 21:20:48 · 123 阅读 · 0 评论 -
汉诺塔变形poj - 1958
做完本题后,仿佛对汉诺塔有了全新的理解题意如下:引入 d[i] 表示三塔模式中最少步数d[n]=2∗d[n−1]+1 d[n] = 2 * d[n- 1] + 1d[n]=2∗d[n−1]+1则状态转移方程:F(n)=min(∑i=1n2∗F[i]+d[n−i]) F(n) = min( \sum_{i=1}^n 2*F[i] +d[n - i])F(n)=min(i=1∑n2∗F[...原创 2019-05-06 21:20:33 · 188 阅读 · 0 评论