- 博客(15)
- 收藏
- 关注
原创 重载运算符(C++)
C++不允许已定类型的重载(比如整型的±*…)额但是可以整型和自定义类型的运算符重载简单来说就是本来有的运算符就不行其实运算符完全就是一个简便写法,a+b可以变成addition(a,b)这样的函数,并不会有特别需要绕的地方(只是式子长了特别丑罢了)结构体重载直接在结构体内即可struct node{ int x; bool operator +(const node a)const { return x+a.x; } bool operator <(const node a)c
2021-12-28 19:45:21
392
原创 C++结构体初始化
第一种struct node{ int x=0,y=0; int p[5]={0};};第二种struct node{ int x,y; int p[5]; node(){x=y=0;memset(p,0,sizeof(p));}};memset这里也可以用for什么的啦记得还有一种,死活找不到,先搁着吧
2021-12-28 16:12:16
386
原创 [NOIP2010 提高组] 引水入城
First 我们首先可以通过bfs判断是否能满足要求 此时这题就变成了:在一定能够满足要求的情况下,最少建造的蓄水厂数量。 这有什么区别呢?还真有 为了方便描述,我们约定,每一个与湖泊毗邻的点叫做源点,靠近沙漠的点叫做汇点。 它导致了这样一个结论:任意一个点其能够到达的汇点的一定构成连续的一段区间 首先我们要想到,对于从某一个源点出发一直流到它能到达的所有汇点的路径,该路径不可达的左端和右端相互不可达。 这个应该比较显然,因为其左端不能够跨过这条路径到右端,而由于其是从源点
2021-08-04 21:08:57
170
原创 NOIP2017总结
Day1T1:小凯的疑惑民间:100 这道题在一开始我是直接跳过去做T2的,然后回来看本来想着打个暴力算了…. 打着打着,手造数据的时候发现,诶好像数据正好是b*2-a(因为当时我的数据都是a=3的。。) 然后打了个对拍,错了,然后查看数据,发现诶好像正好是b*(a-1)-a!! @(>-<)@ 而且对拍也是没有问题的!! ps:考完后听到同学说的公式是a*b-a-b,差点吓死,后面
2017-11-20 19:52:54
304
原创 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 1000000007ll a,b;l
2017-11-05 21:57:18
247
原创 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
238
原创 10.28解题报告
T1 远征测:100 秒过,离散化不解释#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;#define ll long longll n;ll a[100005],b[100005];ll e[100005],ans;
2017-10-28 16:57:47
299
原创 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
705
原创 10.15解题报告
T1:迷宫测:100 裸的SPFA(裸得连读入优化都不能打) 表示不想打代码(哪怕只要复制)T2:训练测:70 在考试的时候推出了只需要从前往后一步一步推而不需要考虑顺序所以做出暴力==,正解应该是用一个类似于前缀和的玩意让区间的取反时间变为O(1)#include<iostream>#include<cstdio>#include<algorithm>#include<cstrin
2017-10-16 19:53:58
277
原创 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
230
原创 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
267
原创 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
284
原创 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
234
原创 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
217
原创 10.1解题报告
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-10-01 20:24:48
331
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人