首页 > TAG信息列表 > noip2010
P1190 [NOIP2010 普及组] 接水问题(嵌套循环——贪心算法)
学校里有一个水房,水房里一共装有mm个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为11。 现在有nn名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从 11到nn编号,ii号同学的接水量为 w_iwi。接水开始时,11到mm 号同学各占一个水龙头,并同时打开水龙头接【数据结构1-1】线性表 P1540 [NOIP2010 提高组] 机器翻译
题解 就是很简单的队列问题,没什么好说的 AC代码 #include<bits/stdc++.h> using namespace std; int flag[1005]={0}; int main(){ ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n,m,k; int ans=0; cin>>m>>n; queue<int> q; forNOIP2010普及组真题——数字统计
统计这个范围内的数字,自然用for,不用说。但问题是如何获取各个数位上的数,我是这么做的。 //Author:PanDaoxi #include <iostream> using namespace std; int main(){ int n,m,sum=0,x=0,y=0; cin>>n>>m; for(int i=n;i<=m;i++){ y=i; while(y>1){ x=y%10; y/=[NOIP2010提高组]乌龟棋
显然 dp,考虑如何设计状态,即如何描述当前“情况”。 因为要知道转移几步,必须记录当前的手牌数。是否还要记录位置?当然不用,因为已知当前手牌数可以直接算出当前位置。这里我们设 \(dp_{a,b,c,d}\) 表示当前使用了 \(a\) 张 \(1\) 型牌,\(b\) 张 \(2\) 型牌,\(c\) 张 \(3\) 型牌,\(d\)P1541 [NOIP2010 提高组] 乌龟棋
单向前进,每个点有权值,要求路径权值和最大。这不是显然的DP。但是这题对前进的步伐有四种,每种还有次数限制。。这就不好搞。朴素点的就是开四维DP。然后枚举,从前往后枚举。再看一下数据,还真的是。。 #include<bits/stdc++.h> #define rep(i,j,k) for(register int i(j);i<=k;++i)luogu P1525 [NOIP2010 提高组] 关押罪犯 [二分图判定]
P1525 [NOIP2010 提高组] 关押罪犯 link 思路: 首先我们二分枚举最大的影响力(由于是求最小的最大,满足二分的性质,很容易想到二分),那么很显然,影响力大于我们所枚举的midd的罪犯就必须拆开,那么现在我们为他们之间连出一条边。每条边都连上之后,我们得到了几个连通图(注意是几个,不【NOIP2010普及组】三国游戏题解
题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做《三国》的游戏。 在游戏中, 小涵和计算机各执一方, 组建各自的军队进行对战。 游戏中共有 N位武将 (N 为偶数且不小于 4) ,任意两个武将之间有一个“默契值” ,表示若此两位武将作为一对组合 作战时,该组合的威力有多大。游戏开始前P1199 [NOIP2010 普及组] 三国游戏
P1199 [NOIP2010 普及组] 三国游戏 题意: 有n个武将,每两个武将之间都有默契值,你和电脑玩游戏,轮流选一个。轮到计算机挑选时,它会尝试将对手军队中的每个武将与当前每个自由武将进行一一配对,找出所有配对中默契值最高的那对武将组合,并将该组合中的自由武将选入自己的军队。 小涵[题解|总结] 背包问题 [NOIP2010]乌龟棋
https://ac.nowcoder.com/acm/problem/16590 目录 思路code: 思路 分析一下数据范围 暴力? 160! 不行 重新理清思路 每次只能拿一张牌,每张牌都有限制 背包?妥妥的背包,分组背包?每组多个,一组拿一个,只能拿一组 好就是这样 code: #include <bits/stdc++.h> using namespaC++9018:1303——数字统计[NOIP2010]
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1303 题目讲解: 这道题非常简单,不用一位一位算,直接套用cstring库中的sprintf函数,将数字转换为字符数组,使用方法如下: sprintf(数组名称,"数字类型",字符数组大小); #include <iostream> #include <cstdio> #include <P1525 [NOIP2010 提高组] 关押罪犯
原题链接 考察:二分+二分图判定 or 带权并查集+贪心 思路一: 二分+二分图判定.由题目可知我们要求最大矛盾的最小值.最小值可以通过二分枚举,那么关键是如何check.首先容易想到>最小值的两个人一定不能在同一集合.需要将它们分别放在不同的监狱.那么问题来了:这P1541 [NOIP2010 提高组] 乌龟棋 解题报告
原题链接 考察:线性dp 思路: 一开始的思路是定义结构体dp数组,但是会出现到达同一点剩余卡片种类不同的情况,只要卡片种类不同就会获得不同的分数,所以必须记录剩余卡片种类. 考虑到M很小,cnt(每种卡片)<=40.可以考虑开数组f[i][j][k][p][q] 表示到i点时剩[NOIP2010 普及组] 数字统计
题目链接 题目描述 请统计某个给定范围[L, R]的所有整数中,数字 2 出现的次数。 比如给定范围[2, 22],数字 2 在数 2中出现了 1 次,在数 12 中出现 1 次,在数 20 中出现 1次,在数 21 中出现 1 次,在数 22 中出现 2次,所以数字 2 在该范围内一共出现了 6次。 输入格式 2个正整数 L 和LOJ#2594. 「NOIP2010」关押罪犯
咕咕咕 题目链接 并查集: #include<iostream> #include<cstring> #include<algorithm> #include<cstdio> using namespace std; const int N=20000,M=100000; struct Edge { int u,v,w; Edge() {} bool operator < (const Edge &x) const {return w&g数字统计 noip2010普及组第一题(奥赛一本通 P70 6)
请统计某个给定范围[l,r]的所有整数中,数字2出现的次数 比如给定范围[2,22],数字2在数2中出现了一次,12中出现一次,20中出现一次,21中出现一次,22中出现2次,所以结果应为6 #include <bits/stdc++.h> using namespace std; int main() { int i,a,j,l,r,s=0; scanf("%d%d",&l,&r);[每日一题]:[NOIP2010]关押罪犯 -- 并查集
题目: 题目链接: https://vjudge.net/contest/369847#problem/A 考察点: 并查集的变种、并查集补集 并查集补集是个什么东东: 相信大家听到补集这个词语应该不会感到陌生,但是在这里并查集补集的概念有一丢丢不同。 这里通俗一点说就是一种相反的关系。比如 A 和 B 都有 10 元「NOIP2010」引水入城
传送门 Luogu 解题思路 第一问很好做,只要总第一行的每一个点都跑一边dfs,判断最后一行是否有点标记不了即可。 考虑处理第二问。 其实这一问就是: 把第一行的点都看做是对最后一行一些点的覆盖,求最后一行那段区间的最小覆盖数。 我们可以发现这样一个事情: 每一个第一行的点在最后一$Noip2010/Luogu1525$ 关押罪犯 贪心
$Luogu$ $Sol$ 贪心.尽量把怨气值大的罪犯放到两个监狱,所以首先要按照怨气值从大到小排序.当扫描到两个罪犯已经被指定到同一个监狱时,就结束循环,这个怨气值就是答案.当然把怨气值大的两个罪犯放到两个监狱是不能乱放的,这样的反例非常好举.比如两对罪犯$a1,a2,b1,b2$,随便放P1046【NOIP2010-3】关押罪犯
时间限制 : 10000 MS 空间限制 : 65536 KB 问题描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇NOIP2010普及组 导弹拦截
导弹拦截 OJ地址: https://www.luogu.org/problemnew/show/P1158 http://codevs.cn/problem/1128/ 题目描述 Description 经过11 年的韬光养晦,某国研发出了一种新的导弹拦截系统,凡是与它的距离不超过其工作半径的导弹都能够被它成功拦截。当工作半径为0 时,则能够拦截与它位置