Codeforces 719C Efim and Strange Grade 贪心+模拟
2016-12-25 17:02
423 查看
点击打开链接
题意:给定n,m分别代表字符串长度和可操作次数,接下来给出长度为n的字符串代表原始成绩,要求在m次内得到可以对这个成绩也就是实数的满足四舍五入的最大数,可以不使用完m次机会,并且整数部分只能进位一次
思路:找到离小数点最近的s[i]>='5'进位(如果从pos从后面开始效果是一样的,还浪费操作次数),模拟进位即可
例如(1.2456 ->1.25) (1.2456->1.246->1.25)
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+20;
char s
;
int main()
{
int n,t;
while(cin>>n>>t)
{
ans.clear();
scanf("%s",s+1);
bool flag=false;
int pos=-1,i;
for(i=1;i<=n;i++)
{
if(flag==false&&s[i]=='.')
{
flag=true;
}
if(flag&&s[i]>='5')
{
pos=i;//找到离小数点最近的5进位
break;
}
if(i==n)
break;//3 9.2
}
flag=false;
if(pos!=-1)
{
for(;i>=1&&t;i--,t--)
{
if(s[i]>='5')
{
s[i]='0';
if(s[i-1]=='.')
{
i--;
i--;
flag=true;
break;//
}
s[i-1]+=1;
}
else
break;//离.最近的之前都没有>=5的,退出即可
}
}
int p=i;
if(flag)
{
//整数部分进位
for(;i>=1;i--)
{
if(s[i]=='9'&& i==1)
{
printf("1");
s[i]='0';
break;
}
else if(s[i]=='9')
{
s[i]='0';
}
else
{
s[i]+=1;//只进位一次
break;
}
}
}
for(int i=1;i<=p;i++)
cout<<s[i];
cout<<endl;
}
return 0;
}
题意:给定n,m分别代表字符串长度和可操作次数,接下来给出长度为n的字符串代表原始成绩,要求在m次内得到可以对这个成绩也就是实数的满足四舍五入的最大数,可以不使用完m次机会,并且整数部分只能进位一次
思路:找到离小数点最近的s[i]>='5'进位(如果从pos从后面开始效果是一样的,还浪费操作次数),模拟进位即可
例如(1.2456 ->1.25) (1.2456->1.246->1.25)
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+20;
char s
;
int main()
{
int n,t;
while(cin>>n>>t)
{
ans.clear();
scanf("%s",s+1);
bool flag=false;
int pos=-1,i;
for(i=1;i<=n;i++)
{
if(flag==false&&s[i]=='.')
{
flag=true;
}
if(flag&&s[i]>='5')
{
pos=i;//找到离小数点最近的5进位
break;
}
if(i==n)
break;//3 9.2
}
flag=false;
if(pos!=-1)
{
for(;i>=1&&t;i--,t--)
{
if(s[i]>='5')
{
s[i]='0';
if(s[i-1]=='.')
{
i--;
i--;
flag=true;
break;//
}
s[i-1]+=1;
}
else
break;//离.最近的之前都没有>=5的,退出即可
}
}
int p=i;
if(flag)
{
//整数部分进位
for(;i>=1;i--)
{
if(s[i]=='9'&& i==1)
{
printf("1");
s[i]='0';
break;
}
else if(s[i]=='9')
{
s[i]='0';
}
else
{
s[i]+=1;//只进位一次
break;
}
}
}
for(int i=1;i<=p;i++)
cout<<s[i];
cout<<endl;
}
return 0;
}
相关文章推荐
- Codeforces 719C - Efim and Strange Grade (模拟
- [codeforces] C - Efim and Strange Grade 模拟+贪心
- Codeforces 719C Efim and Strange Grade【贪心】
- [codeforces]A. Efim and Strange Grade——贪心+字符串处理
- codeforces 719 C. Efim and Strange Grade(模拟)
- codeforces 373 A - Efim and Strange Grade(算数模拟)
- Codeforces Round #373 (Div. 2) C. Efim and Strange Grade(贪心+模拟,t次进位之后的数是什么)
- codeforces 719 C Efim and Strange Grade (模拟)
- Codeforces Round #373 (Div. 2) C. Efim and Strange Grade —— 贪心 + 字符串处理
- [Codeforces #373 (Div. 2) C. Efim and Strange Grade] 模拟
- Codeforces 718A A. Efim and Strange Grade
- Codeforces Round #373 (Div. 1)A. Efim and Strange Grade【恶心模拟】
- Codeforces 508C - Anya and Ghosts (模拟 + 贪心)
- codeforces 719C (复杂模拟-四舍五入-贪心)
- 【22.17%】【codeforces718B】 Efim and Strange Grade
- Codeforces Round #373 (Div. 2) C: Efim and Strange Grade
- Codeforces Good Bye 2017 908F - New Year and Rainbow Roads 贪心+模拟
- 【喵 - 20160924】H - Efim and Strange Grade
- CodeForces 731B-Coupons and Discounts(贪心 模拟)
- codeforces--C - Anya and Ghosts(贪心+模拟)