USACO 2012 February Contest, Bronze Division
来源:互联网 发布:java jlabel dialog 编辑:程序博客网 时间:2024/06/14 17:26
终于没有辜负达尔戈的期望了,1000分。
不出意外的话,3月的应该是silver了。
2月份加油!
A题
想法题。
枚举折叠点,有两类: knot点和非knot点,然后对于每个枚举的点进行for循环判断即可。
#include <cstdio>#include <cstring>#include <cmath>#include <iostream>#include <algorithm>using namespace std;#define MM(a,b) memset(a,b,sizeof(a));typedef unsigned long long u64;typedef long long lld;#define maxn 10050bool f[maxn];int pos[200];int main(){ freopen("folding.in","r",stdin); freopen("folding.out","w",stdout); MM(f,0); int n,L,i,j; cin>>n>>L; for(i=1;i<=n;++i){ cin>>pos[i]; f[ pos[i] ]=1; } sort( pos+1, pos+1+n ); int ans=0; for(i=2;i<n;++i){ int p= i-1, q= i+1; for(;p>0&&q<=n;p--,q++){ if( pos[q]-pos[i] != pos[i]-pos[p] ) break; } if( p<=0 || q>n ){ ans++; //printf("o %d\n", pos[i]); } } for(i=1;i<n;++i){ double mid= pos[i]+ (pos[i+1]-pos[i]+0.0)/2.0; int p= i,q=i+1; for(;p>0&&q<=n;p--,q++){ if( pos[q]-mid != mid-pos[p] ) break; } if( p<=0 || q>n ){ ans++; //printf("o %.lf\n", mid); } } cout<<ans<<endl;}
B题
最多10个矩形的面积并。
我是 矩形切割 做的,记得矩形切割还是去年暑假学会的。
所有的x,y排序后去重。对每个给定的矩形,枚举小矩形,mark[x][y]。...
C题
递归,之前有做过类似的题目,要先统计些数据再递归,注意细节,注意分析
#include <cstdio>#include <cstring>#include <cmath>#include <iostream>#include <algorithm>using namespace std;#define MM(a,b) memset(a,b,sizeof(a));typedef unsigned long long u64;typedef long long lld;#define maxn 100lld a[maxn]={3,10,25,56,119,246, 501, 1012, 2035, 4082, 8177, 16368, 32751, 65518, 131053, 262124, 524267, 1048554, 2097129, 4194280, 8388583, 16777190, 33554405, 67108836, 134217699, 268435426, 536870881, 1073741792 //a[27]= 1073741792};void solve(lld n,int t){ if(t==0){ if(n==1) puts("m"); else puts("o"); return; } if( n<= (a[t-1]+3+t) ){ if( n==a[t-1]+1 ) puts("m"); else puts("o"); return; } else{ n-= (a[t-1]+3+t); for(int i=0;;++i){ if( n<a[i] ){ solve( n, i ); break; } } //solve(n-a[t-1]-3-t, t-1); }}int main(){ freopen("moo.in","r",stdin); freopen("moo.out","w",stdout); /*freopen("out","w",stdout); a[0]=3; for(int i=1;;++i){ a[i]= 2*a[i-1]+3+i; cout<<i<<" "<<a[i]<<endl; if( a[i]>1000000000 ) break; }*/ lld n; int i; while(cin>>n){ for(i=0;;++i){ if( n<a[i] ) break; } solve(n,i); }}
- USACO 2012 February Contest, Bronze Division
- USACO 2012 January Contest, Bronze Division
- USACO 2016 FEBRUARY CONTEST, BRONZE PROBLEM 1. MILK PAILS
- USACO 2016 February Contest, Bronze Problem 2. Circular Barn
- USACO 2016 February Contest, Bronze Problem 3. Load Balancing
- [USACO] OPEN11 Bronze Division
- USACO 2015 February CONTEST,Silver&Gold Division Solution
- 【C++心路历程33】【USACO 2016 February Contest, Bronze Problem 3.】 Load Balancing(加难)
- USACO 2012 March Contest, Silver Division
- USACO 2012 January Contest, Silver Division Solution
- USACO 2012 January Contest, Gold Division Solution
- USACO 2014 February Contest, Silver
- USACO 2017 February Contest Silver
- USACO 2013 March contest Bronze level 总结
- USACO 2012 December Contest, Bronze Problem 1. Meet and Greet (模拟)
- 2011 February Bronze
- USACO 2016 JANUARY CONTEST, BRONZE PROBLEM 1. PROMOTION COUNTING
- 【贪心】[USACO 2015 February Contest, Gold]Circular Barn
- 排序算法复习之——内部排序算法之——交换排序
- 解析常用加密算法
- Android学习笔记之网络接口(Http接口,Apache接口,Android接口)
- 基于IIS/ASP.NET开发的大型网站汇总(备查)
- Ubuntu下安装Qt环境及Qt Creator开发工具
- USACO 2012 February Contest, Bronze Division
- 素数筛选——爱拉托逊斯筛选法
- html5的小游戏和Java版的dota转换器
- oracle04
- hello
- 关于java中连接sqlite的有关问题
- oracle05
- 有知道爱普生的请进解决思路
- POJ 3438 Look and Say(我的水题之路——N个M的队列)