TopCoder SRM500 Div1 500 分治】的更多相关文章

原文链接https://www.cnblogs.com/zhouzhendong/p/SRM500-500.html SRM500 Div1 500 没想到 double 的精度居然没有爆-- 考虑以一个点为根的分形所涉及的区域是可以用一个矩形表示的.例如整个分形的区域就是 \(x\in [-27,27],y\in [0,81]\) . 如果一个分形被要求的范围全部包含,那么是可以直接推公式求的. 如果一个分形代表的区域与询问区域无交,那么对答案无贡献. 否则就分治 3 个小矩形. 与询问矩形有…
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM500-250.html SRM500 Div1 250 题意 (看题用了半个小时--) 有 n 个人(编号从 0 到 n-1)玩游戏,要通过投票的方式确定谁输.现在已知有一些人有明确的意见,认为谁输.具体地用一个 vector decision 来描述,vector decision 的大小可能不足 n . 定义一个集合 S 包含一些人,初始的时候集合 S 包含所有人.他们会进行若干轮投票,每一轮中,一…
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM500-1000.html SRM500 Div1 1000 设 \(v_1,v_2,\cdots ,v_9\) 分别为一个数中 \(1-9\) 的出现次数. 那么可以列出如下方程组: \[ \begin{eqnarray*} v_1+2v_2+3v_3+\cdots +9v_9 &=& S\\ v_2+2v_4+3v_8+v_6 &=& p_2\\ v_3+v_6+2v_9 &am…
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM502-500.html SRM502 Div1 500 好题. 首先,如果已经确定了解决所有问题的优先级,只需要对于每一个问题是否被解决做出决策,那么显然直接 01 背包就好了. 事实上,我们是可以贪心地确定两个问题的优先程度的. 对于两个问题,假设分别为 a 和 b,则先做 a 再紧接着做 b 和先做 b 再紧接着做 a 的收益之差为 \[ \begin{eqnarray*} &&(-dec_a…
题意 [题目链接]这怎么发链接啊..... 有\(n\)张符卡排成一个队列,每张符卡有两个属性,等级\(li\)和伤害\(di\). 你可以做任意次操作,每次操作为以下二者之一: 把队首的符卡移动到队尾. 使用队首的符卡,对敌人造成\(d_i\)点伤害,并丢弃队首的\(l_i\)张符卡(包括你所使用的符卡).如果队列不足\(l_i\)张符卡那么你不能使用. 求出造成的伤害的总和的最大值. \(1<=n<=50, 1<=li<=50, 1<=di<=10000\) Sol…
非常棒的组合问题,看了好一会,无想法.... 有很多做法,我发现不考虑顺序的最好理解,也最好写. 结果一定是两种形式 A....A   dp[n-1] A...A...A sgma(dp[j]*dp[n-j-1])( 1<=j<=n-2) 最后乘上n! 什么时候才能自己在比赛中做出一个500分来啊!!! class LongWordsDiv1 { public : int count(int n) { int i,j; fact[] = ; ; i <= n; i ++) { fact[…
TC 都615了...时间过的真快啊. 第一次做出500分,心情还是很激动的,虽然看了很久的题解,TC官网上的题解,很详细,但是英语的...我搜了搜,发现一份日语的...好吧,我还是看看英语的吧... 这题算法就是二维spfa啊,很容易看出,存在一个环mod,那么D+x*mod = T 这样话,就合法了.就可以用dis[d][u] u表示点,距离 模mod 为d,这样跑一下spfa,只要dis[T%mod][n-1] <= T(小于T的,可以补mod) 说明合法了. 开始看题解的时候 比较纠结m…
最近一场TC,做得是在是烂,不过最后challenge阶段用一个随机数据cha了一个明显错误的代码,最后免于暴跌rating,还涨了一点.TC题目质量还是很高的,非常锻炼思维,拓展做题的视野,老老实实补题吧. div2 250pts 题意:判断s去掉一个字符后能否和t一样. 代码: class DecipherabilityEasy { public: string check(string s, string t) { int n = s.size(); int m = t.size(); !…
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM502-1000.html SRM502 Div1 1000 题意 从 [0,n-1] 中选择 k 个不同的整数,使得他们的和是 n 的倍数,求方案数.对 \(10^9+7\) 取模. \(n\leq 10^9,k\leq 1000\) 题解 ​ 首先我们考虑从 n 个里面选择 k 个并进行排列的方案数,最终只需要除以 k! 就好了. ​ 设 \(M=n\) : ​ 设 \(f(n,m,t)\) 表示 在…
题目: Problem Statement      We have a cyclic array A of length n. For each valid i, element i-1 the left neighbor of element i. Additionally, element n-1 is the left neighbor of element 0. You are given two vector<long long>s s and t, each with n ele…
div2 250pts MiddleCode 题意:s串长度为奇数时,将中间字符取掉并添加到t末尾:长度为偶数时,将中间两个较小的字符取掉并添加到末尾. 分析:直接做,学习了一下substr(s, pos, len)返回s中从pos开始的长度为len的字串. 代码: class MiddleCode { public: void Remove(string &s, int pos) { int len = s.size(); string t = ""; || pos >…
题意:给n个点,保证图联通,给点相连的距离,求一个最多的点,这些点之间的距离都是相同的. 分析: 下面的代码是我们房间第一的大神的,写的很简洁,我的思路和他的一样,但是我不知道错哪了. 思路是暴力枚举,最多有10个点,先用floyed计算出每两点之间的距离,然后用位运算暴力枚举, 枚举每个点是否加入进去,并用set把每个加入进去的点之间的距离加进去,如果距离唯一,说明点之间所有的距离相同, 然后用_builtin_popcount()计算二进制中多少个1 ,即表示加入了多少个点,求最大.…
[题意]现在有一些线索,每个线索被发现的概率p[i],如果线索i被知道,那么其他线索也可能会被知道,用vector<string> c给出,c[i][j]='Y'表示知道i这个线索,j这个线索能直接知道,问最终发现的线索个数的期望. 所有p[i]的和不是1... 求每个clue被选中的概率,由题意,如果知道第i个数,那么可以立即知道其他一些点,那么可以先用floyd,求出当知道结点i后应该知道哪些结点. 然后两重求反,1-(1-p[i1])(1-p[i2])...(1-p[ik])就是所求答案…
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM704-800.html 题解 考虑构造一个 $n = 20$ 的图. 先把所有 $i$ 都连向 $i-1$ ,对于所有 $i,j(1\leq i<j<n)$,加边 $i->j$. 设 $f(i)$ 表示从点 $i$ 开始经过 $i\cdots n-1$ 这些点的路径条数,则: $$f(19) = f(18) = 1$$ $$\forall 1\leq i<18,f(i) = 2^{17-i…
题目链接:vjudge 大意:有两个人参加一场游戏,这个游戏在一个编号为\(0\text~n-1\)的轮盘上进行,一开始轮盘上的数字均为0:一共有\(m\)轮,每一轮都有一个操作参数\(s_i\),主持人等概率置顶某个位置\(j\),从\(j\)开始数\(s_i\)个位置,每个位置上的数+1(这两个人均不知道主持人所选定的位置).\(m\)轮结束之后,Alice指定一个位置,主持人告知该位上的数.Bob根据Alice得到的回答再选定一个位置(可以重复),获得该位置上的数.他们的游戏得分就是所获得…
原文链接https://www.cnblogs.com/cly-none/p/9695526.html 题意:求有多少对集合\(S,T\)满足:\(S \subseteq \{1,2...n \}, T \subseteq \{1,2...m\},S \bigcap T = \emptyset\),且\(S\)中所有元素的异或和小于\(T\)中所有元素的异或和.对\(10^9+7\)取模. \(n,m \leq 2000\) 首先,通过记录当前两个集合的异或和,转移时考虑每个元素的3种选择,容易…
题意:定义函数\(f(A,B) = \sum_{i=1}^n \max(A_i,B_i)\),其中\(A\)和\(B\)都是长度为\(n\)的排列.给出\(n\)和\(k\),问有多少对\((A,B)\)满足\(f(A,B)\geq k\).对\(10^9 + 7\)取模. \(n \leq 50\) 首先,可以直接钦定\(A\)为\(1,2...n\)的一个排列,即对于所有\(i\)满足\(A_i = i\),最后答案再乘以\(n!\). 然后就变成了对\(B\)这一个排列的计数问题.考虑函数…
题意:定义高度为\(x\)的金字塔数列为周期为\(2x-2\)的无限数列.它的每一个周期都是形如\(1,2,...,x-1,x,x-1,...,2\)的形式.记高度为\(x\)的金字塔数列第\(i\)个数为\(p_{x,i}\) 现在给出\(n\)和\(m\),求集合\(S = \{(x,y) | \, \exists i , x = A_{n,i}, y = A_{m,i}\}\)的大小. \(n,m \leq 10^9\) 遇到此题似乎无从下手.在于我们无从直接处理数列. 考虑把\((x,y…
桌面上有R 张红牌和B 张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1 美元,黑牌则付出1 美元.可以随时停止翻牌,在最优策略下平均能得到多少钱. R,B ≤ 100000. 输入格式: 若干行,每行两个整数R,B 输出格式: 一个实数期望值. 样例输入: 68 7 样例输出 61.103 分析:这道题加深了我对期望+dp的理解.考虑dp,设f[i][j]表示还剩下i张红牌j张黑牌的期望值,这个时候如果停止翻牌,那么f[i][j] = 0,如果继续翻牌,就有i/i+j的概率…
Description 有n张符卡排成一个队列,每张符卡有两个属性,等级lili和伤害didi. 你可以做任意次操作,每次操作为以下二者之一: 把队首的符卡移动到队尾. 使用队首的符卡,对敌人造成di点伤害,并丢弃队首的li张符卡(包括你所使用的符卡).如果队列不足li张符卡那么你不能使用. 求出造成的伤害的总和的最大值. \(1\len\le50,1\leli\le50,1\ledi\le10000\) Solution 发现这就是一个背包问题 Code #include <algorithm…
题目链接:https://vjudge.net/problem/TopCoder-9915 (论文上的题) 题解: 更正:, i>0, j>0 代码如下: #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <cmath> #include <queue>…
TopCoder                        250                              500                                         1000                                589 div2 简单题 简单的分析题! //非常好的DP!硬币反转!待补 590 div2 简单题!模拟五子棋判断 简单搜索,模拟围棋!  蛮好的DP!递推!掌握技巧! 591 div2 简单题 简单题,暴力…
转载请注明出处,谢谢viewmode=contents">http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 水水更健康,最终回到1800+了... DIV2 1000pt 显然每一列是独立的.分开考虑. 对于某一列.假设按单个字符U , D从下往上考虑的话.发现连续两个U的话.以下的U能够移动的位置受上面一个影响. 只是因此能够想到相邻的U , D互相限制位置,能够依次处理.相邻同样字符的话. 能够作为一个字符…
Topcoder 658 div2 500 加强版 不过给了<=20,暴力肯定不行. 然后想DP方程,先二分可能需要的最大次数mid; 然后根据 mid 构造 DP方程. 假设x[i]需要 x个9 ,y个3,z个1,x*9+y*3+z>=x[i]; 然后求出dp[n][[x]][y][z]<=mid 是否 符合. 转移方程为:dp[i+1][n9+m9][m3+n3]=min(dp[i+1][n9+m9][n3+m3],dp[i][n9][n3]+max(0,x[i]-9*m9-3*m3…
(15) 也是 DIV1 500 题意是给定 一个无向图 删去一条边以后 可不可以是完全二叉树. 细节点很多,开始做法居然求到桥去了,最近强联通写傻了. 最多1024-1个点 1024-1条边枚举 所以: 先枚举要删去的边,然后进行判断. 判断是否是一颗完全二叉树的话 要一个标记deep深度 max deep==h 然后还要看是否整个图强联通 还有一点 点的度 为1 ,2 ,3 其中度为2的只有一个 ,度为1的有2^(h-2)个 code: #include<iostream> #includ…
快考试了,把我以前写过的题回顾一下.Noip2007 树网的核:floyd,推出性质,暴力.Noip2008 笨小猴:模拟Noip2008 火柴棒等式:枚举Noip2008 传纸条:棋盘dpNoip2008 双栈排序:将复杂条件转化为简单约束,二分图染色判断可行性,模拟.Noi2010 能量采集:常见套路,求:ΣΣgcd(i,j),设t = gcd(i,j),能算出gcd=t的点对有(n/t) * (m/t)个,然后利用容斥原理减去2t,3t,……,kt的,倒序枚举.Noip2009 潜伏者:模…
DIV1 250 水题...略. DIV1 500 抽象题意:有一个图,指定其中亮点p1和p2,删掉途中其他的一些点,使得p1和p2最短路大于3. 解法:使得p1和p2最短路为2的点一定要删掉.然后,别人说跑一遍最大流就完了,或者用2分图....可是我不还不会... 坑..待填. tag:graph…
嗯....今天的500确实比较好 DIV1 250 模拟...略 // BEGIN CUT HERE /* * Author: plum rain * score : */ /* */ // END CUT HERE #line 11 "CubeWalking.cpp" #include <sstream> #include <stdexcept> #include <functional> #include <iomanip> #inc…
昨天收到FB的电话,我的OFFER已经批下来了,这也意味着我的JOB HUNTING结束了,下 面是我这两个月来申请结果汇总: Applications (7): Facebook, Google, Microsoft, Square, Twitter, Rocket Fuel, Amazon Offers (5): Facebook (accepted), Microsoft, Amazon, Rocket Fuel, Qualcomm ( return offer) Rejections (…
题意  给定一个长度不超过$5*10^{6}$的数列和不超过$100$个询问,每次询问这个数列第$k$小的数,返回所有询问的和 内存限制很小,小到不能存下这个数列.(数列以种子的形式给出) 时限$10s$,内存限制$13MB$ 我自己YY的分治缩小答案上下界范围第三个样例要跑$90s$左右,果断放弃 根据题目给出的条件我们知道每一个数的范围都在$[0, 10^{9}+6]$里. 那么我们开一个大小为$32000$的数组,把$[0, 10^{9}+6]$分成$32000$个大小相同的块. 然后先遍…