HDU - 6205 card card card (贪心)2017 ACM/ICPC Asia Regional Shenyang Online
2017-09-11 22:14
447 查看
昨天2017 ACM/ICPC沈阳网络赛的 1012
当时3分钟出思路,写完交上不对,,看不到什么错误,赛后知道 TLE,
但是 一样的代码,赛后交上就过了
简单说一下思路, d 数组记录花费,贪心从左往右 num += d [ i ] ,保证num 非
4000
负,sum 记录卡片数目(a [ i ] ),更新最大卡片数 ans
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cmath>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <ctype.h>
#include <vector>
#include <algorithm>
#include <sstream>
#define PI acos(-1.0)
#define in freopen("in.txt", "r", stdin)
#define out freopen("out.txt", "w", stdout)
using namespace std;
typedef long long ll;
const int maxn = 2000000 + 7;
ll INF = 0x3f3f3f3f3f3f3f3f;
int n;
int a[maxn];
int d[maxn];
int main() {
ios::sync_with_stdio(false);
while(cin >> n) {
for(int i = 0; i < n; ++i) {
cin >> a[i];
a[i+n] = a[i];
}
for(int i = 0; i < n; ++i) {
cin >> d[i];
d[i+n] = d[i] = a[i] - d[i];
}
int l_ = 0, id = 0;
int sum = 0, num = 0, ans= 0;
for(int i = 0; i < 2*n; ++i) {
num += d[i];
sum += a[i];
if(sum > ans) {
id = l_;
}
if(num < 0) {
l_ = i+1;
num = 0;
sum = 0;
}
if(i - l_ + 1 >= n) {
break;
}
if(l_ >= n) break;
}
cout << id << endl;
}
return 0;
}
当时3分钟出思路,写完交上不对,,看不到什么错误,赛后知道 TLE,
但是 一样的代码,赛后交上就过了
简单说一下思路, d 数组记录花费,贪心从左往右 num += d [ i ] ,保证num 非
4000
负,sum 记录卡片数目(a [ i ] ),更新最大卡片数 ans
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cmath>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <ctype.h>
#include <vector>
#include <algorithm>
#include <sstream>
#define PI acos(-1.0)
#define in freopen("in.txt", "r", stdin)
#define out freopen("out.txt", "w", stdout)
using namespace std;
typedef long long ll;
const int maxn = 2000000 + 7;
ll INF = 0x3f3f3f3f3f3f3f3f;
int n;
int a[maxn];
int d[maxn];
int main() {
ios::sync_with_stdio(false);
while(cin >> n) {
for(int i = 0; i < n; ++i) {
cin >> a[i];
a[i+n] = a[i];
}
for(int i = 0; i < n; ++i) {
cin >> d[i];
d[i+n] = d[i] = a[i] - d[i];
}
int l_ = 0, id = 0;
int sum = 0, num = 0, ans= 0;
for(int i = 0; i < 2*n; ++i) {
num += d[i];
sum += a[i];
if(sum > ans) {
id = l_;
}
if(num < 0) {
l_ = i+1;
num = 0;
sum = 0;
}
if(i - l_ + 1 >= n) {
break;
}
if(l_ >= n) break;
}
cout << id << endl;
}
return 0;
}
相关文章推荐
- HDU-2017 ACM/ICPC Asia Regional Shenyang Online-1012-card card card
- HDU-2017 ACM/ICPC Asia Regional Shenyang Online-1001-string string string
- 2017 ACM/ICPC Asia Regional Shenyang Online 1001(hdu 6194)
- 2017 ACM/ICPC Asia Regional Shenyang Online - card card card
- HDU 6194 String String String (后缀数组+线段树, 2017 ACM/ICPC Asia Regional Shenyang Online)
- 【2017 ACM/ICPC Asia Regional Shenyang Online 1002】hdu 6195 cable cable cable
- HDU 6201 transaction transaction transaction (Dijstra, 2017 ACM/ICPC Asia Regional Shenyang Online)
- HDU-2017 ACM/ICPC Asia Regional Shenyang Online-1002-cable cable cable
- HDU-2017 ACM/ICPC Asia Regional Shenyang Online-1005-number number number
- HDU 6199 gems gems gems (DP, 2017 ACM/ICPC Asia Regional Shenyang Online)
- HDU-2017 ACM/ICPC Asia Regional Shenyang Online-1008-transaction transaction transaction
- 【2017 ACM/ICPC Asia Regional Shenyang Online 1005】hdu 6198 number number number
- HDU-2017 ACM/ICPC Asia Regional Shenyang Online-1004-array array array
- HDU 6203 ping ping ping (LCA + 树状数组, 2017 ACM/ICPC Asia Regional Shenyang Online)
- 2017 ACM/ICPC Asia Regional Shenyang Online card card card
- 2017 ACM/ICPC Asia Regional Shenyang Online 1012 card
- 2017 ACM/ICPC Asia Regional Shenyang Online card
- HDU-2017 ACM/ICPC Asia Regional Shenyang Online-签到题
- 【2017 ACM/ICPC Asia Regional Qingdao Online 1008】hdu 6213 Chinese Zodiac
- 2016 ACM/ICPC Asia Regional Shenyang Online HDU 5895 Mathematician QSC