usaco 1.5
来源:互联网 发布:中国陆军 知乎 编辑:程序博客网 时间:2024/04/30 11:07
chapter 1.5 的内容还是比较多的
Number Triangles: 简单的动态规划,方程:对自顶向下的总和sum sum[i][j] = max{sum[i-1][j], sum[i-1][j+1]} + number[i][j]
/*ID: zhangw31PROG: numtriLANG: C++*/#include <iostream>#include <algorithm>#include <fstream>using namespace std;const int MAXN = 1000 + 5;int v[MAXN][MAXN];int dp[MAXN][MAXN];ifstream fin("numtri.in");ofstream fout("numtri.out");int R, tmp;int main(){fin >> R;for (int i = 0; i < R; i++) {for (int j = 0; j < i + 1; j++) {fin >> v[i][j];}}dp[0][0] = v[0][0];for (int i = 0; i < R; i++) {for (int j = 0; j < i + 1; j++) {if (dp[i][j] + v[i+1][j] > dp[i+1][j]) dp[i+1][j] = dp[i][j] + v[i+1][j];if (dp[i][j] + v[i+1][j+1] > dp[i+1][j+1])dp[i+1][j+1] = dp[i][j] + v[i+1][j+1];}for (int j = 0; j < i + 1; j++) {cout << dp[i][j] << " ";}cout << endl;}sort(dp[R-1], dp[R-1] + R);fout << dp[R-1][R-1] << endl;}
Prime Palindromes:是一个巧妙的构造枚举,题目要求回文指质数,那么可以只构造一半,另一半通过对称即可,注意偶数和奇数位的对称
#include <cmath>#include <vector>#include <fstream>#include <cstdio>#include <algorithm>#include <string>#include <queue>#include <set>using namespace std;int a, b;vector<int> primepalin;bool isprime(int n){for (int i = 2; i <= sqrt(n); i++) {if (n % i == 0) return false;}return true;}void solv(){primepalin.push_back(11);for (int i = 2; i <= 10000; i++) {int tmp = i/10;int sum;for (sum = i; tmp != 0; tmp /=10) {sum = sum * 10 + tmp % 10;}if (isprime(sum)) {primepalin.push_back(sum);}}}int main(){solv();sort(primepalin.begin(), primepalin.end());while(cin >> a >> b) {if (a == 0 && b == 0) break;for (int i = 0; i < primepalin.size(); i++) {if (primepalin[i] < a) continue;if (primepalin[i] > b) break;printf("%d\n", primepalin[i]);}}}
Superprime Rib:也是一道枚举题,求X位数中的一些数:满足前两位是质数,3位也是,等等那么从最高位开始构造就行了
/*ID: zhangw31PROG: sprimeLANG: C++*/#include <iostream>#include <cmath>#include <fstream>using namespace std;ifstream fin("sprime.in");ofstream fout("sprime.out");int N;bool isprime(int a) {for (int i = 2; i <= sqrt(a); i++) {if (a % i == 0) return false;}return true;}void dfs(int n, int deep) {if (!isprime(n)) return;if (deep == N) {fout << n << endl;return;}n *= 10;for (int i = 0; i < 10; i++) {dfs(n + i, deep + 1);}}int main(){fin >> N;dfs(2, 1);dfs(3, 1);dfs(5, 1);dfs(7, 1);}
checker challege: n皇后问题,关键在于斜线上的判断,dfs功底不足啊。。
/*ID: zhangw31PROG: checkerLANG: C++*/#include <iostream>#include <fstream>#include <algorithm>#include <cstdio>using namespace std;ifstream fin("checker.in");ofstream fout("checker.out");const int MAXN = 50;bool col[MAXN];bool dialeft[MAXN];bool diaright[MAXN];int N, counter;int tmp[MAXN];void dfs(int i) {if (i == N + 1) {if (counter < 3) {for (int i = 1; i <= N; i++) {fout << tmp[i];if (i != N) fout << " ";}fout << endl;}counter ++;}for (int j = 1; j <= N; j++) { if (col[j] || dialeft[j-i+N] || diaright[i+j]) continue;col[j] = dialeft[j-i+N] = diaright[i+j] = true;tmp[i] = j;dfs(i + 1);col[j] = dialeft[j-i+N] = diaright[i+j] = false;}}int main(){fin >> N;dfs(1);fout << counter << endl;}
0 0
- usaco 1.5
- usaco 1.5.1
- usaco 1.5.2
- usaco 1.5.3
- USACO 1.5.4 checker
- USACO Section 1.5 题解
- [usaco]1.5 Checker Challenge
- USACO Section 1.5
- usaco-1.5-总结
- USACO 1.5章
- USACO 1.5 Superprime Rib
- USACO--1.5Prime Palindromes
- USACO--1.5Superprime Rib
- USACO 1.5 Number Triangles
- USACO Section 1.5
- USACO 1.5 Prime Palindromes
- USACO 1.5.1 numtri
- USACO 1.5 numtri
- [翻译]清理Linux磁盘空间的4种方法
- Immediate Decodability
- 通过CSS显示垂直文本
- codeforce393A
- Win7 安装Ubuntu 双系统
- usaco 1.5
- 参加H3C面试
- ACM Steps之二 (Section One)
- 关于Java的toString用法
- upstart 分析 and linux启动分析 (非常详细)
- 城中与城郊
- 求前序遍历或者后续遍历
- 图像的腐蚀(erode)和膨胀(dilate) 开运算以及闭运算
- 【ObjC那点儿事儿】