HDU 6020 MG loves apple
来源:互联网 发布:游戏同步器软件 编辑:程序博客网 时间:2024/05/16 18:52
枚举每个非零点i为最高位,判断剩余的数中能不能删出符合 (0*a+1*b+2*c)%3==sum(剩余数之和)%3 && a+b+c==k-i 的情况
对于n==k+1的情况需要特判,只有一个0属于合法情况,虽然比赛的时候没过...拿这个hack了好多人
#include<bits/stdc++.h>#define pb push_back#define fr first#define sc secondusing namespace std;typedef long long ll;const int N = 1e5+5;char s[N];int f[3], t[3];bool check(int k) { if(t[1]%3+t[2]%3 > k) return 0; if(t[1]+t[2] <= k) return t[0]+t[1]+t[2]>=k?1:0; int tt = t[1]+t[2]-(t[1]+t[2]-k)/3*3; if(tt > k) tt -= 3; return tt+t[0]>=k?1:0;}int main() { int T; cin >> T; while(T--) { memset(f, 0, sizeof(f)); int n, k, bias = 0; bool flag = 0; scanf("%d%d%s", &n, &k, s); if(n-k == 1) { for(int i = 0; i < n; i++) { if((s[i]-'0')%3 == 0) { flag = 1; break; } } } for(int i = n-1; i>=0 && !flag; i--) { bias = (bias+s[i]-'0')%3; if(s[i] != '0') { if(i <= k) { int m = k-i; for(int b = 0; b < 3; b++) for(int c = 0; c < 3; c++) if((b+2*c)%3 == bias){ if(f[1]<b || f[2]<c) continue; t[1] = (f[1]-b)/3*3+b, t[2] = (f[2]-c)/3*3+c, t[0] = f[0]; if(check(m)) { flag = 1; break; } } } } f[(s[i]-'0')%3]++; } printf("%s\n", flag?"yes":"no"); } return 0;}
0 0
- HDU 6020 MG loves apple
- hdu 6020 MG loves apple //bc Round #93 1002
- HDU6020 MG loves apple
- 【BestCoder Round #93】hdu6020 MG loves apple
- MG loves apple BestCoder Round #93 1002
- HDU 6019 MG loves gold
- HDU 6019 MG loves gold
- hdu 6019 MG loves gold
- HDU-6019 MG loves gold
- 大数删除k位是否能整除3,MG loves apple(HDU)
- MG loves apple HDU6020 BC #93-1002 思维题
- BestCoder Round #93 MG loves gold hdu 6019
- hdu 6021 MG loves string 子集 容斥 循环节
- HDU6019 MG loves gold
- MG loves gold
- Best Coder MG loves gold
- MG loves gold (map)
- HDOJ6019 MG loves gold 题解
- Google Font、Icon CDN加速代理
- 【Tensorflow】Windows下基于Anaconda的Tensorflow环境配置
- 2843 拯救炜哥 (bfs)
- js正则表达式报Nothing to repeat
- 单变元模线性方程
- HDU 6020 MG loves apple
- 再述 OGNL:在Struts2中的应用
- T-SQL语句操作数据库
- iOS学习笔记之View
- MSIL简介
- 安卓——开发环境搭建(eclipse)
- cf311B(斜率优化)
- hdu1394 求最小逆序数
- Third Maximum Number