GCJ 2009 Round2 A 构造贪心策略
来源:互联网 发布:java开源crm系统 编辑:程序博客网 时间:2024/05/20 09:22
题意:
给你一个
思路:
首先这个行的利用价值就是最右边的1位置是多少,直接把行抽象为最右边1的数字即可。注意:这里WA了一发,没有注意数字要初始化为0。无论多么简单,写完之后检查代码且保证逻辑没有一丝错误十分重要!
这个题主要的是构造贪心的法则:题中只需要满足第一行的数字小于1,第二行的数字小于2,…..,第n行的数字小于n。那么就从第一行开始,一行一行的来看,注意若当前行的数组小于等于行数就,到下一行,如果不满足,就需要在底下行中挑选距离该行最近,且满足条件的数字交换上来。仔细思考这个策略,会发现,它很好的做到了不会出现矛盾的交换,和每步最优思想。
Code:
#include <iostream>#include <cstdio>#include <string>#include <algorithm>using namespace std;int main(void) { //freopen("A-small-practice.in", "r", stdin); freopen("A-large-practice.in", "r", stdin); freopen("a.txt", "w", stdout); int t, n, a[50]; scanf("%d", &t); for (int l = 1; l <= t; l++) { scanf("%d", &n); for (int i = 0; i < n ; i++) { a[i + 1] = 0; string s; cin >> s; for (int j = n - 1; j >= 0; j--) { if (s[j] != '0') { a[i + 1] = j + 1; break; } } } int ans = 0; for (int i = 1; i <= n; i++) { if (a[i] <= i) continue; for (int j = i + 1; j <= n; j++) { if (a[j] <= i) { for (int k = j; k > i; k--) { swap(a[k], a[k - 1]); ans++; } break; } } } printf("Case #%d: %d\n", l, ans); } return 0;}
0 0
- GCJ 2009 Round2 A 构造贪心策略
- GCJ 2009 Round2 A (Crazy Rows)
- GCJ--Crazy Rows (2009 Round2 A)
- GCJ 2009 Round2 Problem A. Crazy Rows
- GCJ 2009 Round2 A Crazy Rows
- 每天水一水 Crazy Rows (2009 Round2 A) GCJ
- crazy Rows 2009 Round2 A
- Code Jam 2009 Round2 Problem A. Crazy Rows —— 贪心
- GCJ 2008 Round 1A A - Minimum Scalar Product (贪心)
- GCJ 2008 Round 1A A 排序贪心
- GCJ Round2 B题 Deterministic方法实现
- Google Code Jam 2009 Round2 A (脑洞题)
- Crazy Rows (GoogleCode Jam 2009 Round2 A)
- Minimum Scalar Product(GCJ 2008 Round1A A)数学问题+贪心
- GCJ 2015 1A
- gcj 2017 A
- GCJ Crazy Rows 水题-贪心
- GCJ 2009 Round 2 Problem A. Crazy Rows
- java多态简单例子 one
- 从Action中传值到JSP页面的方法
- BootStray CSS代码
- Python进阶之装饰器@decorator
- 数据库设计--数据流图(DFD)
- GCJ 2009 Round2 A 构造贪心策略
- (二)mybatis 使用接口的方式编程
- mysql5.6新特性总结
- 运行hadoop报错
- (1) Servlet - 1
- AVAudioRecorder 录音
- DirectUI界面编程(六)实现右键弹出菜单
- Java Socket编程
- Git版本库添加空目录