首页 > TAG信息列表 > NOIP2009

P1073 [NOIP2009 提高组] 最优贸易 (最短路spfa)

本题就是在一条1-n的路径上找p,q(先经过p),使得q-p最大。 考虑建正反图,正图上求出d[x],表示1-x的路径经过的节点最小值,反图上则从n开始求出f[x],x-n的最大值,最后枚举断点i,取最大的f[i]-d[i]就是答案。 基于动态规划的思想。 1 #include<bits/stdc++.h> 2 using namespace std; 3 con

[NOIP2009 提高组] 最优贸易 题解

题目描述 \(C\) 国有 \(n\) 个大城市和 \(m\) 条道路,每条道路连接这 \(n\)个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 \(m\) 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为 $1 $条。 \(C\) 国幅员辽阔,各地

P1073 [NOIP2009 提高组] 最优贸易做题笔记

思路是建一个反图,在原图上从点 \(1\) 开始跑一遍 \(SPFA\),算出点 \(1\) 到点 \(x\) 的最短路径上的价格最小值 \(e_x\);再在反图上从点 \(n\) 开始跑一遍 \(SPFA\),算出点 \(n\) 到点 \(1\) 的最短路径上的价格最大值 \(f_x\),答案为 \(\max(f_x - e_x) (1 \le x \le n)\)。 #include

【题解】P1073 [NOIP2009 提高组] 最优贸易(图论,最短路,SPFA)

【题解】P1073 [NOIP2009 提高组] 最优贸易 此题妙哉! 虽然说这只是道绿题,但是还是卡了我好久,主要是这道题里面有两个思想我完全想不到。我太菜了 写一下思路来记录一下这道绝妙的题目吧。 题目链接 [NOIP2009 提高组] 最优贸易 - 洛谷 题意概述 有一张 \(n\) 个点 \(m\) 条边的图

P1068 [NOIP2009 普及组] 分数线划定

// Problem: P1068 [NOIP2009 普及组] 分数线划定 // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P1068 // Memory Limit: 125 MB // Time Limit: 1000 ms // User: Pannnn #include <bits/stdc++.h> using namespace std; struct Candidate { int id;

P1073 [NOIP2009 提高组] 最优贸易

题面 \(C\)国有\(n\)个大城市和\(m\) 条道路,每条道路连接这 \(n\)个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 \(m\) 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为 $1 $条。 \(C\)国幅员辽阔,各地的资源分布

P1067 [NOIP2009 普及组] 多项式输出

// Problem: P1067 [NOIP2009 普及组] 多项式输出 // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P1067 // Memory Limit: 125 MB // Time Limit: 1000 ms // User: Pannnn #include <bits/stdc++.h> using namespace std; int main() { int n; cin &

质因数分解-P1069 [NOIP2009 普及组] 细胞分裂

题目描述 HanksHanks 博士是 BTBT (Bio-TechBio−Tech,生物技术) 领域的知名专家。现在,他正在为一个细胞实验做准备工作:培养细胞样本。 HanksHanks 博士手里现在有 NN种细胞,编号从 1-N1−N,一个第 ii种细胞经过 11 秒钟可以分裂为S_iSi​个同种细胞(S_iSi​为正整数)。现在

P1073 [NOIP2009 提高组] 最优贸易 题解 分层图最短路

题目链接:https://www.luogu.com.cn/problem/P1073 解题思路: 将每个点 \(u\),拆成三层: 第 \(0\) 层:\((u, 0)\); 第 \(1\) 层:\((u, 1)\); 第 \(2\) 层:\((u, 2)\)。 各层之间依次建图。 然后对于任意点 \(u\),设点 \(u\) 的权值为 \(a_u\),则: 从 \((u,0)\) 连 \((u,1)\) 一条权值为 \(a

【NOIP2009】【codevs1174】靶形数独

problem solution codes //(如果你玩数独会怎么填呢)......启发式:把能确定的填上 #include<iostream> using namespace std; const int score[10][10]={ {0,0,0,0,0,0,0,0,0,0}, {0,6,6,6,6,6,6,6,6,6}, {0,6,7,7,7,7,7,7,7,6}, {0,6,7,8,8,8,8,8,7,6}, {0

基础数学问题选讲

