单挑养成计划【3】 AtCoder Grand Contest 003
2016-10-27 18:34
357 查看
B - Simplified mahjong
题意:有一组面值为1~N的牌,已知每种面值的个数,卡牌a,b可以组成一对(a, b)当且仅当|a面值 - b面值|<=1。问最多能组多少对。题解: 没什么好说的,贪心O(n)扫一遍就好。需要注意的是三张相邻面值的卡牌分别有1 2 1张,这种情况可以组成两对。贪心的姿势一定要选对。
1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <algorithm> 5 #include <iostream> 6 #include <vector> 7 #include <queue> 8 using namespace std; 9 typedef long long ll; 10 const int maxn = 2e5 + 5; 11 int n, q; 12 ll a, t[maxn], ans[maxn]; 13 vector<ll> v; 14 int main() { 15 scanf("%d %d",&n,&q); 16 v.push_back(n);//!!! 17 for (int i=0; i<q; i++) { 18 scanf("%lld",&a); 19 while (v.size() && v.back() >= a) 20 v.pop_back(); 21 v.push_back(a); 22 } 23 //for (int i=0; i<v.size(); i++) cout<<v[i]<<" "; 24 t[v.size() - 1] = 1; 25 for (int i=v.size()-1; i>=0; i--) { 26 ll k = v[i]; 27 //cout<<endl<<i<<" : \n"; 28 while (k > v[0]) { 29 int j = lower_bound(v.begin(), v.end(), k) - (v.begin() + 1); 30 t[j] += k / v[j] * t[i]; 31 //cout<<k<<" "<<j<<" : "<<v[j]<<" "<<t[j]<<" "<<t[i]<<endl; 32 k %= v[j]; 33 } 34 ans[k] += t[i]; 35 } 36 for (int i=n-1; i>=1; i--) ans[i] += ans[i+1]; 37 for (int i=1; i<=n; i++) 38 printf("%lld\n", ans[i]); 39 return 0; 40 }
View Code
F - Fraction of Fractal
我尽力了。。读不懂题。。。、、相关文章推荐
- 单挑养成计划【1】 AtCoder Grand Contest 004
- 单挑养成计划【2】 AtCoder Grand Contest 005
- AtCoder Grand Contest 003 E - Sequential operations on Sequence 乱搞
- AtCoder Grand Contest 003 D - Anticube
- AtCoder Grand Contest 003 D - Anticube 贪心
- AtCoder Grand Contest 074 F - Lotus Leaves
- AtCoder Grand Contest 019 E - Shuffle and Swap
- AtCoder Grand Contest 019 B: Reverse and Compare
- AtCoder Grand Contest 012 B
- AtCoder Grand Contest 023 F - 01 on Tree
- AtCoder Grand Contest 026 D - Histogram Coloring
- AtCoder Grand Contest 005【A栈模拟,B单调栈】
- AtCoder Grand Contest 016
- AtCoder Grand Contest 017-B - Moderate Differences
- AtCoder Grand Contest 010
- AtCoder Grand Contest 020 B - Ice Rink Game(贪心+计算机乘法)
- AtCoder Grand Contest 020 C - Median Sum (背包问题+bitset )
- AtCoder Grand Contest 015 D - A or...or B Problem 构造
- AtCoder Grand Contest 016 B - Colorful Hats 乱搞
- AtCoder Grand Contest 018 D - Tree and Hamilton Path 树的重心