USACO 1.1
来源:互联网 发布:淘宝skype充值 编辑:程序博客网 时间:2024/06/07 16:48
USACO 1.2
主要说一下格式。
头部必打 /*
ID: beihai2013
PROG: (题目名字,题目有描述)
LANG: C++
*/
然后用文件流打开输入输出。
1.1.1
a+b
/*ID: beihai2013PROG: testLANG: C++*/#include <iostream>#include <fstream>#include <string>using namespace std;int main() { ofstream fout ("test.out"); ifstream fin ("test.in"); int a, b; fin >> a >> b; fout << a+b << endl; return 0;}
1.1.2
简单计算
/*
ID: beihai2013
PROG: ride
LANG: C++
*/
include
include
include
include
include
include
include
using namespace std;
const int MAXN = 1000;
char s1[MAXN], s2[MAXN];
int main()
{
// scanf(“%s %s”, s1, s2);
freopen(“ride.in”, “r”, stdin);
freopen(“ride.out”, “w”, stdout);
cin >> s1 >> s2;
int ans1 = 1, ans2 = 1;
for(int i = 0 ; i < (int)strlen(s1) ; i++)
ans1 = (ans1 * (s1[i] - ‘A’ + 1)) % 47;
for(int i = 0 ; i < (int)strlen(s2) ; i++)
ans2 = (ans2 * (s2[i] - ‘A’ + 1)) % 47;
if(ans1 == ans2) cout << “GO” << endl;
else cout << “STAY” << endl;
//scanf("%s", s1);return 0;
}
1.1.5
简单模拟。所有人的钱总和为0,一开始所有人的钱数量也为0。每次一个人会分钱给另外几个人,不能均分的钱就自己留着。
/* ID: beihai2013 PROG: gift1 LANG: C++*/#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <iostream>#include <string>#include <algorithm>#include <map>using namespace std;const int MAXN = 20;char name[MAXN];char p[MAXN][MAXN];int val[MAXN];map<string,int>mm;int main(){ freopen("gift1.in", "r", stdin); freopen("gift1.out", "w", stdout); int n; scanf("%d", &n); for(int i = 1 ; i <= n ; i++){ scanf("%s", p[i]); mm[p[i]] = i; val[i] = 0; } while(scanf("%s", name) != EOF){ int sum, m; int u = mm[name]; scanf("%d%d", &sum, &m); if(m == 0){ continue; } for(int i = 0 ; i < m ; i++){ scanf("%s", name); int v = mm[name]; val[v] += sum / m; } val[u] -= sum - sum % m; } for(int i = 1 ; i <= n ; i++){ printf("%s %d\n", p[i], val[i]); } return 0;}
1.1.6
愈来愈难了……
模拟时间,输出从1900年起,第N年的每个月第13日分别为星期6712345的数量
题目容易看错,注意给出的条件是1900.1.1为星期一,所以还要转化一下。
然后要把12月的天数放前面,因为遍历一年的时候是遍历这一年的1-12月,1月是从上一年的12月变化来的。
/* ID: beihai2013 TASK: friday LANG: C++*/#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <string>#include <algorithm>#include <iostream>using namespace std;const int MAXN = 400 + 5;int ans[MAXN][10];int mon[20] = {0, 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};int day(int year, int month){ if(month == 3){ if(year % 400 == 0) return 29; else if(year % 100 != 0 && year % 4 == 0) return 29; } return mon[month];}void init(){ memset(ans, 0, sizeof(ans)); int now = 5; for(int i = 1 ; i < MAXN ; i++){ int year = 1900 + i - 1; for(int j = 1 ; j <= 7 ; j++) ans[i][j] = ans[i - 1][j]; for(int j = 1 ; j <= 12 ; j++){ now = (now + day(year, j)) % 7; if(now == 0) now = 7; ans[i][now]++;// printf("year = %d, month = %d, now = %d, day(year,j) = %d\n", year, j, now, day(year, j));// system("pause"); } }}int main(){ freopen("friday.in", "r", stdin); freopen("friday.out", "w", stdout); init(); int n; scanf("%d", &n); for(int i = 1 ; i <= 7 ; i++){ printf("%d", ans[n][i]); if(i == 7) printf("\n"); else printf(" "); } return 0;}
1.1.7
神坑模拟。刚开始想用O(N)做然后就各种做不出来。
用O(N^2)做的,对每个点找能达到的最左端和最右端。但是还要分w和非w的情况讨论。
/* ID: beihai2013 TASK: beads LANG: C++*/#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <iostream>#include <string>#include <algorithm>using namespace std;const int MAXN = 1e3;char str[MAXN];int l[MAXN], r[MAXN];int main(){ freopen("beads.in", "r", stdin); freopen("beads.out", "w", stdout); int n; scanf("%d", &n); scanf("%s", str); for(int i = n ; i < 2 * n ; i++) str[i] = str[i - n]; str[n * 2] = '\0'; for(int i = 0 ; i < 2 * n ; i++){ if(str[i] != 'w'){ int now = i; while(now >= 0 && (str[now] == 'w' || str[now] == str[i])) now--; l[i] = i - now; now = i; while(now < 2 * n && (str[now] == 'w' || str[now] == str[i])) now++; r[i] = now - i; } else{ int now = i; while(now >= 0 && str[now] == 'w') now--; if(now >= 0){ char temp = str[now]; while(now >= 0 && (str[now] == 'w' || str[now] == temp)) now--; l[i] = i - now; } else l[i] = i - now; now = i; while(now < 2 * n && str[now] == 'w') now++; if(now < 2 * n){ char temp = str[now]; while(now < 2 * n && (str[now] == 'w' || str[now] == temp)) now++; r[i] = now - i; } else r[i] = -i + now; } } int ans = 0; for(int i = 0 ; i < 2 * n ; i++) ans = max(ans, l[i] + r[i + 1]); ans = min(ans, n); printf("%d\n", ans); return 0;}
- USACO 1.1
- USACO 1.1
- usaco 1.1
- USACO 1.1 Broken Necklace(USACO官方)
- USACO 1.1.1
- USACO 1.1.2
- USACO 1.1-Broken Necklace
- usaco 1.1:Broken Necklace
- USACO 1.1 friday
- USACO Section 1.1 题解
- USACO 1.1 Broken Necklace
- usaco-1.1.1
- USACO Section 1.1
- USACO 1.1 friday
- USACO 1.1 beads
- usaco 1.1 Broken Necklace
- usaco 1.1 Miking Cows
- usaco 1.1 Trasformations
- 解决tinymce添加本地图片问题
- HTML5动画/游戏神器---AlloyStick
- UGUI之页面滑动(Grid Layout和Scorll Rect&&mask)
- Android 连续点击back button退出当前Activity的两种实现方法
- QT3661刷单平台官方推荐人七师菲儿
- USACO 1.1
- Android 通过 Intent 传递类对象
- Address already in use: JVM_Bind <null>:8080
- Could not find Developer Disk Image
- mysql-cluster搭建
- 1012.数字分类
- npm内网源搭建
- 快速排序算法(QuickSort)
- C#调用C++ DLL的方法