HDOJ 5143 NPY and arithmetic progression
2014-12-17 16:20
471 查看
题意:有a1个1,a2个2,a3个3,a4个4,问能否不重不漏的划分成一些长度大于等于3的等差数列(一个数列可以出现多次)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5143
思路:四个数字用一个四维数组保存,利用递推对数组预处理,并且当a1,a2,a3,a4全都大于等于三时,等差数列一定存在,缩小数据范围。
注意点:无。
以下为AC代码:
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5143
思路:四个数字用一个四维数组保存,利用递推对数组预处理,并且当a1,a2,a3,a4全都大于等于三时,等差数列一定存在,缩小数据范围。
注意点:无。
以下为AC代码:
Run ID | Submit Time | Judge Status | Pro.ID | Exe.Time | Exe.Memory | Code Len. | Language | Author |
12493321 | 2014-12-14 00:15:56 | Accepted | 5143 | 218MS | 1192K | 3918 B | G++ | luminous11 |
#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <vector> #include <deque> #include <list> #include <cctype> #include <algorithm> #include <climits> #include <queue> #include <stack> #include <cmath> #include <map> #include <set> #include <iomanip> #include <cstdlib> #include <ctime> #define ll long long #define ull unsigned long long #define all(x) (x).begin(), (x).end() #define clr(a, v) memset( a , v , sizeof(a) ) #define pb push_back #define mp make_pair #define read(f) freopen(f, "r", stdin) #define write(f) freopen(f, "w", stdout) using namespace std; bool f[11][11][11][11]; int main() { ios::sync_with_stdio( false ); int t; int a1,a2,a3,a4; f[0][0][0][0] = true; for ( a1 = 0; a1 <= 10; a1 ++ ) { for ( a2 = 0; a2 <= 10; a2 ++ ) { for ( a3 = 0; a3 <= 10; a3 ++ ) { for ( a4 = 0; a4 <= 10; a4 ++ ) { if ( a1 != 0 || a2 != 0 || a3 != 0 || a4 != 0 ) { f[a1][a2][a3][a4] = false; for ( int i = a1 - 3; i >= 0; i -- ) { if ( f[i][a2][a3][a4] ) { f[a1][a2][a3][a4] = true; continue; } } for ( int i = a2 - 3; i >= 0; i -- ) { if ( f[a1][i][a3][a4] ) { f[a1][a2][a3][a4] = true; continue; } } for ( int i = a3 - 3; i >= 0; i -- ) { if ( f[a1][a2][i][a4] ) { f[a1][a2][a3][a4] = true; continue; } } for ( int i = a4 - 3; i >= 0; i -- ) { if ( f[a1][a2][a3][i] ) { f[a1][a2][a3][a4] = true; continue; } } if ( a1 > 0 && a2 > 0 && a3 > 0 ) { if ( f[a1-1][a2-1][a3-1][a4] ) { f[a1][a2][a3][a4] = true; continue; } } if ( a2 > 0 && a3 > 0 && a4 > 0) { if ( f[a1][a2-1][a3-1][a4-1] ) { f[a1][a2][a3][a4] = true; continue; } } if ( a1 > 0 && a2 > 0 && a3 > 0 && a4 > 0 ) { if ( f[a1-1][a2-1][a3-1][a4-1] ) { f[a1][a2][a3][a4] = true; continue; } } } } } } } cin >> t; while ( t -- ) { cin >> a1 >> a2 >> a3 >> a4; if ( a1 > 10 ) a1 = 10; if ( a2 > 10 ) a2 = 10; if ( a3 > 10 ) a3 = 10; if ( a4 > 10 ) a4 = 10; if ( f[a1][a2][a3][a4] ) cout << "Yes" << endl; else cout << "No" << endl; } return 0; }
相关文章推荐
- HDOJ 5143 NPY and arithmetic progression DFS
- hdu 5143 NPY and arithmetic progression(枚举)
- HDU 5143 NPY and arithmetic progression
- HDU 5143 NPY and arithmetic progression DFS
- HDU 5143 NPY and arithmetic progression DFS
- HDU 5143 NPY and arithmetic progression 思维+枚举
- hdu 5143 NPY and arithmetic progression(暴力枚举)
- hdu 5143 NPY and arithmetic progression(思路,枚举)
- HDU 5143 NPY and arithmetic progression(思维)
- 【CUGBACM15级BC第22场 B】hdu 5143 NPY and arithmetic progression
- HDU 5143 NPY and arithmetic progression (枚举基本类型123、234、1234的个数)
- HDU 5143 NPY and arithmetic progression(思维题)
- hdu 5143 NPY and arithmetic progression
- hdu 5143 NPY and arithmetic progression
- HDU5143 NPY and arithmetic progression【暴力】
- HDOJ 5145 NPY and girls
- HDOJ 5144 NPY and shot(三分)
- HDOJ 5142 NPY and FFT
- HDOJ 5144 NPY and shot
- HDOJ 5145 NPY and girls