【题解】NOIp模拟:数字

数字(num.c/cpp/pas)【问题描述】一个数字被称为好数字当他满足下列条件:1. 它有2*n个数位,n是正整数(允许有前导0)。2. 构成它的每个数字都在给定的数字集合S中。3. 它前n位之和与后n位之和相等或者它奇数位之和与偶数位之和相等例如对于n=2,S={1,2},合法的好数字有1111,1122,1212,1221,2112,2121,2211,2222这样8种。已知n,求合法的好数字的个数mod 999983。【输入格式】第一行一个数n。接下来一个长度不
分类: 其他 发布时间: 09-07 22:40 阅读次数: 0

【题解】CF1180B:Nick and Array

原题传送门若一个数x>=0x>=0x>=0,则∣−x−1∣>∣x∣|-x-1|>|x|∣−x−1∣>∣x∣若一个数x<0x<0x<0,则∣−x−1∣<∣x∣|-x-1|<|x|∣−x−1∣<∣x∣所以把所有大于等于0的数变成负的,如果有奇数个数,乘积是负的所以把绝对值最大的负数变成正的,易证最优Code:#include <bits/stdc++.h>#define maxn 100010using name
分类: 其他 发布时间: 09-07 22:40 阅读次数: 0

【题解】LuoGu1776:宝物筛选

原题传送门暴力dpdpi,j=max(dpi−1,j−w∗k+v∗k)dp_{i,j}=max(dp_{i-1,j-w*k}+v*k)dpi,j​=max(dpi−1,j−w∗k​+v∗k)可以用倍增思想, 把物品用二进制分组比如9−>1,2,4,29->1,2,4,29−>1,2,4,2这样在复杂度里面可以把一个mmm优化成logmlogmlogm复杂度满足Code:#include <bits/stdc++.h>#define maxn 110#defi
分类: 其他 发布时间: 09-07 22:39 阅读次数: 0

【题解】LuoGu2569:[SCOI2010]股票交易

原题传送门开坑
分类: 其他 发布时间: 09-07 22:39 阅读次数: 0

【题解】LuoGu2605:[ZJOI2010]基站选址

原题传送门开坑
分类: 其他 发布时间: 09-07 22:39 阅读次数: 0

【题解】NOIp模拟:守卫者的挑战

题目描述打开了黑魔法师 Vani 的大门,队员们在迷宫般的路上漫无目的地搜寻着关押 applepi 的监狱的所在地。突然,眼前一道亮光闪过。“我,Nizem,是黑魔法圣殿的守卫者。如果你能通过我的挑战,那么你可以带走黑魔法圣殿的地图„„”瞬间,队员们被传送到了一个擂台上,最初身边有一个容量为 K 的包包。擂台赛一共有 N 项挑战,各项挑战依次进行。第 i 项挑战有一个属性a_iai​ ,如果a_i \\ge 0ai​ ≥0,表示这次挑战成功后可以再获得一个容量为a_iai​ 的包包;如果
分类: 其他 发布时间: 09-07 22:39 阅读次数: 0

【题解】NOIp模拟:混合图

【题目描述】Hzwer神犇最近又征服了一个国家,然后接下来却也遇见了一个难题。Hzwer的国家有n个点,m条边,而作为国王,他十分喜欢游览自己的国家。他一般会从任意一个点出发,随便找边走,沿途欣赏路上的美景。但是我们的Hzwer是一个奇怪的人,他不喜欢走到自己以前走过的地方,他的国家本来有p1条有向边,p2条无向边,由于国王奇怪的爱好,他觉得整改所有无向边,使得他们变成有向边,要求整改完以后保证他的国家不可能出现从某个地点出发顺着路走一圈又回来的情况。(注:m=p1+p2.)概述:给你一张混合图,要求
分类: 其他 发布时间: 09-07 22:38 阅读次数: 0

【题解】LuoGu1991:无线通讯网

