思维技巧
Jerry99s
OI -> ACM -> AI
展开
-
CF#306(Div. 2) E-Brackets in Implications
题目:http://codeforces.com/contest/550/problem/E 分析:尝试最后两位: 0 1 一定是1 1 0 一定是0 1 1 一定是1 0 0 比较复杂,可以分成:…->(0->(…->0))->0 代码:#include <cstdio>#include原创 2015-06-13 21:59:35 · 367 阅读 · 0 评论 -
Codeforces 292E. Copying Data (zkw线段树+加tag)
题目: http://codeforces.com/problemset/problem/292/E分析:用了zkw线段树+tag的方式乱搞。代码://jerry99#include &lt;bits/stdc++.h&gt;using namespace std;typedef long long llong;const int tmax=1e5+5;int n,m,a[tma...原创 2019-01-22 18:49:58 · 292 阅读 · 0 评论 -
Codeforces 675D. Tree Construction(二叉搜索树性质)
题目: http://codeforces.com/problemset/problem/675/D题意:n个不同的数,依次按要求插入二叉搜索树中,输出每个数的父节点是谁。要求如下:1.第一个数是根节点;2.插入a[i]时,从根节点开始向下走,若当前节点的数&amp;lt;a[i],向右走,否则向右走,若走不下去则生成新节点并赋权值为a[i]。分析:性质①:a[i]要么是a[1] ~a[i...原创 2019-01-21 17:34:48 · 330 阅读 · 0 评论 -
Codeforces 402E. Strictly Positive Matrix (矩阵k次幂的意义+tarjan)
题目: http://codeforces.com/problemset/problem/402/E题意:给定一个非负矩阵A,判断是否存在k,使得A^k元素全为正数?分析:由于元素非负,所以把所有大于零的元素设为1。若aij为1,认为有一条边(i->j);手模一下矩阵乘法就知道,A^k中aij=1代表走至多k步能不能从i到j;如果A^k矩阵元素全正,也就是要求所以点均在一个强...原创 2019-01-23 19:34:58 · 472 阅读 · 0 评论 -
HDU6435 CSGO (最大曼哈顿距离+状态压缩)
题目: http://acm.hdu.edu.cn/showproblem.php?pid=6435题意: 有n个主武器; 有m个副武器; 每个武器有一个主属性值S,k个副属性值X[i,j](1<=i<=n,1<=j<=k); 选一种主武器i+一种副武器j; 使得Si + Sj +∑ | X[i,k] - X[j,k] |最大; 求最大值。分析: 首...原创 2018-08-23 16:43:20 · 433 阅读 · 0 评论 -
HDU6312 Game (2018多校第二场1004) (奇淫技巧+数论)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6312题意: 给n个数1~n; 一个人每次操作可以拿走一个数及它的所有因数; 不能操作者输; 求先手的输赢;分析: emmm(知乎题) 若先手面临的状态为输,那么先手拿1,后手面临必输状态; 若先手面临的状态为赢,那么后手还是必输状态;代码:#include <bit...原创 2018-08-06 10:24:27 · 274 阅读 · 0 评论 -
CodeForces 697C. Lorenzo Von Matterhorn(二叉树+map)
题目:http://codeforces.com/problemset/problem/697/C 题意: 一颗二叉树; 操作1:u->v路径上所有边权值+w 操作2:计算u->v路径权值和 分析: 一开始写了状压,毕竟深度最多60,0向左走,1向右走,写太长了放弃了。 然后,考虑到q很小,只有1e3,实际上有用的边也很少; 所有,直接用map存边权。 代码:...原创 2018-07-21 16:06:02 · 284 阅读 · 0 评论 -
CodeForces 466D Increase Sequence
题目:http://codeforces.com/problemset/problem/466/D题意: 给n个数,可以放任意个区间[ , ],区间内的数+1; 要求一个数不能同时为两个区间的起点,也不能同时为两个区间的终点; 求把所有数加到h的方案数。分析: 首先,无解的情况: 1.a[i]>h 2.h-a[1]>1||h-a[n]>1 3.abs(a[i...原创 2018-07-28 21:24:37 · 231 阅读 · 0 评论 -
CFGym 101741A Three Arrays (二分+3指针同时扫)
题目:http://codeforces.com/gym/101741/problem/A题意: 给三个不下降数列; 求满足|ai - bj| ≤ d, |ai - ck| ≤ d, and |bj - ck| ≤ d的方案数(i, j, k) 数据范围5e5分析: 如何不重不漏统计? 对每个方案,只用最小的那个数统计一次; 开3个指针pa、pb、pc; 每次判断a[pa]、...原创 2018-07-28 20:00:08 · 236 阅读 · 0 评论 -
牛客 - 平分游戏
题目:https://www.nowcoder.com/acm/contest/90/C题意: n个人围坐一个圆,每人初始a[i]个硬币; 每秒钟有且仅有一个人把一个硬币给另一个人,两人必须相隔k人; 求最少多少秒后,使得每人手中硬币数相等。分析: 设其中num个人是可以相互给硬币的(组成一个小环),如下 (1)–X1–>(2)–X2–>(3)–X3–>……–X...原创 2018-03-27 22:27:03 · 556 阅读 · 0 评论 -
Codeforces Round#466 E. Cashback
题目: http://codeforces.com/contest/940/problem/E题意: 给一串数,能把它分成连续的几段,每段有一个分值,求分值和最小能为多少; 分值计算方法:假设这段有k个数,则分值为除去前 个数(c为常数)之后的和。分析: 考虑若有c+1个数,则可以把c个数分为1段,1个数分为另一段; 因为若c+1个数中的最小值在两头,则答案更优,若在中间,则答...原创 2018-02-24 22:11:50 · 295 阅读 · 0 评论 -
Codeforces 908D New Year and Arbitrary Arrangement
题目: http://codeforces.com/problemset/problem/908/D题意:给定字符’a’出现的概率pa/(pa+pb),’b’出现的概率pb/(pa+pb); 给定一个正整数k,构造一个字符串,当出现至少k个子序列”ab”时停止构造; 问子序列”ab”出现次数的期望P/Q,输出P*(Q的逆元); 注意是子序列不是子串ab。分析:这个题特别难想! 一个 (dp原创 2018-01-01 22:00:15 · 627 阅读 · 2 评论 -
BJTUOJ 连续数的和
题目:http://citel.bjtu.edu.cn/boj/problem.php?cid=1006&pid=1 分析: 1。一开始写了滑动窗口,T了,发现果然会超时。 2。遇到n比较大的这种情况怎么处理呢? 定理:若把n分解成两个数相乘,那么乘数必定有一个小于 (n)½ 3。对于这道题目,假设是i个数相加得到的n,设开始的数为x,则结束的数为x+(i-1) x,x+1,x+2,…,原创 2017-11-12 11:10:10 · 689 阅读 · 0 评论 -
牛客模拟赛3-E绝对半径2051
题目: https://www.nowcoder.com/acm/contest/13/E 分析: 比赛时以为是栈,后来发现错了,其实是一个滑动窗口的题目; 先用map离散化,所以颜色种数不会超过n; 然后对于每一种颜色,用滑动窗口,向右移动(枚举)序列结尾元素(end),同时合法的开头元素(start)也相映右移; 这里用vector G[i][j] 储存第j个 第i种颜色的子原创 2017-10-14 14:02:04 · 303 阅读 · 0 评论 -
Codeforces round438 C. Qualification Rounds
题目: n个题目,k个队伍,每个队伍知晓其中某些题目,问能否选出一些题目,使得每个队伍知晓的题目不超过一半 (1 ≤ n ≤ 105, 1 ≤ k ≤ 4) 分析: 一、若选出了3个题目,每个队伍至多知晓其中1个,那么去掉知晓队伍数最多的那个题目,仍为可行解,所以选出的3个题目其实是选出两个题目的扩增 二、若选出了4个题目 1、k=1时,能选出4个题目说明至少有2个题目是这个队伍不知晓原创 2017-10-06 10:52:31 · 175 阅读 · 0 评论 -
OpenJudge1455 An Easy Problem
题目:http://noi.openjudge.cn/ch0406/1455/ 分析:可得lowbit x=x&-x;n+lowbit(n)即把右数第一串连续1消除并在其前添加一个1,(n^(n+lowbit))/lowbit)>>2即为把剩余1放到末尾。 代码:#include <cstdio>#include <algorithm>#include <cstring>using nam原创 2015-10-29 11:34:08 · 395 阅读 · 0 评论 -
NOIP2013 花匠
题目:http://www.luogu.org/problem/show?pid=1970# 分析:这道题目的本质是求出一个最长的数字序列,使得这个序列中的数字一大一小、一大一小。 ①连续的相同的数字,最多只有一个会使用到。这个显然。合并连续而相同的数字有助于求出波峰波谷。 ②求出波峰波谷数目+2就是答案了。 代码:#include <cstdio原创 2015-06-13 21:58:58 · 318 阅读 · 0 评论 -
洛谷 P1367 蚂蚁
题目:http://www.luogu.org/problem/show?pid=1367# 分析:碰头相当于穿过 代码:#include <cstdio>#include <algorithm>using namespace std;const int Tmax=100005;struct node{ int x,d,num;};node ant[Tmax];int n,原创 2015-06-13 21:46:58 · 506 阅读 · 0 评论 -
HDU 6601. Keen On Everything But Triangle (主席树+斐波那契性质)
题目: http://acm.hdu.edu.cn/showproblem.php?pid=6601题意:N个数,Q个询问;每个询问给定一个区间[L,R],问区间内能组成三角形的三个数的和最大是多少。分析:性质1:选区间内大小连续的三个数更优。性质2:查询不会超过50次就能找到可行方案。(Proof) 设三个数从大到小分别为a1,a2,a3;若其能组成三角形,则a2+a3>a...原创 2019-07-25 20:50:06 · 393 阅读 · 0 评论