HIT_Training20140522
来源:互联网 发布:c界面编程怎么写 编辑:程序博客网 时间:2024/04/30 06:35
全场有9个题可以做。
训练地址
A题,水题。注意细节。
B题。注意读题,然后排序两次就ok了。
C题。不会。
D题。理想气体状态方程。一直wa不过,忽略了pV=nrT如果等式两边同时有两个0的话等式在一切情况都成立。
E题。dancling links。
F题。圆面积交,乱搞就对了。居然因为模板错误而没有过掉。
#include <iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<string>#include<cmath>#include<vector>#include<algorithm>using namespace std;#define ll long long#define maxn 1000003#define maxm#define eps#define pp#define inf 0x3f3f3f3f#define re freopen("in.txt","r",stdin)#define PI acos(-1.0)//double area(double dis,double r1,double r2){// if(r1+r2<dis)return 0;// double ans=0;// dis/=2;// double ta=sqrt(r1*r1-dis*dis);// double alpha1=2*acos(dis/r1);// double tran1=dis*ta;// double shan1=alpha1*r1*r1/2;//// double tb=sqrt(r2*r2-dis*dis);// double alpha2=2*acos(dis/r2);// double tran2=dis*tb;// double shan2=alpha2*r2*r2/2;//// return shan1+shan2-tran1-tran2;//}double area(double d, double r1, double r2){ if (d>=r1+r2) return 0; if (r2<r1) swap(r1, r2); if (d<=r2-r1) return PI*r1*r1; double a = d, b = r1, c = r2; double cta1 = acos((a * a + b * b - c * c) / 2 / (a * b)), cta2 = acos((a * a + c * c - b * b) / 2 / (a * c)); double s1 = r1*r1*cta1 - r1*r1*sin(cta1)*(a * a + b * b - c * c) / 2 / (a * b); double s2 = r2*r2*cta2 - r2*r2*sin(cta2)*(a * a + c * c - b * b) / 2 / (a * c); return s1 + s2;}int main(){ // re; double d,r1,R1,r2,R2; cin>>d>>r1>>R1>>r2>>R2; double total=area(0,R1,R1)-area(0,r1,r1)+area(0,R2,R2)-area(0,r2,r2); double sub=area(d,R1,R2)-area(d,R1,r2)-(area(d,r1,R2)-area(d,r1,r2)); total-=sub; printf("%.6lf\n",total); return 0;}
G题。贪心。每次过河的时候四个四个一组考虑。可以每次用最小的带最大的过去最小的再回来,也可以最小的两个故去,最小的回来,最大的两个过去,次小的回来。
#include <iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<string>#include<cmath>#include<vector>#include<algorithm>using namespace std;#define ll long long#define maxn 105#define maxm#define eps#define pp#define inf 0x3f3f3f3f#define re freopen("in.txt","r",stdin)#define pi acos(-1.0)int a[maxn];int ans=0;void deal(int n) { if(n==1)ans+=a[1]; else if(n==2)ans+=a[2];//printf("%d\n",a[1]); else if(n==3)ans+=a[3]+a[1]+a[2];//printf("%d\n",a[0]+a[1]+a[2]); else { if(2*a[2]>a[1]+a[n-1]) ans+=a[n-1]+2*a[1]+a[n]; else ans+=2*a[2]+a[1]+a[n]; deal(n-2); }}int main() { int n; //re; cin>>n; for(int i=1; i<=n; i++) cin>>a[i]; sort(a+1,a+1+n); ans=0; deal(n); printf("%d\n",ans); return 0;}
H题,不会。
I题。裸的最小二乘法。
#include <iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<string>#include<cmath>#include<vector>using namespace std;#define ll long long#define maxn 10005#define maxm#define eps#define pp#define inf 0x3f3f3f3f#define re freopen("in.txt","r",stdin)#define pi acos(-1.0)double a[maxn];int main(){ int n; double xb=0,yb=0; double sx,sy; double tmp=0; double dx=0; cin>>n; for(int i=1;i<=n;i++){ scanf("%lf",&a[i]); yb+=a[i]; xb+=i; dx+=i*i; tmp+=a[i]*i; } sx=xb; xb/=n; yb/=n; double b=(tmp-n*xb*yb)/(dx-n*xb*xb); printf("%lf %lf\n",b+yb-b*xb,b); return 0;}
J题。不会。
0 0
- HIT_Training20140522
- hdu-1671 Phone List
- BT study
- 第七届河南省ACM大学生程序设计大赛 A.物资调度
- Eclipse使用ctrl复制 粘贴很卡
- uniq { |e| ...}
- HIT_Training20140522
- 每个程序员都必读的10篇文章
- BeanCreationException:Error creating bean with name 'sessionFactory' defined in file ...
- Mac下cocos2dx3.1用Cocos IDE写的Lua binding篇01
- qt for android搭建碰到问题及解决办法分享。
- codeforces 158B Taxi(贪心小水题)
- Code Hunt (Microsoft Research)
- 一个iOS 框架介绍:MKNetworkKit
- svn版本库创建,本地文件副本生成使用