原题传送门最小生成树,若有kkk个手机,那么可以让kkk个连通块连起来所以从小建边,只剩kkk个连通块时就输出Code:#include <bits/stdc++.h>#define maxn 1010#define maxm 1000010using namespace std;const double eps = 1e-5;struct Line{ int x, y; double len;}line[maxm], len[maxm];int x[maxn], y[
分类: 其他 发布时间: 09-07 22:38 阅读次数: 0

【题解】LuoGu1993:小 K 的农场

原题传送门差分约束操作1:addedge(b,a,c)addedge(b,a,c)addedge(b,a,c)操作2:addedge(a,b,−c)addedge(a,b,-c)addedge(a,b,−c)操作3:addedge(a,b,0),addedge(b,a,0)addedge(a,b,0),addedge(b,a,0)addedge(a,b,0),addedge(b,a,0)用spfaspfaspfa跑个最长路Code:#include <bits/stdc++.h>
分类: 其他 发布时间: 09-07 22:38 阅读次数: 0

【题解】LuoGu2254:[NOI2005]瑰丽华尔兹

原题传送门首先还是暴力dpdpt,x,ydp_{t,x,y}dpt,x,y​表示时间ttt,位置(x,y)(x,y)(x,y)的答案dpt,x,y<−−−dpt−1,x,ydp_{t,x,y}<---dp_{t-1,x,y}dpt,x,y​<−−−dpt−1,x,y​dpt,x,y<−−−dpt−1,lstx,lsty+1dp_{t,x,y}<---dp_{t-1,lstx,lsty}+1dpt,x,y​<−−−dpt−1,lstx,lsty​+1复杂度是O
分类: 其他 发布时间: 09-07 22:38 阅读次数: 0

【题解】LuoGu4158:粉刷匠

原题传送门很好的一个dp令fi,jf_{i,j}fi,j​表示前iii行刷了jjj次的答案,gi,j,kg_{i,j,k}gi,j,k​表示第iii行前kkk个,刷了jjj次的最大价值fi,j=max(fi−1,j−k+gi,k,m)f_{i,j}=max(f_{i-1,j-k}+g_{i,k,m})fi,j​=max(fi−1,j−k​+gi,k,m​)gi,j,k=max(gi,j−1,l+max(sumi,k−sumi,l,(k−l)−(sumi,k−sumi,l)))g_{i,j,k}=m
分类: 其他 发布时间: 09-07 22:37 阅读次数: 0

【题解】LuoGu4161:[SCOI2009]游戏

