USACO 之 Section 1.5 (已解决)

Number Triangles:

/*

  DP 题

  dp[j] = max(dp[j - 1] + tgl[i-1][j], dp[j] + tgl[i-1][j]);

*/

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #define HOME
 3 #define _CRTDBG_MAP_ALLOC
 4 #include <crtdbg.h>
 5
 6 /*
 7 ID: Jming
 8 PROG: numtri
 9 LANG: C++
10 */
11 #include <iostream>
12 #include <fstream>
13 #include <sstream>
14 #include <cstdlib>
15 #include <cstdio>
16 #include <cstddef>
17 #include <iterator>
18 #include <algorithm>
19 #include <string>
20 #include <locale>
21 #include <cmath>
22 #include <vector>
23 #include <cstring>
24 #include <map>
25 #include <utility>
26 #include <queue>
27 #include <stack>
28 #include <set>
29 #include <functional>
30 using namespace std;
31 typedef pair<int, int> PII;
32 typedef long long int64;
33 const int INF = 0x3f3f3f3f;
34 const int modPrime = 3046721;
35 const double eps = 1e-9;
36 const int MaxN = 510000;
37 const int MaxM = 10010;
38
39
40 int N;
41 int dp[MaxN];
42 vector<vector<int> > tgl;
43
44
45 void Solve()
46 {
47     for (int i = 1; i <= N; ++i)
48     {
49         for (int j = i; j >= 1; --j)
50         {
51             dp[j] = max(dp[j - 1] + tgl[i-1][j], dp[j] + tgl[i-1][j]);
52         }
53     }
54     cout << *max_element(dp, dp + MaxN) << endl;
55 }
56
57 int main()
58 {
59 #ifdef HOME
60     freopen("in", "r", stdin);
61     //freopen("out", "w", stdout);
62 #endif
63
64     freopen("numtri.in", "r", stdin);
65     freopen("numtri.out", "w", stdout);
66
67     fill(dp, dp + MaxN, 0);
68     scanf("%d", &N);
69     for (int i = 1; i <= N; ++i)
70     {
71         vector<int> row;
72         row.push_back(0);
73         int tmp;
74         for (int j = 0; j < i; ++j)
75         {
76             scanf("%d", &tmp);
77             row.push_back(tmp);
78         }
79         tgl.push_back(row);
80     }
81
82     Solve();
83
84 #ifdef HOME
85     cerr << "Time elapsed: " << clock() / CLOCKS_PER_SEC << " ms" << endl;
86     _CrtDumpMemoryLeaks();
87 #endif
88     return 0;
89 }

Prime Palindromes:

/*
  生成回文数 + 判断是否为质数
*/

