POJ 3617 Best Cow Line ||POJ 3069 Saruman's Army贪心
带来两题贪心算法的题。
1.给定长度为N的字符串S,要构造一个长度为N的字符串T。起初,T是一个空串,随后反复进行下面两个操作:1.从S的头部删除一个字符,加到T的尾部。2.从S的尾部删除一个字符,加到T的尾部。求你任意采取这两个步骤后能得到的最小字符串T
2.直线上有N个点,点i的位置是xi,这N个点中选择若干个做上标记,对于每个点,在他们距离为R的区域内必须带有标记点,求在满足这个条件的情况下,所需要标记点的最少个数。
1.POJ 3617 Best Cow Line
http://poj.org/problem?id=3617
题目大意:给定长度为N的字符串S,要构造一个长度为N的字符串T。起初,T是一个空串,随后反复进行下面两个操作:1.从S的头部删除一个字符,加到T的尾部。2.从S的尾部删除一个字符,加到T的尾部。求你任意采取这两个步骤后能得到的最小字符串T
思路:
很容易想到贪心算法,不断的取S的开头和末尾中较小的一个字符放到T的末尾。
很快写完,WA。
因为相等的情况你没有讨论!我们总希望下一个拿到的也是最小的,故要继续比较下一个。
改了然后恶心的PE,80个字母要一个换行。
#include<cstdio>
#include<cstring>
#include<iostream>
const int MAXN=2000+10;
char a[MAXN];
int main()
{
int n;
char temp;
while(~scanf("%d",&n))
{
getchar();
for(int i=0;i<n;i++)
scanf("%c%c",&a[i],&temp);
int cnt=0;
for(int i=0;i<n;)
{
if(a[i]<a[n-1])
printf("%c",a[i++]);
else if(a[i]>a[n-1])
{
printf("%c",a[n-1]);
n--;
}
else //a[i]==a[n-1]
{
int L=i+1,R=n-2;
while(L<R && a[L]==a[R])
{
L++;R--;
}
if(a[L]<a[R])
printf("%c",a[i++]);
else
{
printf("%c",a[n-1]);
n--;
}
}
if(++cnt==80)
{
printf("\n");
cnt=0;
}
}
printf("\n");
}
return 0;
}
2.POJ 3069 Saruman's Army
http://poj.org/problem?id=3069
题目大意:
直线上有N个点,点i的位置是xi,这N个点中选择若干个做上标记,对于每个点,在他们距离为R的区域内必须带有标记点,求在满足这个条件的情况下,所需要标记点的最少个数。
思路:
贪心,每次尽量选择向右边的。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=1000+10;
int a[MAXN];
int main()
{
int n,r;
while(scanf("%d%d",&r,&n),n!=-1,r!=-1)
{
for(int i=0;i<n;i++)
scanf("%d",&a[i]); sort(a,a+n);
int ans=0,i=0;
while(i<n)
{
int x=a[i++];
while(i<n && x+r>=a[i]) i++;
int p=a[i-1];
while(i<n && p+r>=a[i]) i++;
ans++;
}
printf("%d\n",ans);
}
return 0;
}
POJ 3617 Best Cow Line ||POJ 3069 Saruman's Army贪心的更多相关文章
- POJ 3617 Best Cow Line(最佳奶牛队伍)
POJ 3617 Best Cow Line Time Limit: 1000MS Memory Limit: 65536K [Description] [题目描述] FJ is about to t ...
- POJ 3617 Best Cow Line (贪心)
Best Cow Line Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16104 Accepted: 4 ...
- poj 3617 Best Cow Line (字符串反转贪心算法)
Best Cow Line Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9284 Accepted: 2826 Des ...
- POJ 3617 Best Cow Line 贪心算法
Best Cow Line Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26670 Accepted: 7226 De ...
- poj 3617 Best Cow Line 贪心模拟
Best Cow Line Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 42701 Accepted: 10911 D ...
- POJ 3069 Saruman's Army(贪心)
Saruman's Army Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Sub ...
- poj 3069 Saruman's Army 贪心模拟
Saruman's Army Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18794 Accepted: 9222 D ...
- poj 3617 Best Cow Line
http://poj.org/problem;jsessionid=F0726AFA441F19BA381A2C946BA81F07?id=3617 Description FJ is about t ...
- poj 3617 Best Cow Line 解题报告
题目链接:http://poj.org/problem?id=3617 题目意思:给出一条长度为n的字符串S,目标是要构造一条字典序尽量小,长度为n的字符串T.构造的规则是,如果S的头部的字母 < ...
随机推荐
- Spring Cloud学习笔记【二】Eureka 服务提供者/服务消费者(ribbon)
Ribbon 是 Netflix 发布的开源项目,主要功能是为 REST 客户端实现负载均衡.它主要包括六个组件: ServerList,负载均衡使用的服务器列表.这个列表会缓存在负载均衡器中,并定期 ...
- 使用virtualenv搭建python虚拟开发环境
在使用python做开发时,如果多人需要在同一台机器上工作,或者机器环境经常变化时, 添加或删除一些python包很可能会影响到你自己的开发环境. 因此,通过virtualenv工具可以创建一个完全属 ...
- [UnityUI]循环滑动列表
效果图: 使用的是UGUI和DOTween 当中比較关键的是循环滑动和层次排序: 1.循环滑动:这里先如果显示五张图片.分别标记为0,1,2,3,4,那么当向左滑动时,序列就变为1,2,3,4,0,这 ...
- jQuery07源码 (3803 , 4299) attr() prop() val() addClass()等 : 对元素属性的操作
var nodeHook, boolHook, rclass = /[\t\r\n\f]/g, rreturn = /\r/g, rfocusable = /^(?:input|select|text ...
- js--11对象的创建方式
<html> <head> <title>Object</title> </head> <body> <script ty ...
- [BZOJ3526][Poi2014]Card 线段树
链接 题意:有一些卡牌,正反各有一个数,你可以任意翻转,每次操作会将两张卡牌的位置调换,你需要在每次操作后回答以现在的卡牌顺序能否通过反转形成一个单调不降的序列 题解 线段树上维护 \(f[o][0/ ...
- 圆形头像CircleImageView和Cardview使用
效果: 圆形头像在我们的日常使用的app中很常见,因为圆形的头像比较美观. 使用圆形图片的方法可能有我们直接将图片裁剪成圆形再在app中使用, 还有就是使用自定义View对我们设置的任何图片自动裁剪成 ...
- Java 关于运算结果
今天发现一个自己的一个知识误区 原来有些自己以为会发生异常的运算,并没有异常发生,只要运算符两端存在至少一个浮点数 比如: public class Demo { /** * @param args ...
- How to install Armbian on Orange Pi Plus 2e
bian on Orange Pi Plus 2e How to install Armbian on Orange Pi Plus 2e Armbian on the microSD You jus ...
- logout命令用于退出当前登录的Shell
logout命令用于退出当前登录的Shell