2014新生暑假个人排位赛01
来源:互联网 发布:厦门航空 知乎 编辑:程序博客网 时间:2024/05/16 18:20
A. 学姐的桌面 2014新生暑假个人排位赛01
题目描述
学姐在加入集训队之后,学习了使用ubuntu系统来做题,但是没有了360电脑管家,学姐再也没办法看到她的飞速电脑开机到底虐了全国多少人。作为一个电脑高手,学姐花了几分钟黑到了360的数据库拿到了全国360用户的开机时间,现在学姐想自己算算到底打败了百分之多少的人?
输入格式
输入有多组数据。首先给出数据组数
输出格式
每组数据一行,输出学姐打败了全国百分之多少的用户,精确到小数点后两位。
输入样例
15 31 1 2 2 3
输出样例
80.00%
/*USER_ID: test#wlwlxggPROBLEM: 413SUBMISSION_TIME: 2014-07-14 13:05:55*/#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <vector> using namespace std; int main(){ int t; scanf("%d",&t); while(t--){ int n,m; scanf("%d%d",&n,&m); int i=n,ans=0; while(i--){ int x; scanf("%d",&x); if(x<m) ans++; } printf("%.2f%%\n",ans*1.0/n*100); } return 0;}
水题,没啥说的。
B. 学姐去学车 2014新生暑假个人排位赛01
题目描述
趁着放假,学姐去学车好带学弟去兜风。但是学车真的很辛苦,每天五点半就要起床赶班车,但是学姐的教练更辛苦,他们要相同的时间到而且日日如此。于是温柔的学姐关切的问了他们的休息情况,教练告诉她,他们两个人倒班教学姐,每个教练每上
输入格式
输入开始为数据组数
输出格式
对于每个询问
输入样例
15 336913
输出样例
212
/*USER_ID: test#wlwlxggPROBLEM: 414SUBMISSION_TIME: 2014-07-14 16:05:25*/#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <vector> using namespace std; int main(){ int t; scanf("%d",&t); while(t--){ int n,m; scanf("%d%d",&n,&m); int q; scanf("%d",&q); while(q--){ int x; scanf("%d",&x); if(n==1){ if(x%2==0) printf("2\n"); else printf("1\n"); continue; } if(x<=n) printf("1\n"); else { x=x-n; if(x%(n+1)>=1&&x%(n+1)<=m) printf("2\n"); else printf("1\n"); } } } return 0;}
依旧水题。
C. 学姐的学弟 2014新生暑假个人排位赛01
题目描述
学姐正在写作业,但是她写着写着就开始想学弟,走神的她就开始在纸上画圈圈。这时学弟突然出现了,好奇的学弟问学姐在做什么,惊慌之下,学姐随口说想算一下这些圆覆盖的面积为多少。学弟顿时非常仰慕学姐,但是学姐突然意识到自己不会做,为了自己能给学弟留下好印象,她来求助你帮她算出来这些圆覆盖的面积。
为了简化问题,我们假设所有圆的半径都为1。
输入格式
输入有多组数据。开头为一个整数
输出格式
输出一个数,表示面积并,精确到小数点后五位。
输入样例
121 12 1
输出样例
5.05482
/*USER_ID: test#wlwlxggPROBLEM: 415SUBMISSION_TIME: 2014-07-24 21:44:33*/#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std; int a[200][200];double pi=acos(-1.0); int main(){ int t; scanf("%d",&t); while(t--){ int n; scanf("%d",&n); memset(a,0,sizeof(a)); int x,y; for(int i=0;i<n;i++){ scanf("%d%d",&x,&y); a[x][y]=1; } int n1=0,n2=0,n3=0; for(int i=0;i<=100;i++) for(int j=1;j<=101;j++){ if(((a[i][j]&&a[i+1][j-1])||(a[i][j-1]&&a[i+1][j]))&&(a[i][j]+a[i+1][j-1]+a[i][j-1]+a[i+1][j]==2)) n3++; if(a[i][j]+a[i+1][j-1]+a[i][j-1]+a[i+1][j]==1) n1++; if(a[i][j]+a[i+1][j-1]+a[i][j-1]+a[i+1][j]==2&&!((a[i][j]&&a[i+1][j-1])||(a[i][j-1]&&a[i+1][j]))) n2++; if(a[i][j]+a[i+1][j-1]+a[i][j-1]+a[i+1][j]>2) n3++; } double ans; ans=n3*1.0+n1*pi/4+n2*(pi/6+sqrt(3.0)/4); printf("%.5lf\n",ans); } return 0;}
这个说一下,这个题挺巧的,就是整数点和半径都为一,所以可以枚举边长为一的正方形。分别计算面积。就简化了很多。
D. BLOCKS 2014新生暑假个人排位赛01
题目描述
给定一个
输入格式
有多组数据,EOF结束。
输出格式
每行对应一个answer
输入样例
6 8.....#.###.....###.....#.......##......##..#...#6 8.....#.###.....####...##.......###.....##..#...#
输出样例
There are 5 ships.So Sad
/*USER_ID: test#wlwlxggPROBLEM: 407SUBMISSION_TIME: 2014-07-24 23:53:41*/#include <iostream>#include <cstdio>#include <queue>#include <map>#include <algorithm> using namespace std; queue< pair<int,int> > q;char str[1010][1010];int n,m;int dx[]={1,-1,0,0},dy[]={0,0,1,-1}; bool bfs(int x,int y){ str[x][y]='0'; int num=1,minx=x,miny=y,maxx=x,maxy=y; q.push(make_pair(x,y)); while(!q.empty()){ int mx=q.front().first,my=q.front().second; //cout<<mx<<" "<<my<<endl; q.pop(); for(int i=0;i<4;i++){ int xx=mx+dx[i],yy=my+dy[i]; if(xx>=0&&xx<n&&yy>=0&&yy<m&&str[xx][yy]=='#'){ num++; minx=min(xx,minx); miny=min(yy,miny); maxx=max(xx,maxx); maxy=max(yy,maxy); str[xx][yy]='0'; q.push(make_pair(xx,yy)); } } } //cout<<num<<" "<<(maxx-minx+1)*(maxy-miny+1)<<endl; if(num==(maxx-minx+1)*(maxy-miny+1)) return true; else return false;} int main(){ while(~scanf("%d%d",&n,&m)){ int num=0,ok=0; for(int i=0;i<n;i++) scanf("%s",str[i]); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(str[i][j]=='#'){ //cout<<i<<" "<<j<<endl; if(bfs(i,j)) num++; else { puts("So Sad"); ok=1; break; } } } if(ok) break; } if(!ok) printf("There are %d ships.\n",num); } return 0;}
bfs,找到每个联通块左上角和右下角的左面,计算面积,如果等于“#”就是啦。不等于就不是咯。
E. 数的关系 2014新生暑假个人排位赛01
题目描述
用关系“<”和“=”将3个数A、B和C依序排列时有13种不同的序关系:
现在输入数字的个数,要求你给出上述关系的数目。
数的个数不大于100
输入格式
多组数据,EOF结束
每行一个输入
输出格式
对于每个输入,输出一行,即对应答案
输入样例
3
输出样例
13
/*USER_ID: test#wlwlxggPROBLEM: 409SUBMISSION_TIME: 2014-07-26 21:15:54*/#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <cstdlib>#include <cmath>using namespace std; const int maxn = 200; struct bign{ int len, s[maxn]; bign() { memset(s, 0, sizeof(s)); len = 1; } bign(int num) { *this = num; } bign(const char* num) { *this = num; } bign operator = (int num) { char s[maxn]; sprintf(s, "%d", num); *this = s; return *this; } bign operator = (const char* num) { len = strlen(num); for(int i = 0; i < len; i++) s[i] = num[len-i-1] - '0'; return *this; } string str() const { string res = ""; for(int i = 0; i < len; i++) res = (char)(s[i] + '0') + res; if(res == "") res = "0"; return res; } bign operator + (const bign& b) const{ bign c; c.len = 0; for(int i = 0, g = 0; g || i < max(len, b.len); i++) { int x = g; if(i < len) x += s[i]; if(i < b.len) x += b.s[i]; c.s[c.len++] = x % 10; g = x / 10; } return c; } void clean() { while(len > 1 && !s[len-1]) len--; } bign operator * (const bign& b) { bign c; c.len = len + b.len; for(int i = 0; i < len; i++) for(int j = 0; j < b.len; j++) c.s[i+j] += s[i] * b.s[j]; for(int i = 0; i < c.len-1; i++){ c.s[i+1] += c.s[i] / 10; c.s[i] %= 10; } c.clean(); return c; } bign operator - (const bign& b) { bign c; c.len = 0; for(int i = 0, g = 0; i < len; i++) { int x = s[i] - g; if(i < b.len) x -= b.s[i]; if(x >= 0) g = 0; else { g = 1; x += 10; } c.s[c.len++] = x; } c.clean(); return c; } bool operator < (const bign& b) const{ if(len != b.len) return len < b.len; for(int i = len-1; i >= 0; i--) if(s[i] != b.s[i]) return s[i] < b.s[i]; return false; } bool operator > (const bign& b) const{ return b < *this; } bool operator <= (const bign& b) { return !(b > *this); } bool operator == (const bign& b) { return !(b < *this) && !(*this < b); } bign operator += (const bign& b) { *this = *this + b; return *this; }}; istream& operator >> (istream &in, bign& x) { string s; in >> s; x = s.c_str(); return in;} ostream& operator << (ostream &out, const bign& x) { out << x.str(); return out;} bign dp[120][120];bign ans; int main(){ for(int i=0;i<=100;i++) for(int j=0;j<=100;j++) dp[i][j]="0"; for(int i=0;i<=100;i++) dp[i][0]="1"; for(int i=1;i<=100;i++) for(int j=1;j<i;j++) for(int k=0;k<=j;k++) dp[i][j]+=(dp[i-1][j]+dp[i-1][j-1]); int n; while(~scanf("%d",&n)){ ans="0"; for(int i=0;i<n;i++) ans+=dp[n][i]; cout<<ans<<endl; } return 0;}
弱渣不会java,就借了io07大神的高精度模板。
- BUPT 2014新生暑假个人排位赛01
- 【总结】2014新生暑假个人排位赛01
- 7.14-2014新生暑假个人排位赛01
- 2014新生暑假个人排位赛01
- 2014新生暑假个人排位赛01 B. 学姐去学车
- 2014新生暑假个人排位赛01 D. BLOCKS
- 2014新生暑假个人排位赛01 E. 数的关系
- BUPT 2014新生暑假个人排位赛02
- 【总结】2014新生暑假个人排位赛03
- 【总结】2014新生暑假个人排位赛02
- BUPT 2014新生暑假个人排位赛03
- 7.16-2014新生暑假个人排位赛02
- 7.18-2014新生暑假个人排位赛03
- BUPT 2014新生暑假个人排位赛04
- 7.21-2014新生暑假个人排位赛04
- 7.23-2014新生暑假个人排位赛05
- BUPT 2014新生暑假个人排位赛05
- 2014新生暑假个人排位赛02
- acegi配置文件:applicationContext-acegi-security.xml
- POJ 1273 Drainage Ditches (网络最大流)
- Ubuntu下的NFS服务配置和搭建
- hdu 2255 奔小康赚大钱(KM算法)
- 今天开了csdn博客
- 2014新生暑假个人排位赛01
- jbpm级联删除问题
- [Google]create a Random number generator
- Makefile讲义(7)——使用函数
- 查看用户登录系统的日志
- XAMPP——开发网站的起点
- 进程间通信______管道
- javaScript(一)
- hdu 4548 美素数