-
题目链接 题意:给出n,有1..n n个数,可以选择两个数进行加,减,乘,三种操作,操做完得到一个数放回。 n-1次操作后只剩下一个数。现在要求剩下的数为24.问方法。 思路:我们发现。。。两个数相减可以为1.。那么只要找到4个数的方案和5个数的方案就好了。。。 4个数:123*4 5个数:4*5+3+2-1 然而窝一开始以为必须前面减后面。。。 所以是按照4K,4K+1,4K+2,4K+3分的类。。。每4个数得到两个-1,再相乘。。。。麻烦了一点。。代码写了一半的时候意识到了按2K,2K+1分类就行。 /* *********************************************** Author :111qqz …
Read More -
题目链接 题意:存在一个[2..100]之间的数,每次可以询问一个数是否是该数的因子,返回yes或者no,最多询问20次。每次要输出询问的数,以及最后要输出这个数是否是质数。 思路:第一次做交互题。。。发现完全不能按照以前的思路。。。 更像是相反的。。。把output看做某种输入。。。input里是某种结果。。。我要根据input里的东西来确定一些东西。 就是先有output,再有input。。。output是选手的输入(最后一个除外),input是返回结果(不是你写的代码的返回结果) 对于这道题。。我们要尽可能少得猜一个数的因子,以确定该数是否为质数。 一个数不是质数的话,就有至少两个大于1的因子。。。 很容易想到。。。判素因 …
Read More -
题目链接 题意:一段数字串,如果一个数字k满足,将该串分成若干个长度为K的子串,这些子串两两满足每个字符出现的次数一样多,那么称为k是一个阿贝尔周期。现在问所有合法的阿贝尔周期。 思路: * 首先我们发现,所有的阿贝尔周期一定是数字串长度(设为n)的因数。 * 然后我们还发现。。。如果某个因子是阿贝尔周期,那么该因子的整数倍中恰好也是n的因子的也一定是阿贝尔周期,类似筛法。 * 然后我们还发现。。。最小的阿贝尔周期一定比数字串中的元素个数大。。。 然而其实后面两个不管也可以过吧。。。因为有点忘了n的约数个数的上界了。。。。 还是太保守了。。。 不过hack了四发哈哈哈。。。要是大号的话今天就紫了呜呜呜 /* …
Read More -
20160929好虚啊
Sep 29, 2016 · 1 min read好虚啊。。。 线段树勉强写完了单点更新的一组题。。。。16道题写了20天。。。 后面的带lazy标记的简直难度上天啊orz...刷不动== 然后想回头复习下数位dp吧。。。发现也是各种被卡。。。 突然想起去年北京的那个银牌题。。。又看了下。。。发现卡在了数位dp之前的地方。。。。。? 啊啊啊啊 啊啊,要打铁了要打铁了要打铁了。。。
Read More -
题目链接 题意:给出l,r,k,定义f(n,k)为将数n分成左右两个非空的部分,再求和之后能被k整除的方案数。 现在问区间[l,r]中所有f(i,k)的和。 思路:数位dp... 枚举一下分点即可。。想到这个这题就A了。。。 然后相当于做分点个数个数位dp...求和即可。 dp[i][j][k][p]表示第i位,前半部分%k的结果,后半部分%k的结果,是否有前导0. 然后关于前导0这个。。。换了一种写法。。。加了一个状态在dp数组里。。。 不然每次都要一个if。。。感觉有点丑。。。。这样写简介了一点。。。 以及。。因为每次k是不同的。。。我dp状态记录的时候又没有记录k...所以记得每次初始化成-1。。。 因为忘记这个结果第二个样例 …
Read More -
题目链接 题意:统计区间[a,b]里数字1出现的次数。 思路:数位dp。 收获是,dfs传递的参数可能是为了判断符合条件的答案(比如不要62中的preis6等) 但是也可能是在统计答案信息。。。pos等于0的时候返回值未必是1和0.。。 然后傻逼fzu。。。long long 必须交 I64d..因为这个wa到死。 傻逼fzu,毁我青春。 /* *********************************************** Author :111qqz Created Time :Thu 29 Sep 2016 02:20:09 AM CST File Name :code/fzu/2113.cpp …
Read More -
题目链接 题意:给出一串只由数字'4'和'7'组成的串。两种操作,一种是询问整个串中最长非下降子序列的长度,另一种给出区间[l,r],将区间中的没个数反转,反转的定义为,4变成7,7变成4. 思路:线段树lazy标记。 线段树的域记录5个信息,c4,c7,c47,c74,flip,a分别表示4的个数,7的个数,非下降子序列的个数,非上升的子序列的个数,以及该区间是否被翻转。 纠结了很久PushUp操作。。。。 c4和c7倒是没什么疑问。。。。 一开始觉得c47是由三部分的最大值更新得到的。。。 left.c4+right.c47,left.c4+right.c7,left.c47+right.c7... 但是样例过不了。。。 纠结了 …
Read More -
题目链接 题意:一个循环数列,两种操作,一种是把某段区间中加上v,另一种是询问某区间的最小值。对于每个询问,输出答案。 思路:区间更新+区间询问的模板题.... 注意体会pushdown以及update的时候。。。 要同时更新tree数组和lazy数组。。。 读入的时候可以用sscanf判断操作类型。。。 /* *********************************************** Author :111qqz Created Time :Mon 26 Sep 2016 05:30:21 AM CST File Name :code/cf/problem/52C.cpp …
Read More -
题目链接 题意: 给定两个序列,求它们的最长公共递增子序列的长度, 并且这个子序列的值是连续的 思路:以值为连续做入手点。 很显然个鬼咯 dp[a[i]]表示以a[i]结尾的最大长度。 dp[a[i]] = dp[a[i-1]] + 1 对于b序列一样。 答案为 MAX(min(dp[i],dp2[i])) ( 1=<i <= 1E6) /* *********************************************** Author :111qqz Created Time :Mon 26 Sep 2016 04:02:24 AM CST File Name :code/hdu/5904.cpp …
Read More