解法一:

  1 /*
  2 ID: Jming
  3 PROG: pprime
  4 LANG: C++
  5 */
  6 #include <iostream>
  7 #include <fstream>
  8 #include <sstream>
  9 #include <cstdlib>
 10 #include <cstdio>
 11 #include <cstddef>
 12 #include <iterator>
 13 #include <algorithm>
 14 #include <string>
 15 #include <locale>
 16 #include <cmath>
 17 #include <vector>
 18 #include <cstring>
 19 #include <map>
 20 #include <utility>
 21 #include <queue>
 22 #include <stack>
 23 #include <set>
 24 #include <functional>
 25 using namespace std;
 26 typedef pair<int, int> PII;
 27 typedef long long int64;
 28 const int INF = 0x3f3f3f3f;
 29 const int modPrime = 3046721;
 30 const double eps = 1e-9;
 31 const int MaxN = 100000010;
 32 const int MaxM = 10010;
 33
 34
 35 vector<int> legal;
 36
 37
 38 // 判断是否为质数
 39 bool isPrime(int x)
 40 {
 41     for (int i = 2; i*i <= x; ++i)
 42     {
 43         if (x%i == 0)
 44         {
 45             return false;
 46         }
 47     }
 48     return true;
 49 }
 50
 51 // 保存答案
 52 void getAns(int x)
 53 {
 54     if (isPrime(x))
 55     {
 56         legal.push_back(x);
 57     }
 58 }
 59
 60 // 生成回文数
 61 void getPdm()
 62 {
 63     int palindrome;
 64
 65     for (int i1 = 1; i1 <= 9; i1 += 2)
 66     {
 67         // 1
 68         palindrome = i1;
 69         getAns(palindrome);
 70         // 2
 71         palindrome = i1 * 10 + i1;
 72         getAns(palindrome);
 73     }
 74
 75     for (int i1 = 1; i1 <= 9; i1 += 2)
 76     {
 77         for (int i2 = 0; i2 <= 9; ++i2)
 78         {
 79             // 3
 80             palindrome = i1 * 100 + i2 * 10 + i1;
 81             getAns(palindrome);
 82             // 4
 83             palindrome = i1 * 1000 + i2 * 100 + i2 * 10 + i1;
 84             getAns(palindrome);
 85         }
 86     }
 87
 88     for (int i1 = 1; i1 <= 9; i1 += 2)
 89     {
 90         for (int i2 = 0; i2 <= 9; ++i2)
 91         {
 92             for (int i3 = 0; i3 <= 9; ++i3)
 93             {
 94                 // 5
 95                 palindrome =
 96                     i1 * 10000 + i2 * 1000 + i3 * 100 +
 97                     i2 * 10 + i1;
 98                 getAns(palindrome);
 99                 // 6
100                 palindrome =
101                     i1 * 100000 + i2 * 10000 + i3 * 1000 +
102                     i3 * 100 + i2 * 10 + i1;
103                 getAns(palindrome);
104             }
105         }
106     }
107
108     for (int i1 = 1; i1 <= 9; i1 += 2)
109     {
110         for (int i2 = 0; i2 <= 9; ++i2)
111         {
112             for (int i3 = 0; i3 <= 9; ++i3)
113             {
114                 for (int i4 = 0; i4 <= 9; ++i4)
115                 {
116                     // 7
117                     palindrome =
118                         i1 * 1000000 + i2 * 100000 + i3 * 10000 + i4 * 1000 +
119                         i3 * 100 + i2 * 10 + i1;
120                     getAns(palindrome);
121                     // 8
122                     palindrome =
123                         i1 * 10000000 + i2 * 1000000 + i3 * 100000 + i4 * 10000 +
124                         i4 * 1000 + i3 * 100 + i2 * 10 + i1;
125                     getAns(palindrome);
126                 }
127             }
128         }
129     }
130 }
131
132
133
134 int main()
135 {
136 #ifdef HOME
137     freopen("in", "r", stdin);
138     //freopen("out", "w", stdout);
139 #endif
140
141     freopen("pprime.in", "r", stdin);
142     freopen("pprime.out", "w", stdout);
143
144
145
146     getPdm();
147     sort(legal.begin(), legal.end());
148     int a, b;
149     scanf("%d %d", &a, &b);
150     int i = 0;
151     while (legal[i] < a) ++i;
152     while ((i<legal.size()) && legal[i] <= b)
153     {
154         printf("%d\n", legal[i]);
155         ++i;
156     }
157
158
159
160 #ifdef HOME
161     cerr << "Time elapsed: " << clock() / CLOCKS_PER_SEC << " ms" << endl;
162     _CrtDumpMemoryLeaks();
163 #endif
164     return 0;
165 }

