思维
CaprYang
这个作者很懒,什么都没留下…
展开
-
小G的日常之接雨水 ZZULIOJ - 2400 思维 | 中途相遇
题解 题目链接 当前位置能积水只有两边都有比他高度高的柱子才行 接受的同时计算从左向右到达当前位置的最高高度 倒着扫一遍 过程中计算从右向左到达当前位置的最高高度答案为 min(左最高, 右最高) - 当前高 注意不能为负 AC代码 #include <stdio.h> #include <bits/stdc++.h> using namespace std; typede原创 2018-11-19 13:39:40 · 870 阅读 · 0 评论 -
牛客寒假算法基础集训营6 F 石头剪刀布 构造 思维
题解 按照题意,RPS三个之间决斗的结果是固定的,每个获胜者只能和相邻的获胜者进行决斗,所以只要知道某场比赛的结果则一定能推出比赛前的状态,只需要将他能打败的人添加到他旁边就行 对于一场比赛获胜者只可能有三种情况RPS,枚举三种情况按照规律反向推出初始的状态,中途根据题目输入限制剪枝 两个人决斗他们的顺序是不影响结果的,如果这两个人是获胜者则推到多人情况,前一半和后一半的顺序也是不影响结果的 在递...原创 2019-02-05 19:51:18 · 394 阅读 · 0 评论 -
Educational Codeforces Round 60 (Rated for Div. 2) E. Decypher the String 交互 思维
标题 题目大意,给你一个长度为n的加密后的串,加密方式是交换至多n-1次任意两个字符,要求3次询问后得到原有串,每次可以任意询问一个串加密后的结果。 将整个串进行划分处理,三次询问分块大小分别为26*26*26、26*26、26。 首先询问一个aaaa…bbbb…cccc…dddd…zzzz…每个字母都有26*26个,根据结果可以得到每个位置的字符初始位置在哪个分块,可以将字符确定在分块范围内即2...原创 2019-02-21 22:38:55 · 283 阅读 · 0 评论 -
Codeforces Round #540 (Div. 3) F1. Tree Cutting (Easy Version) 思维
题解 题目大意,给一个树,每个节点可能是红色蓝色或无色,删去一条边,要求删去后得到的两个树只有红色或蓝色节点 问有多少种删法,树至少有一个红色和蓝色节点。 DFS整个树,回溯时统计以每个节点为根的子树蓝色和红色节点数量,如果子树拥有某个颜色全部节点且没另一个颜色节点则满足条件。 AC代码 #include <stdio.h> #include <bits/stdc++.h>...原创 2019-02-21 23:50:01 · 439 阅读 · 0 评论 -
Codeforces Round #539 (Div. 2) C. Sasha and a Bit of Relax 位运算 思维
题解 题目大意,给一个数值序列,问长度为偶数的区间,左一半的异或和等于右一半的异或和的区间个数 当一个区间异或值左一半等于右一半时则整个区间异或和为0,整个区间异或和为0的个数可以用前缀异或和+数组记录每个异或值的个数来处理 考虑每个异或和为0的区间,则对于每个二进制位总数都为偶数,从中间将区间分为两半,左右侧的个数的奇偶性必然相同 所以只需要求出异或和为0的区间个数即为答案 AC代码 #incl...原创 2019-02-17 18:40:26 · 218 阅读 · 0 评论 -
Codeforces Round #539 (Div. 2) D. Sasha and One More Name 暴力 思维
题解 题目大意,给一个回文串,可以将回文串切成若干段再拼接,问最少切多少段能拼出和原有串不同的回文串 如果所给回文串除了中心位置(长度为奇数)其它都相同则无论怎么拼接出来的回文串都和原串相同,直接impossible 对于任意非第一种情况的回文串,从中心分为两部分来看,必能在一测找到切割反转后不等于另一侧的位置 则切割两次必定能拼成和原串不同的回文串(如abaacaaba,左侧ab|aa右侧aa|...原创 2019-02-17 18:53:45 · 401 阅读 · 0 评论 -
Codeforces Round #538 (Div. 2) B. Yet Another Array Partitioning Task 思维
题解 题目大意 给你若干个数字 划分成k组 每组里面取m个最大值 要求每组的最大值总和最大 只需要在整个数组里面取k*m个最大值并记录所在位置 按照顺序遍历数字如果当前数字是被选中的最大值则cnt++ 当cnt到达m时则说明当前位置是当前分段的最后位置 输出即可 AC代码 #include &lt;stdio.h&gt; #include &lt;bits/stdc++.h&gt; #define...原创 2019-02-11 20:13:42 · 446 阅读 · 0 评论 -
小L玩滚球游戏 ZZULIOJ - 1530 思维
题解 根据题意,移动速度快的球可能会追上在他前面移动速度慢的球,并且追上后合并在一起会变成前面速度慢的球。 可以将题意理解为,后面移动速度快的球碰到前面移动速度慢的球则会消失。 而且t是固定的值,直接计算每个位置在t秒后移动到的位置,逆向维护一个最靠后的值,检测当前球是否超过这个值。 如果超过则说明追上了后面的球当前球会消失。 AC代码 #include <stdio.h> #incl...原创 2019-03-15 13:41:03 · 1244 阅读 · 2 评论 -
第九届河南理工大学算法程序设计大赛 正式赛 C. Asia区域宫 思维
题解 题目有一句很关键的条件,给出的障碍物不会是同行同列。所以不能从(1, 1)到达(n, n)只有一种情况也就是斜着一排被封死。 只要能到达则需要的次数为n * 2 - 2,因为不同行同列不需要转向只需要上或者右即可到达。 判断是否斜着一排被封死可以统计障碍物的坐标(x, y),x + y出现的次数x + y相等表示再斜着的同一排。 AC代码 #include <stdio.h> #...原创 2019-04-02 16:12:16 · 336 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day4 (Div2, onsite) A 夺宝奇兵 思维
题解 按照题意从1到n再从n到1且每个点都有两个不能重复经过 (1)表示同编号第一个点(2)第二个点 则ai到ai+1只有两种情况 ai(1)~ai+1(1)和ai(2)~ai+1(2) 或者 ai(1)~ai+1(2)和ai(2)~ai+1(1) 直接两种情况取min 再加上an(1)到an(2)的距离即可 AC代码 #include <stdio.h> #include <b...原创 2019-01-28 23:07:05 · 206 阅读 · 0 评论 -
Codeforces Round #525 (Div. 2) D. Ehab and another another xor problem 交互 二进制 思维
题解 交互题 题目大意 有两个数字a和b要你去猜 你可以询问两个数字c和d 系统会反馈给你a ^ c和b ^ d的大小比较结果 左边大1右边大-1相同0 最多猜62次 数值范围小于2的30次方 说明最多有30个二进制位 最开始使用一次确定a和b的大小关系 每个二进制位使用两次猜测 最后使用一次回答答案 从高到低遍历二进制位 之前的位被异或掉了当前位就是最高位 起着决定性的作用 考虑当前位的状态 具...原创 2018-12-05 15:12:14 · 515 阅读 · 0 评论 -
Codeforces Round #521 (Div. 3) B. Disturbed People 思维
题解 题目大意 n个灯0关灯1开灯 101则中间的睡不着 问最少关掉多少个灯可以全都能睡着 遇见101则将后面的1的灯泡关掉 这样解决10101的问题 计数输出即可 AC代码 #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;bits/stdc++.h&amp;gt; using namespace std; typedef long long ll; const int I原创 2018-11-17 01:40:32 · 456 阅读 · 0 评论 -
Codeforces Round #521 (Div. 3) C. Good Array 思维
题解 给你一个n数字的序列 从序列中删除某些元素让剩下的序列当中有一个数等于其它数字之和 记录每个数字出现的次数 枚举每一个数字 尝试减去 如果原数列出现过减去之后和的一半则满足条件(需要排除自身a[i] == s2 / 2) AC代码 #include &lt;stdio.h&gt; #include &lt;bits/stdc++.h&gt; using namespace std; type...原创 2018-11-17 01:46:27 · 525 阅读 · 0 评论 -
find the nth digit HDU - 1597 二分 思维
题解 打表计算1+2+3+…+N的所有和 二分查找到第一个小于N的那个和 N减去他 接下来就是9个一循环 N = (N - 1) % 9 + 1得到是哪个数字 AC代码 #include &lt;stdio.h&gt; #include &lt;bits/stdc++.h&gt; using namespace std; typedef long long ll; const int INF =...原创 2018-12-23 20:59:10 · 618 阅读 · 0 评论 -
Codeforces Round #528 (Div. 2) C. Connect Three 思维
题解 题目大意 一个格子图 给三个人坐标 问联通所需要开发的最少方块数量 按照纵坐标排序 abc分别为左中右 将b的位置纵向扩展到a和c的高度 然后a和c向b横向汇聚 AC代码 #include &amp;amp;amp;lt;stdio.h&amp;amp;amp;gt; #include &amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;gt; using namespace std; typ原创 2018-12-24 00:00:43 · 421 阅读 · 0 评论 -
Codeforces Round #528 (Div. 2) D. Minimum Diameter Tree 思维
题解 题目大意 一个树 让你设定权值要求所有权值和为s 问任意两点间数值和的最大值的最小情况 当权值评分到所有叶子节点上才能保证代价最小 答案为 S / 叶子节点数量 * 2 AC代码 #include &amp;amp;amp;lt;stdio.h&amp;amp;amp;gt; #include &amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;gt; using namespace std;原创 2018-12-24 00:00:50 · 355 阅读 · 0 评论 -
Educational Codeforces Round 58 (Rated for Div. 2) C. Division and Union 思维
题解 题目大意 给你若干个区间 让你分为两个集合 要求两个集合的交集为空 按照l排序 记录之前出现过的最大的r 如果当前l没有覆盖着之前的r则从当前位置为分割点 前面为一组后面为一组 AC代码 #include <stdio.h> #include <bits/stdc++.h> using namespace std; typedef long long ll; con...原创 2019-01-13 14:56:05 · 586 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day7 (Div2, onsite) A 迷宫 思维
题解 题意可以理解为一个点上同时只能存在一个人 只要前面没人挡着每秒所有人都可以向出口移动一个单位 考虑两个队的人排队的人合并为一队方式 同一排的人会合并在一起 也就是BFS同层的节点会合并在一起 但是每秒也只能移动一个单位 所以即使前面有很大的空位也只能向前走一步 不需要真的记录整个队伍 只需要记录队伍的最后一个人的距离就是答案 使用k记录最后一个人即k = max(d, k + 1)如果同层没...原创 2019-01-26 18:01:14 · 723 阅读 · 2 评论 -
Codeforces Global Round 2
A. Ilya and a Colorful Walk #include <stdio.h> #include <bits/stdc++.h> #define fst first #define sed second using namespace std; typedef long long ll; const int INF = 0x3f3f3f3f; const l...原创 2019-04-09 21:51:28 · 670 阅读 · 0 评论