USACO Chapter1-Getting started Section 1.3
来源:互联网 发布:windows 开机启动 编辑:程序博客网 时间:2024/05/18 15:56
USACO题目还是不错的。
Mixing Milk
一道水贪心,不能再水。
/*ID:kkkwjx1LANG:C++TASK:milk*/#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct Elem{ int cost,amount;};Elem p[5010];bool cmp(Elem a,Elem b){ return a.cost<b.cost;}int main(){ freopen("milk.in","r",stdin); freopen("milk.out","w",stdout); int N,M; scanf("%d%d",&N,&M); for(int i=0; i<M; ++i) scanf("%d%d",&p[i].cost,&p[i].amount); sort(p,p+M,cmp); int ans=0; for(int i=0; i<M; ++i) { int mn=min(N,p[i].amount); ans+=mn*p[i].cost; N-=mn; if(N==0) break; } printf("%d\n",ans); return 0;}
Barn Repair
我是逆向思考计算的没有覆盖的距离。
/*ID:kkkwjx1LANG:C++TASK:barn1*/#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>using namespace std;int main(){ freopen("barn1.in","r",stdin); freopen("barn1.out","w",stdout); int M,C,S; scanf("%d%d%d",&M,&S,&C); int a[205]= {0},p[205]= {0}; for(int i=0; i<C; ++i) scanf("%d",&a[i]); sort(a,a+C); if(M>=C) printf("%d\n",C); else { for(int i=1; i<=C; ++i) p[i]=a[i]-a[i-1]; sort(p+1,p+1+C); int q=0; for(int i=C; C-i<M-1; --i) q+=p[i]; int ans=a[C-1]-a[0]+M-q; printf("%d\n",ans); } return 0;}
Calf Flac
回文,用简单的搜索做的,还是抄了白书上面的,自己没怎么看,有空还得回来研究下。
另外此题坑爹用了各种文件操作。
/*ID:kkkwjx1LANG:C++TASK:calfflac*/#include <iostream>#include <fstream>#include <cstdio>#include <cstring>#include <string>#include <cctype>#define MAXN 20000 + 10using namespace std;char s[MAXN];int p[MAXN];int main(){ int n,m=0,mx=0,x,y; ifstream fin("calfflac.in"); ofstream fout("calfflac.out"); char c; string buf(""); while (!fin.eof ()) { c = fin.get(); buf += c; } n=buf.size(); for(int i=0; i<n; ++i) if(isalpha(buf[i])) { p[m]=i; s[m++]=toupper(buf[i]); } for(int i=0; i<m; ++i) { for(int j=0; i-j>=0&&i+j<m; ++j) { if(s[i-j]!=s[i+j]) break; if(j*2+1>mx) { mx=j*2+1; x=p[i-j]; y=p[i+j]; } } for(int j=0; i-j>=0&&i+j+1<m; ++j) { if(s[i-j]!=s[i+j+1]) break; if(j*2+2>mx) { mx=j*2+2; x=p[i-j]; y=p[i+j+1]; } } } fout<<mx<<endl; for(int i=x; i<=y; ++i) fout<<buf[i]; fout<<endl; return 0;}
Prime Cryptarithm
一个非常简单的暴力搜索。判断一下长度还有该数字是否可以使用。
/*ID:kkkwjx1LANG:C++TASK:crypt1*/#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <map>#include <string>#define INF 0x7f7f7f7fusing namespace std;bool vis[10];bool Check(int val){ while(val) { int tmp=val%10; if(!vis[tmp]) return false; val=val/10; } return true;}int Get_L(int val){ int l=0; while(val) { l++; val=val/10; } return l;}int main(){ freopen("crypt1.in","r",stdin); freopen("crypt1.out","w",stdout); int n; scanf("%d",&n); int p[10]; int ans=0; memset(vis,0,sizeof(vis)); for(int i=0; i<n; ++i) { scanf("%d",&p[i]); vis[p[i]]=true; } for(int i=0; i<n; ++i) for(int ii=0; ii<n; ++ii) for(int iii=0; iii<n; ++iii) { int a=p[i]*100+p[ii]*10+p[iii]; for(int j=0; j<n; ++j) for(int jj=0; jj<n; ++jj) { int b=p[j]*10+p[jj]; int x=a*p[jj],y=a*p[j],z=a*b; if(Get_L(x)!=3) continue; if(Get_L(y)!=3) continue; if(Get_L(z)!=4) continue; if(Check(x)&&Check(y)&&Check(z)) ans++; } } printf("%d\n",ans); return 0;}
- USACO Chapter1-Getting started Section 1.3
- USACO Chapter1-Getting started Section 1.1
- USACO Chapter1-Getting started Section 1.2
- USACO Chapter1-Getting started Section 1.4
- 1.3 Getting Started
- USACO section 1.3
- USACO/milk Section 1.3
- USACO Section 1.3 题解
- USACO section 1.3.3
- USACO Section 1.3
- USACO Section 1.3 Wormholes
- USACO Section 1.3
- [USACO Training] Section 1.3
- USACO section 1.3 Wormholes
- USACO Section 1.3 Wormholes
- Getting started
- Getting Started
- Getting Started
- 动画的简单介绍
- Tomcat内存溢出的三种情况及解决办法分析
- 10,Objective-C语法之NSSet和NSMutableSet
- 【转】用 grep 恢复误删的文本文件
- 11, Objective-C语法property详解
- USACO Chapter1-Getting started Section 1.3
- 12,Objective-C语法之KVC的使用
- GoAgent设置RC4加密
- 写文件换行
- sublime配置全攻略
- [MacrayKV] An innovative parallel testing framework
- 13,Objective-C语法之KVO的使用
- 14,Objective-C语法之代码块(block)的使用
- LeetCode题解:N-Queens I and II