foj 2197 最小花费
2015-05-04 15:42
309 查看
Problem 2197 最小花费
Accept: 32 Submit: 62
给一个长度为n(n <= 10^5)的“01”串,你可以任意交换一个为0的位和一个为1的位,若这两位相邻,花费为X,否则花费为Y。求通过若干次交换后将串中的“1”全部变换到“0”前面的最小花费。
第一行一个整数T(1 <= T <= 10),表示测试数据的组数。接下来3*T行,每组数据三行,第一行为整数X(1 <= X <= 10^3),第二行为整数Y(X <= Y <= 10^3),第三行是“01”串。
最小花费。
2121100120011
03
福州大学第十二届程序设计竞赛
题意:如题。
做法:因为移动的步数是固定,所以每次交换最前面的0和1,然后其位置记为a,b,取min((b-a*)*x,y)即可,然后把这些值累加就是ans。
Accept: 32 Submit: 62
Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
给一个长度为n(n <= 10^5)的“01”串,你可以任意交换一个为0的位和一个为1的位,若这两位相邻,花费为X,否则花费为Y。求通过若干次交换后将串中的“1”全部变换到“0”前面的最小花费。
Input
第一行一个整数T(1 <= T <= 10),表示测试数据的组数。接下来3*T行,每组数据三行,第一行为整数X(1 <= X <= 10^3),第二行为整数Y(X <= Y <= 10^3),第三行是“01”串。
Output
最小花费。
Sample Input
2121100120011
Sample Output
03
Source
福州大学第十二届程序设计竞赛题意:如题。
做法:因为移动的步数是固定,所以每次交换最前面的0和1,然后其位置记为a,b,取min((b-a*)*x,y)即可,然后把这些值累加就是ans。
#include <iostream> #include <cstdio> #include <climits> #include <cstring> #include <cstdlib> #include <cmath> #include <vector> #include <queue> #include <algorithm> #define esp 1e-6 #define inf 0x0f0f0f0f #define LL long long using namespace std; int main() { int i,j,k; char s[100005]; int t,x,y,n; int ans; int num[100005]; scanf("%d",&t); while(t--) { ans=0; scanf("%d%d",&x,&y); getchar(); gets(s); n=strlen(s); k=0; for(i=n-1;i>=0;i--) { if(s[i]=='1') num[k++]=i; } for(i=0,k=0;i<n;i++) { if(s[i]=='0') { int t1; if(num[k]>i) { t1=(num[k++]-i)*x; ans+=min(t1,y); } } } printf("%d\n",ans); } }
相关文章推荐
- FOJ FZU 2197 最小花费【贪心】
- [思路题+贪心] fzu oj 2197 最小花费
- FZU 2197 最小花费(思维题目)
- FZU Problem 2197 最小花费 简单贪心>
- FZU 2197 最小花费(贪心)
- FZU 2197 最小花费 (模拟)
- [codevs1557/tyvj1031/USACO OTC09 9TH]热浪[tyvj3187]最小花费 图论算法之dijkstra 学习笔记
- 洛谷 1576 最小花费
- 7-25 畅通工程之局部最小花费问题(35 分)(最小生成树问题)
- prime算法-畅通工程之局部最小花费问题.cpp
- 最小花费(图论算法)
- FOJ--英语考试(最小生成树)
- 洛谷 P1756 最小花费
- 5-3 畅通工程之局部最小花费问题 (35分)
- uvalive4840(n*n方阵的最小花费)
- 九度OJ 1086 最小花费--动态规划
- 7-13(图) 畅通工程之局部最小花费问题(35 分) 35分代码
- hdu 4003 求用k个机器人遍历一棵树的所有节点所需的最小花费
- 7-1 畅通工程之局部最小花费问题(35 分)
- 7-1 畅通工程之局部最小花费问题(35 分)