![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
做题总结
文章平均质量分 93
G_warth
这个作者很懒,什么都没留下…
展开
-
[NOIP2010 提高组] 引水入城
First 我们首先可以通过bfs判断是否能满足要求 此时这题就变成了:在一定能够满足要求的情况下,最少建造的蓄水厂数量。 这有什么区别呢?还真有 为了方便描述,我们约定,每一个与湖泊毗邻的点叫做源点,靠近沙漠的点叫做汇点。 它导致了这样一个结论: 任意一个点其能够到达的汇点的一定构成连续的一段区间 首先我们要想到,对于从某一个源点出发一直流到它能到达的所有汇点的路径,该路径不可达的左端和右端相互不可达。 这个应该比较显然,因为其左端不能够跨过这条路径到右端,而由于其是从源点原创 2021-08-04 21:08:57 · 163 阅读 · 0 评论 -
NOIP2017总结
Day1T1:小凯的疑惑民间:100 这道题在一开始我是直接跳过去做T2的,然后回来看本来想着打个暴力算了…. 打着打着,手造数据的时候发现,诶好像数据正好是b*2-a(因为当时我的数据都是a=3的。。) 然后打了个对拍,错了,然后查看数据,发现诶好像正好是b*(a-1)-a!! @(>-<)@ 而且对拍也是没有问题的!! ps:考完后听到同学说的公式是a*b-a-b,差点吓死,后面原创 2017-11-20 19:52:54 · 289 阅读 · 0 评论 -
11.5
T1:解梦测:70 费马小定理 a^(p-1)≡1 (mod p)解出#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; #define ll long long #define INF 1000000007 ll a,b; l原创 2017-11-05 21:57:18 · 231 阅读 · 0 评论 -
NOIP2009 道路游戏
解题报告思路:这道题的解法就是dp,因为每一秒的最优解都可以通过任意点走了k步到达//i:秒 v:已捡到的钱 last:从哪里产出 dp[i]=Max(dp[i],dp[i-k]+v-pay[last]);这其中当前在哪一个点上(j)决定了k和last的关系,然后last--; if(last==0)last=n; v+=gold[last][i-k]; 中的v要累加,这里k发挥了作用,因为如果不累原创 2017-10-19 20:57:24 · 683 阅读 · 0 评论 -
11.4解题报告
T1:组合数问题(并不是NOIP2016)测:20 Emmmm….心态爆炸,看见题目名想偏了,想着可能与组合数有关,然后推出了一个¥&#……*&@%……的东西…QAQ 式子: s[i][j]=s[i-1][j-1]+s[i-1][j]*j; 然后通过二维前缀和 if(K==1)p[0][0]=1; for(i=1;i<=nmax;++i)p[i][0]=p[i-1][0]+1;原创 2017-11-04 17:17:03 · 227 阅读 · 0 评论 -
10.15解题报告
T1:迷宫测:100 裸的SPFA(裸得连读入优化都不能打) 表示不想打代码(哪怕只要复制)T2:训练测:70 在考试的时候推出了只需要从前往后一步一步推而不需要考虑顺序所以做出暴力==,正解应该是用一个类似于前缀和的玩意让区间的取反时间变为O(1)#include<iostream> #include<cstdio> #include<algorithm> #include<cstrin原创 2017-10-16 19:53:58 · 264 阅读 · 0 评论 -
10.28解题报告
T1 远征测:100 秒过,离散化不解释#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; #define ll long long ll n; ll a[100005],b[100005]; ll e[100005],ans;原创 2017-10-28 16:57:47 · 286 阅读 · 0 评论 -
10.3解题报告
T1:reverse测:50 第一次测的时候dp方程写错了 思路为: 预处理前i项变1和变0分别为多少个 再for1~n为临界点前面全变0后面变1取maxT2:number测:30 用位运算分别处理数码种类 对于同种的数字肯定是(n-1)+(n-2)+…+1用等差数列直接求就行了T3:wave测:0 原题为花匠 贪心求数列,若满足则直接加入,不满足则看能否更新当前最后原创 2017-10-03 16:00:51 · 213 阅读 · 0 评论 -
10.2解题报告
T1:迷宫测:100 做过不解释T2:物流运输测:10 最短路解[i,j]天区间一次的最短路 dp二重循环f[i]=min(f[j+1]+k+(j-i)*P[j+1][i]); 当然要初始化F[i]为一次都不改的情况啦T3:玩具装箱测:0 首先列出dp方程: f[i]=min(f[j]+(i-j+q[i]-q[j-1]-L)); 但是是二重循环会超时 通过斜率优化可以降到原创 2017-10-03 15:51:07 · 254 阅读 · 0 评论 -
10.1解题报告
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-10-01 20:24:48 · 322 阅读 · 0 评论 -
10.7 T1
#include< iostream > #include< cstdio > #include< algorithm > #include< cstring > #include< cmath > using namespace std; long long n,a[500005],t[500005]; long long ans; void gb(int l,int r)原创 2017-10-01 21:24:24 · 205 阅读 · 0 评论 -
10.1 T3
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; const int maxn=99999999; int T,m,n; int pa[105],f[1005]; int ans; struct node { int l,原创 2017-10-01 21:27:50 · 271 阅读 · 0 评论 -
10.7 T2
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; const int maxn=99999999; int n,Q,c[405],a[405][405],d[405][405]; int f[405][405],b[405]; i原创 2017-10-01 21:27:17 · 220 阅读 · 0 评论