原题传送门对于一个大小为xxx的循环节,经过kxkxkx次变换后不变所以一种排列的变幻数为所有循环节大小的最小公倍数问题转化成了求有多少个s=[x1y1,x2y2,x3y3,...,xnyn]满足(x1,x2,x3,...,xn)=1,x1y1+x2y2+x3y3+...+xnyn<=ns=[x1^{y1},x2^{y2},x3^{y3},...,xn^{yn}]满足(x1,x2,x3,...,xn)=1,x1^{y1}+x2^{y2}+x3^{y3}+...+xn^{yn}<=ns=[x
分类: 其他 发布时间: 09-07 22:37 阅读次数: 0

【题解】LuoGu1265:公路修建

原题传送门这题题面看起来就是在讲一个算法的流程,然后是求最小生成树,用kruskalkruskalkruskal罕见的会爆内存,然而这题允许O(n2)O(n^2)O(n2)的复杂度,就用传说中的primprimprim解决Code:#include <bits/stdc++.h>#define maxn 5010#define LL long longusing namespace std;double x[maxn], y[maxn], dis[maxn], ans;int n
分类: 其他 发布时间: 09-07 22:37 阅读次数: 0

【题解】LuoGu2048:[NOI2010]超级钢琴

原题传送门这道题目的id昭示着它的非同凡响我可以把这题和别的几题结合起来,产生一种利用堆的节点最优思想序列合并最小函数值以上是两道和这题有共同思想的本题是要求出前kkk大的sumj−sumi−1sum_j-sum_{i-1}sumj​−sumi−1​的和对于每个节点iii,首先寻出[i+l−1,i+r−1][i+l-1,i+r-1][i+l−1,i+r−1]区间内的pospospos,使得sumpos−sumi−1>=sumj−sumi−1(i+l−1<=j<=i+r−1)s
分类: 其他 发布时间: 09-07 22:37 阅读次数: 0

【题解】CF1101D:GCD Counting

原题传送门发现要是两个数gcd>1gcd>1gcd>1,其实只需要关注他俩是否有质数公因数对于每个数暴力分解质因数,树形dpdpu,idp_{u,i}dpu,i​表示点uuu为根,第iii个质因数的最长链ans=max(dpu,i+dpv,j)(fav=u,primeu,i=primev,j)ans=max(dp_{u,i}+dp_{v,j})(fa_v=u,prime_{u,i}=prime_{v,j})ans=max(dpu,i​+dpv,j​)(fav​=u,primeu,
分类: 其他 发布时间: 09-07 22:36 阅读次数: 0

【题解】CF1081C:Colorful Bricks

原题传送门kkk个颜色不同,就是在n−1n-1n−1个间隔中插入kkk个板子,每一段内部颜色相同,方案数Cn−1kC_{n-1}^kCn−1k​枚举每个块的颜色,第一个块有mmm中选择,之后都有m−1m-1m−1种选择所以答案就是Cn−1k∗m∗(m−1)kC_{n-1}^k*m*(m-1)^{k}Cn−1k​∗m∗(m−1)kCode:#include <bits/stdc++.h>#define LL long longusing namespace std;const LL
分类: 其他 发布时间: 09-07 22:36 阅读次数: 0

【题解】CF1085D:Minimum Diameter Tree

原题传送门贪心,只给与叶子结点相连的边赋值,平均分假设有cntcntcnt个叶子,每条叶子边的权值为scnt\\frac{s}{cnt}cnts​答案是2scnt2\\frac{s}{cnt}2cnts​Code:#include <bits/stdc++.h>#define maxn 100010using namespace std;double s, cnt;int n, d[maxn];inline int read(){ int s = 0, w = 1; cha
分类: 其他 发布时间: 09-07 22:36 阅读次数: 0

【题解】CF1025D:Recovering BST

原题传送门首先会想到一个朴素的暴力dpi,j,kdp_{i,j,k}dpi,j,k​表示区间[i,j][i,j][i,j]根为kkk是否可行,枚举两边子树的根复杂度O(n4)O(n^4)O(n4)这是逆推dp,一般逆推不行,可以想一想顺推对于一个区间[i,j][i,j][i,j],它的父亲只能为i−1或j+1i-1或j+1i−1或j+1,可以枚举区间[i,j][i,j][i,j]以及区间的根kkk,往[i−1,j],[i,j+1][i-1,j],[i,j+1][i−1,j],[i,j+1]两个状态
分类: 其他 发布时间: 09-07 22:36 阅读次数: 0

【题解】CF1031C:Cram Time

原题传送门贪心,能用小的不用大的满足∑i=1ni<=a+b\\sum_{i=1}^{n}i<=a+b∑i=1n​i<=a+b最大的iii,一定可以用完1−n1-n1−n对于aaa,直接从大到小枚举是否可以看,剩下的给bbbCode:#include <bits/stdc++.h>#define LL long longusing namespace std;LL a, b;int flag[1000010];int main(){ scanf(%lld%
分类: 其他 发布时间: 09-07 22:35 阅读次数: 0

【题解】CF846C:Four Segments

原题传送门ans=2(sumi+sumk−sumj)−sumnans=2(sum_i+sum_k-sum_j)-sum_nans=2(sumi​+sumk​−sumj​)−sumn​对于每个jjj,算出最优的i,ki,ki,k,枚举jjjCode:#include <bits/stdc++.h>#define maxn 5010#define LL long longusing namespace std;int n;LL sum[maxn], pre[maxn], nxt[m
分类: 其他 发布时间: 09-07 22:35 阅读次数: 0