关闭

Paths 升级(DFS序+线段树+LCA+树形DP)

2015多校1 Tree chain problem 思路之前那道Paths的升级版 在每一条链上加上了一定的权值 然后求最大值其实就加了一个权值的条件 但这样一来题目基本上是完全不一样了 这题用贪心显然不行了在树上求最大值可以试一下树形DP 定义dp[i]表示i的子树的最大值 如果要选用一条链更新一个根节点的信息 我们需要知道加上这条链的影响...
阅读(45) 评论(0)

2017 10 09 NOIP2017模拟赛

最后一题5分很爆炸。。。慎用切分。。。双击 2923日常一水题,记录一下左右边界就好了取子串 2991DP题 取子串Paths 2954一道关于树的图论先来考虑一条链的情况(考试时切分把链的分都切没了。。。) 不难发现在一条链上本题就变成一道很经典的贪心了 只要根据右端点排序就可以直接贪心其实在树上也是差不多的思路 正解是根据添加的链的两个端点的LCA的深度从大到小来排序貌似正确性还是挺显然...
阅读(37) 评论(0)

取子串

因为这题的状态转移看起来还是比较麻烦的其实当我们找到一个T串的时候 可以简单分成两种情况第一种情况:只存在一个子串 那么存在的这个字串必定包含找到的这个串 将这个T串往前延伸,可以得到i-l2+1种方案 第二种情况:存在多个字串 这样的话就需要借助前面的结果转移 可以枚举当前子串延伸的长度 再统计当前延伸的边界左边的方案数 我们不妨定义三个数组 dp[i] =...
阅读(42) 评论(0)

刷漆升级(分块)

刷漆升级思路本来打的线段树 敲了半天,大佬说这题线段树被卡95分。。。 不过这题用分块做确实方便一点,而且跑的还快颜色的数据范围有2^31,直接开数组会炸掉 而且要实现快速查询,更改,删除 显然用map来维护比较好 区间更改,所以要延迟更新题解#include #include #include #include...
阅读(96) 评论(0)

2017 10 08 NOIP2017模拟赛

这次考的还不错哈 可惜第二题输入的数据忘开longlong了。。。只有80分弹钢琴 1794这题的情景描述还是比较坑的 其实讲的就是从n个数中取k个,将所有情况里的最大值加起来只要排序一下(从小到大) 就可以发现每个数只要是和它前面的组合,这样它就是组合的最大值 用前缀和维护一下1~k的组合数量就可以了不过这题用逆元结合下费马小定理也能直接算出来删除数字 2988 又是一道状压DP 我们只...
阅读(77) 评论(0)

高精度模板

struct Big { int num[M],l; Big() { memset(num,0,sizeof(num)); l=1; } void Rd() { scanf("%s",str); l=0; int sl=strlen(str); for(int i=sl-1...
阅读(44) 评论(0)

选课(树形DP)

选课思路哈,又是一道树形DP 貌似也挺水的。。。 先引进一个根节点把这些关系连成一棵树 然后枚举两边更新DP就好了 水题啊水题题解#include #include #include #include #include using namespace std;#define FOR(i,a,b) fo...
阅读(45) 评论(0)

2017 10 07 NOIP2017模拟赛

最后一题正解又没打完。。。最后交暴力好像又没开freopen 。。。这波尴尬了S数 2985将前10000的数输出来,再根据规律证明一下 可以发现这些数各个数位的数字只能由0,1,2,3组成 超过3就会产生进位数据范围不超过10^9 状态数也只有4^9个 dfs枚举再判一下就行了黑客入侵 2986 通过dp数组的初始化来实现备用坦克的功能 接下来跟据题意模拟一下 二分查找下一个点来更...
阅读(52) 评论(0)

NOIP2009靶形数独(DFS)

NOIP2009靶形数独思路1刚看到这题,这不显然DFS么 直接爆搜了先。。。 稍微处理了下,爆搜有80分 改了半天,还没过。。发现有几个货用了一个很污的方法 因为dfs超时,他们在dfs上加了句话 if(++T>=12000000) return ; 因为是在更新ans的值,这样做有可能过,而且在超时前强行return掉 (估计这个极限数字他们也试了好久) 由于数据比较水,这样还真...
阅读(62) 评论(0)

没有上司的晚会(树形DP)

没有上司的晚会 poj2342思路一道比较水的树形DP 由题意得,两个相邻的节点不能同时取,而且存在负数 dp定义很直接 dp[i][1] =>取 dp[i][0] =>不取 dp数组存最大值 可以从根节点dfs下去 收集0和1的信息 状态转移也很显然: dp[x][0]+=MAX(dp[y][0],dp[y][1]); dp[x][1]+=dp[y][0];题解#incl...
阅读(138) 评论(0)

排序算法(不稳定)

不稳定排序1.选择排序 2.快速排序 3.希尔排序 4.堆排序 选择排序int A[M]; void sort(){ FOR(i,1,n){ k=i; FOR(j,i+1,n)//在[i+1,n]的范围找到最小值的下标 if(A[j]<A[k])k=j; if(k!=i)swap(A[i],A[k])//第...
阅读(79) 评论(0)

2017 10 06 NOIP2017模拟赛

该拿的分都拿了,不过总分还是不高 膜拜下zhowie神犇构造序列 2983当时写的是记忆化搜索,不好优化,只有80 改成递推再优化下就过了1/2背包 2984 方法很多,只要不直接DP,好像怎么写都过 我直接判v的奇偶 再贪心就过了引水入城 1442貌似是某年NOIP真题,正解是DP首先判能否满足要求,这样30分就到手了 接下来,如果满足要求,说明第n行的城市都能被覆盖到。 我们可以证明第...
阅读(67) 评论(0)

排序算法(稳定)

稳定排序1.计数排序 2.基数排序 3.插入排序 4.冒泡排序 5.归并排序 计数排序 int A[M]; void sort() { int n,x; scanf("%d",&n); FOR(i,1,n){ scanf("%d",&x); A[x]++;//统计每个数值出现的次数 } FOR(i,0,M-1)w...
阅读(45) 评论(0)

2017 10 04 NOIP2014复赛day1

前两题总算没有炸。。不过最后一题打完暴力就没时间了。。。 据说这是最简单的一套题了。。生活大爆炸版石头剪刀布 4118这题打表应该要简单点 不过我直接分类讨论了联合权值 4119这应该是最近做的最简单的一道图论了。。 A得挺快的这种题目肯定要先优化表达式 不然以一个一个配肯定超时 因为距离为2,所以可以枚举中间的节点 就好算了#include #include<cstdi...
阅读(73) 评论(0)

2017 10 03 NOIP2017模拟赛

考崩了。。。没有一道AC。。写书 2979只有10分。。。 有一个10敲成9了 对拍两个小时 。。。 这种题目下次对拍造数据可以不随机 直接从1循环到nLR棋盘 2980鼓捣一个多小时 想用组合数写 最后只能把LR切开打暴力 只有40 考完发现其实是DP 其实跟上次欢乐赛的第二题挺像的 上次秒A,这次居然没看出来。。。由题意知道 棋子之间的相对位置是不变的 那么就可以DP了...
阅读(80) 评论(0)
    个人资料
    • 访问:981次
    • 积分:154
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档