解法二(优化):

  1 /*
  2      生成回文数 + 判断是否为质数
  3 备注:
  4     sprintf:整数转换为字符串
  5     atoi:字符串转换为int
  6 */
  7 /*
  8 ID: Jming
  9 PROG: pprime
 10 LANG: C++
 11 */
 12 #include <iostream>
 13 #include <fstream>
 14 #include <sstream>
 15 #include <cstdlib>
 16 #include <cstdio>
 17 #include <cstddef>
 18 #include <iterator>
 19 #include <algorithm>
 20 #include <string>
 21 #include <locale>
 22 #include <cmath>
 23 #include <vector>
 24 #include <cstring>
 25 #include <map>
 26 #include <utility>
 27 #include <queue>
 28 #include <stack>
 29 #include <set>
 30 #include <functional>
 31 using namespace std;
 32 typedef pair<int, int> PII;
 33 typedef long long int64;
 34 const int INF = 0x3f3f3f3f;
 35 const int modPrime = 3046721;
 36 const double eps = 1e-9;
 37 const int MaxN = 10010;
 38 const int MaxM = 10010;
 39
 40
 41 int A, B;
 42
 43 // 判断是否为质数
 44 bool isPrime(int x)
 45 {
 46     if (x < 2)
 47     {
 48         return false;
 49     }
 50     for (int i = 2; i*i <= x; ++i)
 51     {
 52         if (x%i == 0)
 53         {
 54             return false;
 55         }
 56     }
 57     return true;
 58 }
 59
 60 void gen(int x, int isOdd)
 61 {
 62     char buf[10];
 63
 64     sprintf(buf, "%d", x);
 65
 66     char *p, *q;
 67
 68     p = buf + strlen(buf);
 69
 70     q = p - isOdd;
 71
 72     while (q > buf)
 73     {
 74         *(p++) = *(--q);
 75     }
 76
 77     *p = ‘\0‘;
 78
 79     int n = atoi(buf);
 80
 81     if ((n >= A) && (n <= B) && (isPrime(n)))
 82     {
 83         printf("%d\n", n);
 84     }
 85 }
 86
 87
 88
 89 void getPdm(int start, int end)
 90 {
 91     for (int i = start; i <= end; ++i)
 92     {
 93         // 生成位数是奇数的回文数
 94         gen(i, 1);
 95     }
 96     for (int i = start; i <= end; ++i)
 97     {
 98         // 生成位数是偶数的回文数
 99         gen(i, 0);
100     }
101 }
102
103 void Solve()
104 {
105     getPdm(1, 9);
106     getPdm(10, 99);
107     getPdm(100, 999);
108     getPdm(1000, 9999);
109 }
110
111 int main()
112 {
113 #ifdef HOME
114     freopen("in", "r", stdin);
115     //freopen("out", "w", stdout);
116 #endif
117
118     freopen("pprime.in", "r", stdin);
119     freopen("pprime.out", "w", stdout);
120
121     scanf("%d %d", &A, &B);
122     Solve();
123
124
125 #ifdef HOME
126     cerr << "Time elapsed: " << clock() / CLOCKS_PER_SEC << " ms" << endl;
127     _CrtDumpMemoryLeaks();
128 #endif
129     return 0;
130 }

Superprime Rib:

/*

  此题可利用 “当前生成位数为n的数是否为质数” 进行剪枝

  递归,详见代码
*/

 1 /*
 2 ID: Jming
 3 PROG: sprime
 4 LANG: C++
 5 */
 6 #include <iostream>
 7 #include <fstream>
 8 #include <sstream>
 9 #include <cstdlib>
10 #include <cstdio>
11 #include <cstddef>
12 #include <iterator>
13 #include <algorithm>
14 #include <string>
15 #include <locale>
16 #include <cmath>
17 #include <vector>
18 #include <cstring>
19 #include <map>
20 #include <utility>
21 #include <queue>
22 #include <stack>
23 #include <set>
24 #include <functional>
25 using namespace std;
26 typedef pair<int, int> PII;
27 typedef long long int64;
28 const int INF = 0x3f3f3f3f;
29 const int modPrime = 3046721;
30 const double eps = 1e-9;
31 const int MaxN = 10010;
32 const int MaxM = 10010;
33
34 int N;
35
36 bool isPrime(int x)
37 {
38     if (x < 2)
39     {
40         return false;
41     }
42     for (int i = 2; i*i <= x; ++i)
43     {
44         if (x%i == 0)
45         {
46             return false;
47         }
48     }
49     return true;
50 }
51
52
53 void Solve(int val, int n)
54 {
55     if (n == N)
56     {
57         printf("%d\n", val);
58         return;
59     }
60     for (int i = 1; i <= 9; ++i)
61     {
62         int tmp = val * 10 + i;
63         // 剪枝
64         if (isPrime(tmp))
65         {
66             Solve(tmp, n + 1);
67         }
68     }
69 }
70
71 int main()
72 {
73 #ifdef HOME
74     //freopen("in", "r", stdin);
75     //freopen("out", "w", stdout);
76 #endif
77
78     freopen("sprime.in", "r", stdin);
79     freopen("sprime.out", "w", stdout);
80
81     while (~scanf("%d", &N))
82     {
83         Solve(0, 0);
84     }
85
86 #ifdef HOME
87     cerr << "Time elapsed: " << clock() / CLOCKS_PER_SEC << " ms" << endl;
88     _CrtDumpMemoryLeaks();
89 #endif
90     return 0;
91 }
时间: 2024-10-13 11:39:26

USACO 之 Section 1.5 (已解决)的相关文章

关于MySQL字符集问题【已解决】

关于MySQL字符集问题[已解决] 先来看看我的字符集设置 全都是utf8.这里没有什么问题 接下来我创建了一个数据表book.来看下我创建的表结构 当输入命令:mysql> insert into book(bookname,publisher,author,price,detail) values('PHP','电子工业出版社','武胜利','80.00','与PHP相关的图书');ERROR 1366 (HY000): Incorrect string value: '\xB5\xE7\x

