想法题
wlhz2017
这个作者很懒,什么都没留下…
展开
-
Codeforces Global Round 23 E CF1746E Joking (Hard Version)
题意 互动题 你需要猜一个数 范围e5询问在不在数集中 限最多52次猜测是不是某个数 最多两次其中询问反馈你的答案未必是对的,只保证2次连续询问至少有一次是对的猜测都是对的思路对同一个数集连续询问有真假真 假真假 真真 三种情况其中第三种可以发现是真数组平均分左右 假设query左区间 结果101在query左区间的左儿子 和右区间的左儿子(左儿子就是此区间再均分)这时 如果得到101 如果第一个问题是真 那么应该是左儿子的右儿子 否则是右儿子的左儿子如原创 2022-10-28 10:04:10 · 602 阅读 · 0 评论 -
Codeforces Global Round 23 C CF1746C Permutation Operations
长度n的排列 n次操作 第i次选择一个后缀长度都+i 要求最后数组严格递增 求一种方案思路 扫一遍 如果ai比前面小 那么找一个没有用过的数x 满足ai+x>ai-1记录x位置为ix默认位置为1原创 2022-10-27 10:03:27 · 241 阅读 · 0 评论 -
Codeforces Global Round 23B 1746B Rebellion
思路:因为只是要求数组不降,没必要形成大于1的数,只要把左面的1转移到右面的0上,统计0的个数为x,前x个数中1的个数 都需要移动,即为答案(也就是错误的1的个数,题目中删除这个数和把这个数置零应该是一样的)题意: 长度n的01数组,每次操作可以删除一个数,值加到另一个数上。最后要求数组不严格递增(a[i+1]>=a[i]) 求最下操作次数。原创 2022-10-27 02:06:40 · 138 阅读 · 0 评论 -
Codeforces Global Round 23 A CF1746A Maxmina 简单题
题意:长度n的01数组,每次操作消除2个连续数保留最小值 或者消除k个连续数保留最大值,最后问能否消除到只剩1。思路:不难发现 多次消除2个数,省下k个数 中有一个1就可以。那么如果k >=n 数组有1 就YES。如果 k原创 2022-10-27 01:57:06 · 112 阅读 · 0 评论 -
HDU 5202 Rikka with string
做法:所有的问号都赋成'a' 如果是回文 把最后一个问号(且不能奇数长度串在正中间) 改成'b'即可 如果没法改 就是非法状态至于原因,首先 上述做法显然满足得到的答案是字典序最小的 其次如果改动前是回文串了 那改动最后一个问号(非中间)后就肯定不是回文串了。而对于在最中间的问号肯定取'a' 取别的字母对其他位置的取值是没有影响的 而结果却会增大。#include#include原创 2015-10-02 19:32:00 · 342 阅读 · 1 评论 -
HDU 5661/BC 79B Claris and XOR
开始时想按照数位dp来做 先考虑x 有a≤x≤b 从高位到低位考虑 举个例子 a为11101110100b位11100101010若开始的几位相同 则x的取值固定 前4位一定是1110 从第五位开始有两种选法 设x的第五位为1 第六位为0 那么剩下的位就没有限制 (因为x一定满足a≤x≤b了) 我们称没有限制为自由态,当x到达自由态后 无论y的当前位是0还是1 x只要选与之相符的原创 2016-04-14 19:59:55 · 442 阅读 · 0 评论 -
HDU 4909 / BC 3C String
开始没注意到只有1个问号 ,想了很久... 首先可以用前缀和的方式,用类似状压的方式存储,在不考虑问号的情况下,某段复合要求,等价于首位的前缀和异或为0,也就是对应当前的前缀和对应状态,查询出现过的相同状态,加起来即可。 对于问号,可以等价于26种变化,所以问号及其问号后的状态,可以再枚举问号的变化,然后查询问号之前相同状态的数目,而对于同样处于问号之后的状态,其区间内不包含问号,所以应该原创 2016-07-06 22:48:05 · 288 阅读 · 0 评论 -
HDU 4910 / BC 3D Problem about GCD
首先打表,发现一部分是n-1其他是1找规律发现,对于 素数的n次方 及 2倍素数的n次方 其结果是 n-1 (除2和4外 不能是2的n次方)对于判断一个数是不是素数 直接米勒罗宾即可 对于判断是不是素数的n次方 有两种方法 可以先判能否开平方和三次方 再暴力处理10^4之内素数即可我直接套pollard_rho 分解质因数 发现不同质因数就否定#include#include原创 2016-07-06 22:59:37 · 312 阅读 · 0 评论 -
HDU 5726/2016多校1D GCD
题意:给n个数,每次询问求一个区间的gcd值与这个区间gcd值相同的区间个数题解:因为最大值1e9 所以gcd种类数也只有log(1e9)种,所以预处理区间gcd时 可以处理以当前点为右端点 每个区间的gcd,应该分成小于log(1e9)段,转移到下一个端点时,只要将每一段都与下一个端点的值取gcd即可,再将相同的段合并。将每一段的值都叠加到map上,最后线段树查询区间gcd,再map查询个数原创 2016-07-30 10:16:45 · 382 阅读 · 0 评论 -
UVA 11464 Even Parity
感觉似曾相识的一道题 找了会规律 没找到。。。然后发现数据范围非常小 就像dp搞 推半天也没想出来 怎么推 结果看了题解才知道 暴力枚举第一行 推剩下行就好了嘛(>﹏<)感觉做题思路被限制住了 不去想比较暴力的方法了 第一行dfs直接枚举 后面推的时候 对i行j列 看i-1行j列 已经相邻的1的数量 就能决定 ij是否是1 我是把图从1到n存的 这样边界好处理#include#in原创 2015-09-06 15:45:33 · 243 阅读 · 0 评论 -
UVALive 2995 Image Is Everything
这题的想法其实不难想 就是每次去掉"不得不"(意味着 不去掉就肯定不成立)去掉的格子 最后得到一个答案 就肯定满足要求 不过编起来好难啊。。。自己尝试编的时候 没有想到染色 直接2个面去判断 然后去点 这酸爽~ 最后感觉编不下去了 照着书重敲了一遍 我没有用书上的宏定义 不过分成一个个的函数 感觉上也还好 不太乱 自己手算gets的时候 出了点差错 然后样例还过了 卡了半天(>﹏<)原创 2015-09-06 12:00:58 · 419 阅读 · 0 评论 -
HDU 4985/BC 7A Little Pony and Permutation
题面大意是让你把输入分成一些份 每份可以构成循环 并且总的字典序最小 按题意所说 暴力跑就好 最后排个序tirck点 题面是有点不严谨的 划分成的每一部分是不能排序输出的 #include #include #include #include #include #include #include #include #include #include#include原创 2015-08-09 11:02:29 · 331 阅读 · 0 评论 -
HDU 4956/BC 5A Poor Hanamichi
题面数据吓人,其实可以暴力,因为不符合要求的数还是蛮多的,所以从左向右暴搜就好,至于为什么多,可以脑补下,整除11的数 ,如果加了3,产生了进位就(极可能出错,有少数反例 所以我只判这个就wa了),还有一些其他情况,也满足条件,所以满足条件的情况蛮多的,而且分布均匀,所以暴大好。#include #include #include #include #include #include原创 2015-08-01 10:56:33 · 370 阅读 · 0 评论 -
hdu 5364 /BC 50A Distribution money
很简单的一道题 直接统计 或者排个序都可以 亮点是原来 题面数据是工号可以为0的 有人的循环时从1到1万的 所以我就大义灭亲把文兄hack了 结果 题面临时改数据范围 不让有0 然后就悲剧了(>﹏<)#include #include #include #include #include #include #include #include #include #includ原创 2015-08-09 10:01:11 · 275 阅读 · 0 评论 -
HDU 4981/BC 6A Goffi and Median
#include #include #include #include #include #include #include #include #include #include#include#define inf 0x3f3f3f3f#define ll long long#define mod 1000000007using namespace std;#def原创 2015-08-09 10:47:16 · 353 阅读 · 0 评论 -
hdu 4931 /BC 4A Happy Three Friends
#include #include #include #include #include #include #include #include #include #include#define inf 0x3f3f3f3f#define ll long long#define mod 1000000007using namespace std;#define bug p原创 2015-08-09 10:35:47 · 386 阅读 · 0 评论 -
HDU 4932/BC 4B Miaomiao's Geometry
最近在刷最开始的几次bc的题,没有中文题不说还比较难,而且trick点多容易wa,而且偏数学类,所以赶紧补上一些题解。题目大意 n个定点,用一些线段去覆盖,线段不能重叠,覆盖时定点必须为线段端点。求合法线段的最大长度。当时第一感觉就是2分啊,题面还让输出4位小数,这不是2分是什么,然后当然wa了2发 ,判了特例也白费。调了精度,精度太高t了,稍低一点还是wa。然后就觉得是2分精度的问题原创 2015-08-01 10:48:48 · 406 阅读 · 0 评论 -
hdu 5288 OO’s Sequence
题面求的是 对于每一组l r 存在的i的综合,显然很不好求,可以换一个角度,转换成每个数作为i时 可以选择的区间的数量,只要先预处理出每个说左右最近的可以被它整除的数的位置,左右长度乘一起就是这个数对应的区间数量。预处理左侧区间长度时可以从中向右扫,对每个数在遍历它的因子,看是否出现过,如果出现过,进行取优就可以了,右侧同理。#include #include #include #inc原创 2015-07-24 09:49:02 · 322 阅读 · 0 评论 -
UVA 10881 Piotr's Ants
很好的一道想法题 首先是从宏观上来看 每个蚂蚁相撞后返回等同于对穿而过 并且 每个蚂蚁的相对位置不变 看穿这两点后 代码还是很好编的 #include#include#include#include#include#include#include#include#include#include#define scnaf scanf#define cahr char#defi原创 2015-09-06 10:45:35 · 235 阅读 · 0 评论 -
HDU 4982/BC 6B Goffi and Squary Partition
题面大意 给定n,k问是否有k个不同正整数 和为n 且其中k-1个数 是某个数的平方数设 k-1个数等于 i²,每次从大到小枚举i,看是否存在合法的,由于k个数 必须不同,所以 出来k-1个数 剩下一个数 z=n-i²。当z>k时 k-1个数从1 到k-1 排列,只要比i²小,比i²小的部分 可以从大到小 不断加一的方式 来完美的 凑出所以比 k(k-1)/2大的所有数。但当z=k时,k-1原创 2015-08-01 14:05:29 · 360 阅读 · 0 评论