2012 金华 现场赛
来源:互联网 发布:c语言入门之后学什么 编辑:程序博客网 时间:2024/06/02 12:42
A 水题
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define mod 31536000#define eps 1e-10typedef __int64 ll;struct node{ int a,b; double id;}M[500010];int cmp(node a,node b){ return (long long)a.a*b.b<(long long)b.a*a.b;}long long sum,time;int main(){ int i,j,k,n; while(scanf("%d",&n)!=EOF) { if(n==0) break; for(i=0;i<n;i++) { scanf("%d%d",&M[i].a,&M[i].b); } sort(M,M+n,cmp); sum=0;time=0; for(i=0;i<n;i++) { if(M[i].a==0) continue; sum+=(long long)(M[i].a+(long long)time*M[i].b); sum%=mod; time+=(long long)(M[i].a+(long long)time*M[i].b); time%=mod; } //rintf("%lld %lld",time,sum); printf("%lld\n",sum%mod); } return 0;}
D 枚举每一个角度,不知道是不是数据水,枚举1000次就可以了
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const double PI=acos(-1.0);const double g = 9.8;double H,l1,l2,r1,r2;int n;double a[300];int cal(double x){ int ret = 0; for(int i = 0;i<n;i++){ double vx = a[i]*cos(x); double vy = a[i]*sin(x); double V = sqrt(2.0*g*H+vy*vy); double t = (V-vy)/g; double d = 1.0*t*vx; if(d<=r2&&d>=l2) return 0; if(d<=r1&&d>=l1) ret++; } return ret;}int main(){ while(scanf("%d",&n)&&n!=0){ scanf("%lf%lf%lf%lf%lf",&H,&l1,&r1,&l2,&r2); for(int i=0;i<n;i++){ scanf("%lf",&a[i]); } double add = PI/1000; int ans = 0; for(double i=-PI/2;i<=PI/2;i+=add){ ans = max(ans,cal(i)); } printf("%d\n",ans); }}
I 签到题 所有的平方之和
#include <cstdio>int a[1000];int main(){ int n; while(scanf("%d",&n)&&n!=0){ int ans = 0; for(int i = 0;i<n;i++){ scanf("%d",&a[i]); ans += a[i]*a[i]; } printf("%d\n",ans); }}
J 题意没有看 直接样例脑补了一下
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n,m,k;int p;int vis1[2222];int vis2[2222];char str1[20];char str2[20];int main(){ while(scanf("%d%d%d",&n,&m,&k)&&n+m+k!=0){ scanf("%d",&p); int ans = 0; memset(vis1,0,sizeof(vis1)); memset(vis2,0,sizeof(vis2)); int a,b; while(p--){ scanf("%s%d%s%d",str1,&a,str2,&b); if(str1[0]=='c') {vis1[b]++;ans+=k;} else {vis2[a]++,ans+=n;} } for(int i=1;i<=m;i++){ ans-=vis1[i]*vis2[i]; } printf("%d\n",n*m*k-ans); }}
K 题意开始看错了 ,应该是在每一次时间结束才转弯,中间过程碰到是不转弯的
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n;int time;struct Point{int dir;int x,y;int s,t;void go_next() {if(dir==0){x-=s;if(x<1) {x=2-x;dir=2;}}else if(dir==1){y-=s;if(y<1) {y=2-y;dir=3;}}else if(dir==2){x+=s;if(x>n) {x=2*n-x;dir=0;}}else{y+=s;if(y>n) {y=n*2-y;dir=1;}}}}T,J;int get_dir(char c){if(c=='N') return 0;else if(c=='W') return 1;else if(c=='S') return 2;else return 3;}int main(){while(scanf("%d",&n)&&n!=0){T.x=T.y=1;J.x=J.y=n;char op[10];scanf("%s%d%d",op,&T.s,&T.t);T.dir=get_dir(op[0]);scanf("%s%d%d",op,&J.s,&J.t);J.dir=get_dir(op[0]);scanf("%d",&time);for(int i=1;i<=time;i++){T.go_next();J.go_next();if(T.x==J.x&&T.y==J.y){swap(T.dir,J.dir);continue;}if(i%T.t==0) T.dir=(T.dir+1)%4;if(i%J.t==0) J.dir=(J.dir+1)%4;}printf("%d %d\n",T.x,T.y); printf("%d %d\n",J.x,J.y);}return 0;}
0 0
- 2012金华现场赛
- 2012 金华 现场赛
- 2012 金华赛区现场赛
- hdu4445 CRAZY TANK 2012金华赛区现场赛D题
- 2012金华现场赛四个水题题解(积分赛第四场)
- ACM/ICPC 2012金华regional现场赛C题 hdu4444 离散化、最短路
- 总结两发。。。CF#147DIV.2 & 2012ACM-ICPC金华赛区现场赛
- HDU 4445Crazy Tank 2012金华现场赛D题(暴力枚举)
- 2012金华网络赛
- HDU 4449 Building Design【金华赛区现场赛H题】
- 2012网赛金华赛区
- 2012 金华网络赛小记
- 2012金华网络赛赛后【缺ABC】
- 2012金华邀请赛总结
- 2012金华赛区小结
- hdu 4404 Worms (2012金华网络赛E题)
- 2012天津现场赛
- 2012杭州现场赛
- U-Boot添加命令的方法
- MySQL常见查询语句
- char类型使用STL时压入和弹出的不同
- 经典代码 南阳 oj 动态规划 背包问题
- codevs1006
- 2012 金华 现场赛
- 黑马程序员-----------设计模式
- 解决svn working copy locked问题
- 郁闷中创建虚拟网卡
- useradd命令详解
- ARCGIS Server加载地图
- 详解 CSS 属性 - 伪类和伪元素的区别
- java 使用JDesktopPane
- 辗转相除法