可编辑ztree节点的增删改功能图标控制---已解决

<!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - beforeEditName / beforeRemove / onRemove / beforeRename / onRename</TITLE> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <l

服务器老是死机,重启后就可以了。。已解决

服务器没过多久又死机了,重启后又可以,开始以为是软件的问题,重装了干净的系统,结果没多久还是出现这个问题,在安装系统的时候非常缓慢,排除了软件问题,应该是硬件有问题了,内存.CPU经过替换法排查都没有问题,想到安装系统的时候非常缓慢,怀疑是硬盘有问题,下载了硬盘检测软件,结果一看,居然很多坏道,马上了一个新硬盘,后面再也没出现这种情况. 分析原因:硬盘有坏道,当系统读取到坏道的时候卡机或死机. 服务器老是死机,重启后就可以了..已解决,布布扣,bubuko.com

【已解决】Android微信开放平台,申请移动应用的 应用签名 如何获取

你看到的这个文章来自于http://www.cnblogs.com/ayanmw 在微信开放平台,申请移动应用的时候: https://open.weixin.qq.com/cgi-bin/appcreate?t=manage/createMobile&type=app&lang=zh_CN&token=60682ddfbd9106b1c4b1f9d70f56c98e5f728905 下一步后需要填写应用签名 这可难倒了我了..签名 keystore文件可没有这么简单. "

【已解决】java.lang.IllegalArgumentException: column &#39;_id&#39; does not exist

今天用到SimpleCursorAdapter来适配ListView的数据,依旧记得SimpleCursorAdapter必须匹配一个字段名为_id的主键列,一开始我用SQLiteDatabase的rawQuery方法拼sql查询,因为是用SELECT * FROM table_name,所以一切正常. 后来我用query方法就挂了,抛出了java.lang.IllegalArgumentException: column '_id' does not exist异常,然后我发现原来是参数col

启动httpd报错-已解决

[[email protected] ~]# service httpd startStarting httpd: (13)Permission denied: make_sock: could not bind to address 192.168.1.153:28080no listening sockets available, shutting downUnable to open logs [FAILED][[email protected] ~]# 临时办法: [[email pro

LigerUi-js中ajax前台调用后台Json格式转换!(已解决)

LigerUi-js中ajax前台调用后台Json格式转换!(已解决) success: function (data, status) { var aaa = JSON2.stringify(data); alert(aaa ); } LigerUi-js中ajax前台调用后台Json格式转换!(已解决),布布扣,bubuko.com

OpenCV 无法启动此程序,因为计算机中丢失opencv_core249.dll。请尝试重新安装改程序已解决此问题

换了64位的系统,配置好之后运行之前的程序,竟然给我抛出这个错误.应该是我的opencv没有安装对吧.系统报错 无法启动此程序,因为计算机中丢失opencv_core249.dll.请尝试重新安装改程序已解决此问题 那就是缺少opencv_core249.dll动态链接库了. [解决方法] 1 在安装目录下找到这个链接库 (但是不知道为什么我引用的库还是要x86下的才行,郁闷中) 2 复制到指定的目录下 64位系统 C:\Windows\SysWOW64 32位系统 C:\Windows\Sys

PostgreSQL添加新服务器连接时,报错“Server doesn&#39;t listen ”,已解决。

PostgreSQL添加新的服务器连接时,报错: 解决方法: 第一步:修改配置文件中连接的服务器列表,添加服务器IP地址(图pg002.png) 配置文件地址:数据库右击属性,打开数据库的安装路径在data文件中找到配置文件pg_hba.conf. 如:D:\Program Files\PostgreSQL\9.4\data\pg_hba.conf 注:只要修改IP路径就可以了,‘/’后面的数字都为32. 第二步:修改配置文件后,启动服务器的服务: 启动服务完成,连接服务器,新服务器就可以正常的

【已解决】BeautifulSoup已经获得了Unicode的Soup但是print出来却是乱码

[问题] 某人遇到的问题: 关于BeautifulSoup抓取表格及SAE数据库导入的问题(跪求大神帮忙) 简单说就是: 用如下代码: ? 1 2 3 4 5 6 7 import re,urllib2 from BeautifulSoup import BeautifulSoup from urllib import urlopen doc=urllib2.urlopen("http://www.w3school.com.cn/html/html_tables.asp") soup