hdu 4550 贪婪 思考题 权
http://acm.hdu.edu.cn/showproblem.php?pid=4550
想了挺久,然后各种分类 最终AC,假设是现场,对自己没信心的话,预计还是要WA,,,,,,然后搜题解,发现人家都觉得是简单题,看来我还是太弱了,牡丹江没有做出来K看来还是自己贪心和思维有问题
d是一个Deque
最朴素的算法是,假设当前的数<=d.front(),那么插入队列的前面,否则插入队列后面,可是有零所以须要单独处理,还是自己多举例找规律
我的策略:
1、记录0的个数zero,最小非零的数的个数cnt
2、推断的策略见代码
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <deque>
#include <vector>
#include <queue>
using namespace std;
#define IN(s) freopen(s,"r",stdin)
const int MAXN = 100+5;
char s[MAXN];
int a[MAXN],len; void solve()
{
deque<int>d;
int _min=1000,zero=0,cnt=0;
for(int i=0;i<len;i++)
if(a[i]) _min=min(_min,a[i]);
else zero++;
for(int i=0;i<len;i++)
if(a[i] == _min)
cnt++;
d.push_front(a[0]);//
if(a[0] == _min)cnt--;
if(a[0] == 0)zero--;
for(int i=1;i<len;i++)
{
if(a[i]){
if(d.front())
{
if(a[i]==_min)cnt--;
if(a[i]<=d.front())d.push_front(a[i]);
else d.push_back(a[i]);
}
else//首位是0
{
if(cnt==1 && a[i]==_min)
{
cnt--;
d.push_front(a[i]);
continue;
}
//后面不止一个最小数
if(a[i]==_min)cnt--;
d.push_back(a[i]);
}
continue;
}
//a[i]是0的情况
zero--;
if(cnt)//后面还有最小值
d.push_front(a[i]);
else
d.push_back(a[i]);
}
for(int i=0;i<d.size();i++)
printf("%d",d[i]);
putchar('\n');
} int main()
{
//IN("hdu4550.txt");
int ncase;
scanf("%d",&ncase);
while(ncase--)
{
scanf("%s",s);
len=strlen(s);
for(int i=0;i<len;i++)
a[i]=s[i]-'0';
solve();
}
return 0;
}
hdu 4550 贪婪 思考题 权的更多相关文章
- HDU(1853),最小权匹配,KM
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1853 Cyclic Tour Time Limit: 1000/1000 MS (Java/Other ...
- hdu 4550 卡片游戏 贪心
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4550 题意:有n(n <= 100)个0~9之间的卡片,从左往右将卡片放到之前的卡片最左边或者最 ...
- hdu 4550 卡片游戏
http://acm.hdu.edu.cn/showproblem.php?pid=4550 贪心 #include <cstdio> #include <cstring> # ...
- HDU 3047 带权并查集 入门题
Zjnu Stadium 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3047 Problem Description In 12th Zhejian ...
- 2019年CCPC网络赛 HDU 6703 array【权值线段树】
题目大意:给出一个n个元素的数组A,A中所有元素都是不重复的[1,n].有两种操作:1.将pos位置的元素+1e72.查询不属于[1,r]中的最小的>=k的值.强制在线. 题解因为数组中的值唯一 ...
- HDU 3491 最小点权割集
题意:有n个城市,m条双向边,有一群小偷从s前往t偷东西,警察叔叔们想要逮捕小偷们,现在告诉你在每座城市需要多少警察才能抓住这个城市的小偷,为什么说这个城市,因为小偷们会分开跑:然后题目还说不能在s和 ...
- HDU 1533 二分图最小权匹配 Going Home
带权二分图匹配,把距离当做权值,因为是最小匹配,所以把距离的相反数当做权值求最大匹配. 最后再把答案取一下反即可. #include <iostream> #include <cst ...
- HDU - 1317 ~ SPFA正权回路的判断
题意:有最多一百个房间,房间之间连通,到达另一个房间会消耗能量值或者增加能量值,求是否能从一号房间到达n号房间. 看数据,有定5个房间,下面有5行,第 iii 行代表 iii 号 房间的信息,第一个数 ...
- hdu 4550
c: #include<stdio.h> #include<string.h> #define N 300 int f[N]; char s[N]; int main() { ...
随机推荐
- 全球在一个 level 上思考的价值观和想法是一样的(转)
近日,福布斯中文版总编辑周建工对话马云,谈到腾讯频繁的大笔收购,马云点评称腾讯收购的所有的案子,老百性都看得懂,这就错了.战略就像买股票一样,如果老太太都开始买股票了,一定有问题. 以下是对话内容,转 ...
- 基于visual Studio2013解决C语言竞赛题之0506选择排序
题目
- MYSQL设计优化
本文将从各方面介绍优化mysql设计的一些方式. 1.优化sql语句 (1)定位须要优化的sql语句 1)show status统计SQL语句频率 对Myisam和Innodb存储引擎都计数的參数: ...
- 使用Jquery+EasyUI 进行框架项目开发案例解说之二---用户管理源代码分享
使用Jquery+EasyUI 进行框架项目开发案例解说之二 用户管理源代码分享 在上一篇文章<使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享> ...
- PHP - mysql使用参数数据
"SELECT dg_id FROM dg_user WHERE dg_username = '{$clean['username']}' LIMIT 1","该用户已经 ...
- C#反射 入门学习 01
前言 获取方法的相关信息的两种形式 反射是一种允许用户获得类信息的C#功能,Type对象映射它代表的底层对象: 在.Net 中, 一旦获得了Type对象,就可以使用GetMethods()方法 ...
- jsp页面中格式化为小数点两位
<td align="center"> <% String avgnum = ""; if(request.getAttribute(&qu ...
- 浅尝key-value数据库(一)——一览NoSQL
浅尝key-value数据库(一)——一览NoSQL 最近由于一个项目的关系,研究了一下key-value数据库这个最近很火的概念.本系列从项目需求的角度分析并测试了几个key-value数据库的性能 ...
- FileStream -- 复制文件
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- iOS - 单例传值 (一)
点击打开链接 iOS - 单例传值 (二) 单例只会对某个类实例化一次/单例类,对单例这个类实例化一次有且仅有一个对象 你单例初始化,只能初始化一次,然后你指向的对象,其实都是指向一个内存地址, ...