USACO Chapter1-Getting started Section 1.2
来源:互联网 发布:json被截断 编辑:程序博客网 时间:2024/06/06 14:13
第二节没有什么难想的题,关于进制转换这块我不是很熟练(其实X进制跟10进制都一样),得补习一下。
Milking Cows (milk2)
区间问题,看数据用int似乎也应该能过。注意一点区间左右都是闭的,也就是说a在t时刻结束,b在t时刻开始,那么a和b属于连续的情况。
/*ID:kkkwjx1LANG:C++TASK:milk2*/#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#define Max(a,b) (a>b)?a:busing namespace std;struct Elem{ int l,r;};bool cmp(Elem a,Elem b){ if(a.l==b.l) return a.r<b.r; return a.l<b.l;}Elem p[5005];int main(){ freopen("milk2.in","r",stdin); freopen("milk2.out","w",stdout); int n; scanf("%d",&n); for(int i=0; i<n; ++i) scanf("%d%d",&p[i].l,&p[i].r); sort(p,p+n,cmp); int st=p[0].l,ed=p[0].r; long long ans1=ed-st,ans2=0; for(int i=1; i<n; ++i) { if(ed<p[i].l) { ans2=Max(ans2,p[i].l-ed); st=p[i].l; ed=p[i].r; } else { if(ed<=p[i].r) ed=p[i].r; } ans1=Max(ans1,ed-st); } printf("%lld %lld\n",ans1,ans2); return 0;}
Transformations (transform)
注意一点,1,2,3……这几种操作分别是有优先级的。
例如
2
@@
@@
@@
@@
这种情况应该输出1,而不是6.
/*ID:kkkwjx1LANG:C++TASK:transform*/#include <iostream>#include <cstdio>#include <cstring>#include <string>#define INF 0x7f7f7f7fusing namespace std;int N;char str[12][12],str0[12][12];char str1[12][12],str2[12][12],str3[12][12],str4[12][12];bool ok=false;bool Check(char s[12][12],char ss[12][12]){ for(int i=0; i<N; ++i) if(strcmp(s[i],ss[i])) return false; return ok=true;}void Change90(char s[12][12],char t[12][12]){ for(int i=0; i<N; ++i) for(int j=0; j<N; ++j) t[j][N-1-i]=s[i][j];}void Reverse(char s[12][12],char t[12][12]){ for(int i=0; i<N; ++i) for(int j=0; j<N; ++j) t[i][j]=s[i][N-1-j];}int main(){ freopen("transform.in","r",stdin); freopen("transform.out","w",stdout); scanf("%d",&N); for(int i=0; i<N; ++i) scanf("%s",str[i]); for(int i=0; i<N; ++i) scanf("%s",str0[i]); Change90(str,str1); if(Check(str1,str0)) putchar('1'); else { Change90(str1,str2); if(Check(str2,str0)) putchar('2'); else { Change90(str2,str3); if(Check(str3,str0)) putchar('3'); } } if(!ok) { Reverse(str,str4); if(Check(str4,str0)) putchar('4'); else { Change90(str4,str1); if(Check(str1,str0)) putchar('5'); else { Change90(str1,str2); if(Check(str2,str0)) putchar('5'); else { Change90(str2,str3); if(Check(str3,str0)) putchar('5'); } } } } if(!ok) { if(Check(str,str0))putchar('6'); else putchar('7'); } putchar('\n'); return 0;}
Name That Number (namenum)
将字典中的每个名字转换成数字串。然后寻找与给定数字串相同的输出名字即可。
这里注意题目要输入长度至多12的数字,这意味着int是不够的,long long 应该可以,不过我还是使用了string。
/*ID:kkkwjx1LANG:C++TASK:namenum*/#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <fstream>using namespace std;struct Name{ char str[15]; string num;};char GetNum(char c){ if(c=='A'||c=='B'||c=='C') return '2'; if(c=='D'||c=='E'||c=='F') return '3'; if(c=='G'||c=='H'||c=='I') return '4'; if(c=='J'||c=='K'||c=='L') return '5'; if(c=='M'||c=='N'||c=='O') return '6'; if(c=='P'||c=='R'||c=='S') return '7'; if(c=='T'||c=='U'||c=='V') return '8'; if(c=='W'||c=='X'||c=='Y') return '9';}int main(){ freopen("namenum.in","r",stdin); freopen("namenum.out","w",stdout); ifstream fin; char buff[5000][15]; Name p[5000]; int k=0; fin.open ("dict.txt", ifstream::in); while (fin.good()) { fin.getline(p[k].str,200); int l=strlen(p[k].str); for(int i=0; i<l; ++i) p[k].num+=(GetNum(p[k].str[i])); k++; }; fin.close(); string tp; cin>>tp; bool ok=false; for(int i=0; i<k; ++i) if(tp==p[i].num) { cout<<p[i].str<<endl; ok=true; } if(!ok) cout<<"NONE"<<endl; return 0;}
Palindromic Squares (palsquare)
进制转换问题。思路很简单,先将从十进制1开始循环,平方之后转换成B进制,看是否是回文,如果是则将原数转换成B进制并输出还有回文。
/*ID:kkkwjx1LANG:C++TASK:palsquare*/#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>using namespace std;int B;bool Judge(char str[20]){ int l=strlen(str); for(int i=0; i<=l/2; ++i) if(str[i]!=str[l-1-i]) return false; return true;}void Strrev(char str[20]){ int l=strlen(str); for(int i=0; i<l/2; ++i) swap(str[i],str[l-1-i]);}void Convers(int val, char str[20],int R){ int i=0; while(val) { int x=val%R; if(x<10) str[i++]=x+'0'; else str[i++]='A'+(x-10); val=val/R; } str[i]=0; Strrev(str);}int main(){ freopen("palsquare.in","r",stdin); freopen("palsquare.out","w",stdout); scanf("%d",&B); for(int i=1; i<=300; ++i) { char s[20]= {0}; Convers(i*i,s,B); if(Judge(s)) { char t[20]= {0}; Convers(i,t,B); printf("%s %s\n",t,s); } } return 0;}
Dual Palindromes (dualpal)
过了上个题这个就容易多了。枚举一下就行了。
/*ID:kkkwjx1LANG:C++TASK:dualpal*/#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#define LN 30using namespace std;bool Judge(char str[LN]){ int l=strlen(str); for(int i=0; i<=l/2; ++i) if(str[i]!=str[l-1-i]) return false; return true;}void Strrev(char str[LN]){ int l=strlen(str); for(int i=0; i<l/2; ++i) swap(str[i],str[l-1-i]);}void Convers(int val, char str[LN],int R){ int i=0; while(val) { int x=val%R; if(x<10) str[i++]=x+'0'; else str[i++]='A'+(x-10); val=val/R; } str[i]=0; Strrev(str);}bool OK(int val){ int cou=0; char tmp[LN]; for(int i=2; i<=10; ++i) { Convers(val,tmp,i); if(Judge(tmp)) cou++; if(cou>=2) return true; } return false;}int main(){ freopen("dualpal.in","r",stdin); freopen("dualpal.out","w",stdout); int N,S; scanf("%d%d",&N,&S); for(int i=S+1,cou=0; cou<N; ++i) { if(OK(i)) { printf("%d\n",i); cou++; } } return 0;}
- USACO Chapter1-Getting started Section 1.2
- USACO Chapter1-Getting started Section 1.1
- USACO Chapter1-Getting started Section 1.3
- USACO Chapter1-Getting started Section 1.4
- 1.2 Getting Started
- 【USACO-Chapter1-1.2】【模拟】Transformations
- USACO Section 1.2 题解
- USACO Section 1.2 Transformations
- USACO Section 1.2
- USACO Section 1.2 Transformations
- [USACO Training] Section 1.2
- USACO Section 1.2 Transformations
- USACO-Section 1.2 Transformations [...]
- Getting started
- Getting Started
- Getting Started
- Getting Started
- Getting Started
- SQL查询数据库中所有表的记录条数
- Hive简介
- android viewpage的施用
- 已经配置javahome了的,还出现A Java Runtime Environment (JRE) or Java Development
- C# objiect 转int类型
- USACO Chapter1-Getting started Section 1.2
- 网站建设域名和服务器选择的相关技巧
- cout和printf的混用而产生的顺序问题
- unity3D学习笔记2
- 关于XML的总结——Schema和DTD
- Fedora一些设置
- Dynamic Programming:双调旅行商问题(旅行商的变种)的解法
- NOIP2012普及组复赛解题报告
- 网站流量从100PV到1亿级PV网站架构演变