洛谷P1048 [NOIP2005 普及组] 采药 洛谷的一个谱架-的题目,考的是01背包问题,接下来分享一下我的题解代码. AC通过图: 我的代码: 1 //动态规划 洛谷P1048 [NOIP2005 普及组] 采药 2 #include<iostream> 3 #include<cmath> 4 using namespace std; 5 int value[105];//价值数组 6 int times[105];//时间数组 7 long long dp[1000];…
先给出例题:P1020 [NOIP1999 普及组] 导弹拦截 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 大佬题解:P1020 [NOIP1999 普及组] 导弹拦截 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)第一个就是 如果是求最长子序列长度,一般可以用dp,时间复杂度O(n^2),使用树状数组优化后,时间复杂度O(nlogn),在这里就先不讨论了. 在STL里有lower_bound和upper_bound两个函数,都是以二分为原理在有序序列中查…
洛谷P1880 石子合并 纪中2119. 环状石子归并 洛谷传送门 题目描述1 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入格式 数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数. 输出格式 输出共2行,第1行为最小得分,第2行为最大得分. 输入输出样例 输入 #1复制 4 4…
题目描述 试计算在区间 11 到 nn的所有整数中,数字x(0 ≤ x ≤ 9)x(0≤x≤9)共出现了多少次?例如,在 11到1111中,即在 1,2,3,4,5,6,7,8,9,10,111,2,3,4,5,6,7,8,9,10,11 中,数字 11 出现了 44 次. 输入格式 2个整数n,xn,x,之间用一个空格隔开. 输出格式 1个整数,表示xx出现的次数. 输入输出样例 输入 #1 11 1 输出 #1 4 思路 循环1-n所有数,依次找到这些数中的x出现的次数 C++代码 /* *…
简单的模拟 关卡2-1,6 道题 开始普及组的训练!所谓模拟,就是直接根据题意编写,思维难度简单. //T1 铺地毯 #include <cstdio> #define N 10005 int x,y,n,a[N],b[N],g[N],k[N]; int main() { scanf("%d",&n); ;i<=n;++i) scanf("%d%d%d%d",&a[i],&b[i],&g[i],&k[i]);…
题目链接 https://www.luogu.org/problemnew/show/P1045 题目大意 本题目的主要意思就是给定一个p,求2p-1的位数和后500位数. 解题思路 首先看一下数据范围,我们不难发现此题必须要用高精度来做.但是每一次高精度乘法的复杂度是o(n)的(n为数字的位数),所以很显然需要加一个快速幂.但是事实证明快速幂+高精度也会超时,所以我们必须进一步优化时间. 根据题意,我们可知,只需要记录下后500位数即可,这里牵扯到一点点数论的知识,这一个数字的后500位是与5…
P1077 摆花 题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列. 试编程计算,一共有多少种不同的摆花方案. 输入输出格式 输入格式: 第一行包含两个正整数n和m,中间用一个空格隔开. 第二行有n个整数,每两个整数之间用一个空格隔开,依次表示a1.a2.……an. 输出格式: 输出…
[题解] 一道简单的模拟题.需要判一些特殊情况:第一项的正号不用输出,x的一次项不用输出指数,系数为0的项不用输出等等,稍微细心一下就好. #include<cstdio> #include<cstring> #include<algorithm> #define LL long long #define rg register #define N 200010 using namespace std; int n,m,a[N]; bool last; inline i…
首先题面是这样的: 给定一个正整数 k(3≤k≤15) ,把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当 k=3 时,这个序列是: 1,3,4,9,10,12,13,- 因为所有的底数k都是相同的,所以自然要想到把他们的指数分离出来~~. 例如这样 然后把指数分离出来: 0,1,0+1,2,0+2,1+2,0+1+2,3.... 这时候看可能没什么头绪,但是再看一遍题目,你会发现题目中强调了两个字qwq------- 递增.也就是说我们在确定第n项时,要从之前确定的…
问题描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去.到那时,岛上的所有人都会遇难.守望者的跑步速度为17m/s,以这样的速度是无法逃离荒岛的.庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点.守望者的魔法值恢复的速度为4点/s,只有处在原地休息状态时才能恢复.现在已知守望者的魔法初值M,他所在的初始位…
Coidng #include <iostream> #include <algorithm> #include <cstring> #include <vector> using namespace std; const int N = 1e5 + 10; int q[N]; int f[N], g[N]; int len = 0; int main() { int n = 0; while (cin >> q[n]) n++; // n++;…
本题就是一个简单的01背包问题   1.因为每个物品只能选一次,而且要使箱子的剩余空间为最小.所以可以确定属性为 MAX 2.由于是从n个物品里面选i个物品 那么就是选出的i个物品的空间总和要尽可能的大 就可以得到动态规划的表达式 f[i][j] = max(f[i-1][j],f[i-1][j-w[i]] + w[i]); 就可以得到完整的代码 #include <iostream> using namespace std; const int N = 55 , M = 20010; int…
点击查看代码 #include<bits/stdc++.h> using namespace std; int data1, data2, ans = 0, sum; int d[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int main() { cin >> data1 >> data2; for (int i = 1; i <= 12; i++) { for (int j = 1; j…
n个数中选取k个数,判断这k个数的和是否为质数. 在dfs函数中的状态有:选了几个数,选的数的和,上一个选的数的位置: 试除法判断素数即可: 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=5e6+5; 4 int n,k,a[N],ans; 5 6 bool isprime(int x){ 7 int vi=sqrt(x); 8 for(int i=2;i<=vi;i++){ 9 if(x%i==0) ret…
[题解] 鲜活的水题..我们把数列换成k进制的,发现数列是001,010,011,100,101,110,111...,而第m项用k进制表示的01串刚好就是m的二进制的01串.于是我们预处理k的幂,把n化成2进制的,在用这个01串求数列第n项即可. #include<cstdio> #include<algorithm> #define rg register #define N 50 #define LL long long using namespace std; ],tot;…
题目描述 佳佳碰到了一个难题,请你来帮忙解决. 对于不定方程a1+a2+…+ak-1+ak=g(x),其中k≥2且k∈N,x是正整数,g(x)=x^x mod 1000(即x^x除以1000的余数),x,k是给定的数.我们要求的是这个不定方程的正整数解组数. 举例来说,当k=3,x=2时,分别为(a1,a2,a3)=(2,1,1)'(1,2,1),(1,1,2). 输入输出格式 输入格式: 输入文件equation.in有且只有一行,为用空格隔开的两个正整数,依次为k,x. 输出格式: 输出文件…
P1775 古代人的难题_NOI导刊2010提高(02) 题目描述 门打开了,里面果然是个很大的厅堂.但可惜厅堂内除了中央的一张羊皮纸和一支精致的石笔,周围几具骷髅外什么也没有.难道这就是王室的遗产?小FF不信,他仔细阅读了羊皮纸上的内容后发现,里面书写的古代人一直没能解出的难题,解除这道题目的人只要将答案用石笔写到这张羊皮纸上就能到达王室的宝藏室了.而当小FF拿起石笔后,刚刚打开的巨石门突然关上了:这时小FF意识到原来那几具骷髅是在他之前到这里的冒险者,恐怕是因为没能破解这道题而困死在这里了.…
最长路 #include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <vector> using namespace std; //Mystery_Sky // #define maxn 1000010 #define maxm 5000050 #define INF 0x3f3f3f3f queue <int> q; int i…
P1775 古代人的难题_NOI导刊2010提高(02) P1936 水晶灯火灵 斐波那契数列 1.x,y∈[1…k],且x,y,k∈Z 2.(x^2-xy-y^2)^2=1 给你一个整数k,求一组满足上述条件的x,y并且使得x^2+y^2的值最大. 小FF得到答案后,用石笔将答案书写在羊皮纸上,那么就能到达王室的遗产所在地了. 证明可直接转%%大佬博客%% 化简式子: $(x^2-xy-y^2)^2=1$ $(y^2+xy-x^2)^2=1$ $((x+y)^2+xy+2*x^2)^2=1$…
看了一下题解,显然在做无用功啊,而且麻烦了许多,但是这道题真心不难,显然是一个区间修改的题目,然后查询的题目 我的线段树只需要记录一个量:区间和 看了一下其他题解的pushdown函数,发现真心写的很麻烦 这里有一个很巧妙的解法: 如果这个区域被染成了白棋,那么直接把这个区间总和清零就好了 然后向下传值,只需要把他的儿子节点sum清零就好了 那就直接上代码吧 #include<iostream> #include<cstdio> #include<cstring> #i…
相当与一个拓扑排序的模板题吧 蒟蒻的辛酸史 题目大意:给你一个有向无环图,让你求出1到n的最长路,如果没有路径,就输出-1 思路:一开始以为是一个很裸的拓扑排序 就不看题目,直接打了一遍拓扑排序 然后就得到了45分的成绩 #include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<cmath> #define int long long int us…
P1807 最长路_NOI导刊2010提高(07) 题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径. 输入格式 输入文件longest.in的第一行有两个整数n和m,表示有n个顶点和m条边,接下来m行中每行输入3个整数a,b,v(表示从a点到b点有条边,边的长度为v). 输出格式 输出文件longest.out,一个整数,即1到n之间的最长路径.如果1到n之间没连通…
//拓扑排序求最长路 #include<bits/stdc++.h> #include<queue> using namespace std; const int INF=0x3f3f3f3f; ; ; struct edge{ int dis,to;edge *Nex; }tmp[maxm],*head[maxn]; ; bool v[maxn];//标记数组 把从起点(第一个点)能到的点打标记 确保所求最长路都能从点1到达 inline void add(int x,int y…
题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径. 输入格式 输入文件longest.in的第一行有两个整数n和m,表示有n个顶点和m条边,接下来m行中每行输入3个整数a,b,v(表示从a点到b点有条边,边的长度为v). 输出格式 输出文件longest.out,一个整数,即1到n之间的最长路径.如果1到n之间没连通,输出-1. 输入输出样例 输入 #1复制 2 1…
2.道路修建 描述 Description liouzhou_101最悲痛的回忆就是NOI2011的道路修建,当时开了系统堆栈,结果无限RE… 出于某种报复心理,就把那题神奇了一下: 在 Z星球上有N个国家,这N个国家之间只能建造N-1条道路且全部建完这N-1条道路后这N个国家相互连通,修建每条道路都有相应的花费.但是他们都很吝啬,于是决定只随机选出两个不同的国家(为了国家的平等,当然这两个国家是无顺序可言的),建造该建造的道路,使得这两个国家相互连通,自然费用越少越 好.然后问你,在所有情况中…
3.破坏基地 描述 Description 在Z国和W国之间一直战火不断. 好不容易,W国的间谍把完整的Z国的军事基地的地图到手了. 于是W国决定再次出击,一举击破Z国的防线. W国认真研究了Z国的地形,发现Z国有N个军事基地,我们不妨编号成1..N,而且经过深刻研究,发现1号军事基地是资源补给基地,而N号军事基地是前线. 由于地形的缘故,只有M对军事基地两两可达,当然是有距离的. 此时W国的弹头紧缺,当下的弹头只能去毁灭一个军事基地.当然了,最重要的就是毁灭一个军事基地,使得资源补给基地与前线…
1. 数学作业 [问题描述] 路人丙的数学老师非常乏力,他喜欢出一些非常乏力的数学题来为难乏力的学生们.这次数学老师布置了一堆的数学题作为作业,而且这些数学题有个共同的特点是都求C(N,M)中不同质因子的个数,所以路人丙需要你帮他写一个程序来帮助他快速地完成这些作业.C(N,M)即求在N中选M个的组合数. [输入文件] 输入N,M(1<=N,M<=50000) [输出文件] 输出一个整数 [样例输入] 7 3 [样例输出] 2 解:数论题:不用求组合数和杨辉三角:    否则会爆内存:正确做法…
洛谷 1063 dp 区间dp 感觉做完这道提高组T1的题之后,受到了深深的碾压,,最近各种不在状态.. 初看这道题,不难发现它具有区间可并性,即(i, j)的最大值可以由(i, k) 与 (k+1, j)得到.考虑使用区间dp 题目中项链为环形,所以在2 * n的区间上进行操作 设dp[i][j],表示区间(i, j) 的最大值 转移为 dp[i][j] = max(dp[i][j], dp[i][k] + dp[k+1][j] + pre[i] * succ[k] * succ[j]); 老…
相关链接: noip2018总结 noip2017是我见过的有史以来最坑爹的一场考试了. 今年北京市考点有一个是我们学校,我还恰好被分到了自己学校(还是自己天天上课的那个教室),于是我同时报了普及提高,一天半的时间都考了. 这次考试总的来说基本上都爆炸了.虽然都拿了一等奖,但这根本不能说明问题,从中可以看出我在敲代码学习上还是问题百出. 下面我分两篇来总结一个kubi的OIer的解题思路及心得,当然包括正解.然而我莫名其妙的打了好长好长……难道我太勤奋了? OIer常识:本文所有log均以2为底…
P1656 炸铁路 题目提供者kkksc03 标签图论搜索/枚举洛谷原创 难度普及/提高- 题目描述 因为某国被某红色政权残酷的高压暴力统治.美国派出将军uim,对该国进行战略性措施,以解救涂炭的生灵. 该国有n个城市,这些城市以铁路相连.任意两个城市都可以通过铁路直接或者间接到达. uim发现有些铁路被毁坏之后,某两个城市无法互相通过铁路到达.这样的铁路就被称为key road. uim为了尽快使该国的物流系统瘫痪,希炸毁铁路,已达到存在某两个城市无法互相通过铁路到达的效果. 然而,只有一发炮…