随笔分类 - 比赛
摘要:云IDE显示我提交了。。。云IDE显示我提交成功了。。。可是结果里根本没有我的ID,两个编译通过都没有。。。不吐槽了。。。T_T题目1:du熊学斐波那契I找循环节。。。求对拍。。。题目2:du熊填数字把线拉直了,转化成在长度为x的序列上排01串,保证不出现连续的1。发现这个数就是斐波纳锲数列。。。const int N = 1024;int fb[N];void init() { fb[0] = 1; fb[1] = 2; for(int i = 2; i < N; ++i) fb[i] = (fb[i-1] + fb[i-2])%2012;}int main() { //...
阅读全文
摘要:第一次做DIV1,果断爆0。。。弱B的孩子伤不起啊。。。275pt那题调了一上午没调出来,明显的傻逼dp就是不会写。。。T_T参考DD大神的思路:dp[i][j]表示从第i个位置贴一个长度为L的stamp,颜色为j。。。。View Code class Stamp {public: int dp[N][4]; int cc(char c) { if(c == 'R') return 0; if(c == 'G') return 1; if(c == 'B') return 2; return 3; } ...
阅读全文
摘要:部分题目:比赛队友过掉的题目,没有过掉但有可能过掉的题目。。。B:傻逼2-sat题,据说是道poj原题,共有31位,对每一位进行2-sat判一下。fuck,一个很坑人的trick,给的b[][]不一定是合法的。如果不合法,直接输出NOView Code //#pragma comment(linker,"/STACK:327680000,327680000")#include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cst
阅读全文
摘要:我发现最近写blog都是一补好几天的。。。1001, 0/1规划,关键在构图。。。。map[i][i]这种点不用考虑,其他点连成邻接表就可以,然后从1到n求最短路。另外,“存在从1到1有一个环,从n到n有一个环”。所以要分别1->n, n->n跑一遍,1->n求出的dis[n]跟1->1有环,n->n有环这种情况比较一下,取小值。1002 偶不知道怎么证明,不过,如果比赛的时候瞎猜这个题,应该可以过的。。。T_T1005 思路跟上一场的03一样。不过我写的退化了。。。1008 我。。。可以说脏话吗?找规律吧。。。给一个1-20的表11 21 3 22 1 4 31
阅读全文
摘要:01 蛋疼的题,我那种写法死活不过。。。不知到哪里出问题了。优先队列直接写就行,注意是双向边,另外可能有自环。我想吐嘈HDU蛋疼的__int6403一道dp题,不过要优化,用单调队列。可以看出若每个状态只由上一层位置在其左边的状态的转移而来的话: dp[i][j] =min { dp[i-1][k] + pos[i][j] - pos[i-1][k] } + cost[i][j]= min { dp[i-1][k] - pos[i-1][k] } + pos[i][j] + cost[i][j]dp[i-1][k]-pos[i-1][k]是个确定的值,就是相当于求位置在pos[i][j]左边的
阅读全文
摘要:uestc的题。。。果然,题意都弄得这么晦涩。01推个规律,mod r。偶推错了。。。1个小时才过。06三分做的。还是不知道怎么证明他是凹函数,话说。。以为神人想当然的说这是凹函数。。。怎么证明?管他呢,真没劲!08话说偶已经推出来s1的和sum1,s2的和sum2。sum1 - sum2必为偶数,才能YES。。。但是对于字符串长度为2时这个规律无效。。。。所以。。。偶没敢写这题太神了。。。怀疑是tc上的题改的。。09树形dp。两种方法一个共有的性质。左孩子中的最大值小于右孩子中的最大值。(因为序列为 2^0, 2^1, 2^2...,2^n)方法1:f[n][d]表示n个节点深度为 1---
阅读全文
摘要:01树形dp。。。比赛完看了看解题报告。发现我的状态写的太搓了,想到了先只考虑半数的,然后在一个全是A(或B)的块里面补上一个全的。当时没想着把这个也加到状态里去,写特判写的想哭。。。!f[t][f][0] 表示t为根的子树,t被f攻击,并且算是f攻击的“连通块“里没有一个节点的攻击值是全值的最小值。f[t][f][1] 表示t为根的子树,t被f攻击,并且算是f攻击的“连通块“里有一个节点的攻击值是全值的最小值。sum = Σ{min(f[t->i][f][0], f[t->i][f^1][1])};plus = min{ f[t->i][f][1] - min(f[t-&g
阅读全文
摘要:比赛的时候各种wa加TLE。。。好纠结。。。01...至今没搞懂怎么个过程。。。04 gb用hash过得,后来看了一下标程,复杂度O(n^3),尼嘛,我写个O(n^3*20)的算法就超时。。。!06 偶始终不明白容斥原理怎么用的。。。估计各位大神是猜的公式,把1/p1 + 1/p2 + ... + 1/pn这个式子写出来后边的就可以猜了。。。07....很无语的一道题。直接暴力dfs能跑两位数。。。09 set过得,各种log的数量级。赛后以为大神总结说,这场比赛,log的数量级已经成为历史了。胡浩说比赛的时间比标程跑的时间多开了3-5倍,怪不得我写多乘个20就超了。。Orz这次出题的!
阅读全文
摘要:我发现已经无力吐嘈这几次的比赛了。。。这次蹭数据的少了许多,不过出题报告讲的那叫一个玄而又玄,完全没理解他要表达什么http://page.renren.com/601081183/note/863771603?ref=minifeed&sfet=2012&fin=1&ff_id=601081183&feed=page_blog&tagid=863771603&statID=page_601081183_2&level=11001数论题,当时根本就没想到,也不知道怎么证明。。。题解说A的所有质因子包含在B里边,原因是每一个某进制数都可以写
阅读全文
摘要:1001不是在为这次比赛找借口。。。我真的想吐嘈一下这道题。。。尼嘛!明明是状态dp!非得搞得数据随便贪心都能过!!!过你妹啊!埋头想dp的时候,大约开始十几分钟,刷新了一下。我了个去!快上百了!纯属恶心人吗?! 吐嘈完毕 -_-! 状态dp:1 <= N <= 20,最多20位,完全可以位压缩。预处理一下hp_sum[i] (i = 010111...101),表示i的二进制中所有为1的位置,他们的hp之和。 f[i] (i = 010111...101)表示i的二进制中所有为1的位置被干掉话费的最小代价f[ i|(1<< j) ] = max(f[ i|(1<
阅读全文
摘要:1001开始没读懂题意,蛋疼的英语。。。题意是先给26个字母,第i位表示把第i个字母翻译成那个字母。然后再给一个串,前边某些是密文,后边某些是明文。让求的是如果后边的某些明文是前边那些密文翻译过来的一部分。那么把后边的明文补全使得串最短。中文都说的好纠结。。。出题报告说是eKMP,偶暴力蹭过去的。。View Code #include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include <algorithm&
阅读全文
摘要:这里我只写一些认为应该写报告的题目。。。像那种5分钟敲出代码的题就不写了。感谢@xianbin5组织这场比赛,Orz题目1:给一些数据,建议一颗排序二叉树。然后找到某个节点的祖父节点(父节点的父节点)n <= 50000;题解:描述很简单,而且可以很简单的敲出来。但是注意数据量。。。所以这里要用到特殊的东西。一个颗很神奇的数:笛卡尔树笛卡尔树跟treap结构完全一样。不过区别在于treap的heap部分是随机取的,笛卡尔树的val是之前确定好的。笛卡尔树的构造过程:先对数据的key值进行从小到大排序,然后一次插入笛卡尔树。过程跟treap一样,不过可以发现,因为数据是排好序的,所以每次插
阅读全文
摘要:比赛的时候用treap写,挂成傻逼了!赛后据说set可以过。。。然后开始了我的挂弱b血泪史!TMD!!今天又敲了一遍,发现错在一个很很很2的地方!!!!View Code #include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include <algorithm>#include <string>#include <set>#include <ctime>#inclu
阅读全文
摘要:早晨7点到实验室一翻邮箱看到tc的邮件。。。srm 546,因为昨晚去复习,没来实验室,所以不知到又比赛。T_T 早晨抽出一小时翻了翻。。。250pt水题550pt不好想,反正我的思路很复杂,写难产了。然后看到别人的写,无语的是就几行代码搞定。不得不佩服啊class TwoRectangles {public: string describeIntersection(vector <int> A, vector <int> B) { int c[4]; c[0] = max(A[0], B[0]); c[1] = max(A[1], B[1]...
阅读全文
摘要:物理题,我把公式推错了。。。 两个限制条件,1、能爬上最高坡。2、Sweet Potato在每一个有Bitter Potatoes位置的速度大于等于Bitter 的速度。设要求的初速度为pv1、pv = sqrt(2*g*(maxh - h0));2、pv = tpv = sqrt(vi*vi + 2*g*hi); 为bitter potato纵坐标。View Code #include <iostream>#include <cstring>#include <cstdio>#include <cmath>using namespace std
阅读全文
摘要:比赛的时候没仔细看题,感觉挺麻烦的就没写。赛后看了一下解题报告。。。其实这题不复杂,考虑出一种情况,剩下的Ctrl + C, Ctrl + V就行。三维滚动数组。f[j][k][l]表示slot x1, x2, x3的值为j,k,l时的最优值。pre[j][k][l]表示他的前一个状态。ps:发现一个trap。滚动数组f[][][]在给p[][][]传递完参数后要置0,否则影响下一次的运算。。。View Code #include <iostream>#include <cstring>#include <cstdio>#include <cstdli
阅读全文
摘要:最大公约数L和最小公倍数G的关系:1、L%G == 0;2、设A, B的最大公约数为G, 最小公倍数为L,则:L/G = (A/G)*(B/G)3、gcd(A/G, B/G) = 1;题目:给出一对数A, B 的最大公约数G, 最小公倍数L。这里A, B有多种组合。,求A,B的一种组合使得A + B最小。如果没有则输出-1(SRM535 div2 500pt)(G <= 10^12, L<=10^12)猛的一看数据很大。不过用上前边的定理就可以解决了。领X = L/G;枚举A/G的值(不超过sqrt(X)),得到B/G的值。判断是否满足定理3。在所有满足的情况中找最小的ans =
阅读全文
摘要:客观原因很多,但我不想找了。水平在那摆着。。。。以后做比赛尽量找一个安静的点环境,比如实验室。昨晚一题没做出来,今天回头又翻了翻300pt:其实是道水题,很水很水的题。。。先统计出L,R所能到达的最远位置。然后把'?'补给大的。如果dis(L) = dis(R) 则补给第一个出现的。View Code #include <vector>#include <list>#include <map>#include <set>#include <queue>#include <deque>#include <
阅读全文
摘要:本菜把时间记错了,没赶上比赛T_T。这次的题貌似不是很简单,今天大体做了一下250pt:水题550pt:题意是给出A, B, X, 求Y,使得A*p + B*q的所有能取到的值X*p' + Y*q'都能取到。如果有无限种可能就return -1。当X同时被A, B整除时return -1,其他情况枚举y,同时满足 (A - y*q')%x == 0 和 (B - x*p')%y == 0.View Code 1 #include <vector> 2 #include <list> 3 #include <map> 4 #in
阅读全文
摘要:A,贪心题,思路是遇到1就翻转,看最后能不能把所有的反成0 B,找规律,不考虑黑白的话总共有ans = (n-7)*(m-7)种情况。如果ans是偶数,则正好有ans/2个。如果是奇数,则要根据右下角而定,右下角是0则有ans/2 + 1个,否则有ans/2个 C,数学题,Polla昨晚后给我讲的,分两种情况,设半径为r。一、w做圆柱体的高,此时r <= w/2 && 2*pi*r <= (h - 2*r) => r = min(w/2, h/(2*pi + 2)); 二,h那条边作为圆柱的高。2*pi*r <= w并且得到体积方程:F(r) = pi*
阅读全文

浙公网安备 33010602011771号