对应luogu题单 1. [luoguP2822] [NOIP2016提高组] 组合数问题 2. [luoguP2789] 直线交点数 3. [luoguP2638] 安全系统 4. [luoguP1835] 素数密度 5. [luoguP1027] [NOIP2009提高组] Hankson的趣味题 6. [luoguP1069] [NOIP2009普及组] 细胞分裂 7. [luoguP3601] 签到题 8. [luoguP

洛谷 [NOIP2009 普及组] 道路游戏(dp)

传送门 解题思路 dp[i][j][k]表示从第i秒开始走走j秒从k工厂开始走的收益 maxx[i][j]表示从第i秒开始走j秒的最大收益。 则转移方程为: dp[i][j][k]=dp[i+1][j-1][(k+1)%n]+value[k][i]; maxx[i][j]=max(dp[i][j][k]-cost[k]); 其中i这一维可以滚动数组优化掉。 做完上述操作后,令

P1069 [NOIP2009 普及组] 细胞分裂

一、预备知识:整数除法向上取整 在\(c++\)上,默认的除法是整数除法向下取整,那有些场景中我们需要整数除法向上取整,办法是什么呢?(这里不说证明的办法,直接给结论) $\huge \lceil \frac{n}{m} \rceil = \lfloor \frac{n-1}{m} \rfloor +1 \ (n>0,m>0) $ 有需要关心证明的看这里。 给出几

题解[NOIP2009 普及组] 道路游戏

感觉是一道很好的单调队列优化DP 首先 \(O(n^3)\) 的朴素DP很好想 令 \(f_i\) 表示前 \(i\) 获得金币的最大值,不难的出状态转移方程 \[f_i=\max\limits_{1\le j\le p}(f_{i-k}-cost_{i-k}+val_{i-k->i}) \]\(val\) 的求法可以通过维护一个对角线上的前缀和,我们先将道路的权值转

P1070 [NOIP2009 普及组] 道路游戏

道路游戏 给定一个长度为 \(n\) 的环,每条边每个时刻都有对应的价值,经过即得到。 每个时刻如果没有在运动,就可以任意选择起点和持续运动时间,每次运动将移动一条边的长度。 对于选择的起点 \(i\) 需要减去 \(a_i\) 的价值,\(a_i\) 不随时间变化改变。 求最终价值的最大值,有可能为负

P1072 [NOIP2009 提高组] Hankson 的趣味题

Rose \(O(\sqrt n)\)也是可以接受的对吧 化简式子得\(gcd(\frac{x}{a_1},\frac{a_o}{a_1})=1\)和\(gcd(\frac{b_1}{x},\frac{b_1}{b_0})=1\) 然后枚举\(b_1\)的因子就可以了 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using nam

管道取珠[NOIP2009]

题目链接:https://www.luogu.com.cn/problem/P1758 对于\(\sum a_{i}^{2}\)的理解: 假定有两个人(记作甲和乙)在同时进行取珠子的操作,并且两个人取出来的珠子的序列完全相同,那么他们两个人的同步操作方案数即为所求。 下面用动态规划解决这个问题: 1.状态表示: \(f(i,j,k,l)\)代表甲在上

管道取珠[NOIP2009]

题目链接:https://www.luogu.com.cn/problem/P1758 对于的理解: 假定有两个人(记作甲和乙)在同时进行取珠子的操作,并且两个人取出来的珠子的序列完全相同,那么他们两个人的同步操作方案数即为所求。 下面用动态规划解决这个问题: 状态表示: 代表甲在上管道已经取出个,在下管道已经取出个

P1074 [NOIP2009 提高组] 靶形数独

#include<bits/stdc++.h> using namespace std; const int N=10; int a[N][N],ans[N][N],vis[3][N][N],b[82],maxn,flag; struct Row; int h,zero_cnt; }row[N];//排序规则:按照行的0的个数从小到大 int cmp(Row row1,Row row2){ return row1.zero_cnt<row2.zero_cnt; }//获取x,y

P1072 [NOIP2009 提高组] Hankson 的趣味题

Description 给定 n ( n ≤ 2 × 1 0

CQNK图论 2【NOIP2009】最优贸易

【问题描述】   C国有n个大城市和m条道路,每条道路连接这n个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这m条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为1条。   C国幅员辽阔,各地的资源分布情况各不相

【NOIP2009】最优贸易

题目链接:https://www.luogu.com.cn/problem/P1073 题目大意:给定一张有向图 , 其中每个点有一个权值 \(w\), 求出 \(1\) 到 \(n\) 的所有路径中 \(w_i - w_j\) ( \(i\) , \(j\) 为同一条路径上的两个节点 , 且 \(i\) 比 \(j\) 后遍历到 )​ 的最大值 solution 算法一: 设从 1 到

【NOIP2009提高组】最优贸易

Description   C 国有n 个大城市和m 条道路,每条道路连接这n 个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为1 条。  C 国幅员辽阔,各地的资源分布情况各不相

NOIP2009最优贸易(两遍SPFA/tarjan缩点+拓扑序dp)

传送门 本来想做一下tarjan缩点再拓扑序dp的题。 突然发现原来做过的这道可以用这种方法解决(原来是两遍SPFA)。 那么就合着一起总结一下吧! 原来一眼看到这道题,咦这不是水题嘛。 直接bfs一下找出能够达到1和n的点,然后这些点的max - min就好了呀! 然后愉快地敲好了代码,交上去全wa。

NOIP2009 最优贸易

题目描述 C国有n个大城市和m 条道路,每条道路连接这 n个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为 1条。 C国幅员辽阔,各地的资源分布情况各不相同,这就导