A題:http://www.codeforces.com/contest/69/problem/A
看題目看得好久,後來才發現是個很簡單的題,
題意: (0,0,0)處有一個點,給該點施加n個力,由三維座標形式給出,要求判斷最後該點是否平衡;
分析: 只需要將x,y,z三維座標的各個力累加判斷各自的和是否為0即可,注意必須每個維上的力的分量和為0,這裡很好cha人的,可惜我沒這麼做,如果做了說不定分就好高了;
/*Mar29,2011 4:55:30 PM yimao A-Young Physicist GNU C++ Accepted 30ms 1400 KB */<br />#include<stdio.h><br />#include<iostream><br />#include<algorithm><br />#include<string.h><br />#include<stdlib.h><br />#include<math.h><br />#include<vector><br />#include<map><br />#include<set><br />#include<functional><br />#define eps (1e-8)<br />#define pi (acos(-1.0))<br />#define stop while(1);<br />#define lowbit(x) (x&(-x))<br />#define maxint INT_MAX<br />#define maxlong 0xFFFFFFFFFFFFFFFLL<br />using namespace std;<br />int main()<br />{<br /> int n,x,y,z,X,Y,Z;<br /> while(cin>>n)<br /> {<br /> X=Y=Z=0;<br /> while(n--){<br /> cin>>x>>y>>z;<br /> X+= x,<br /> Y+= y,<br /> Z+= z;<br /> }<br /> if(X==0&&Y==0&&Z==0) puts("YES");<br /> else puts("NO");<br /> }<br /> //stop<br />}<br />/*<br />3<br />4 1 7<br />-2 4 -1<br />1 -5 -3<br />3<br />3 -1 7<br />-5 2 -4<br />2 -1 -3<br />*/<br />
B題:
【題意】
一個n(<=100)長度的地區,每個地區等距;然後是m個運動員,在不同的地區[l,r]跑,他們各自跑都是勻速的,每個人跑完各自的地區的時間是相同的,然後要求你賭每個地區的勝者,可以獲得該運動員的C值;問最後嫩得到的最大值是多少;
【分析】
開數組,t[x]:x地區內能跑的最小值;
c[x]: x地區內跑t[x]時間的那個運動員的C值,
直接對地區迴圈,最後累加c[x]即可;
/*Mar29,2011 5:12:01PM yimao B-Bets GNU C++ Accepted 30ms 1400KB*/<br />//http://www.codeforces.com/contest/69/problem/B<br />#include<stdio.h><br />#include<iostream><br />#include<algorithm><br />#include<string.h><br />#include<stdlib.h><br />#include<math.h><br />#include<vector><br />#include<map><br />#include<set><br />#include<functional><br />#define eps (1e-8)<br />#define pi (acos(-1.0))<br />#define stop while(1);<br />#define lowbit(x) (x&(-x))<br />#define maxint INT_MAX<br />#define maxlong 0xFFFFFFFFFFFFFFFLL<br />using namespace std;<br />int main()<br />{<br /> int n,m,l,r,tim,cost,i;<br /> int t[102],c[102];<br /> while(cin>>n>>m)<br /> {<br /> memset(c,0,sizeof(c));<br /> for(i=1;i<=n;i++) t[i]=2000000;<br /> while(m--){<br /> cin>>l>>r>>tim>>cost;<br /> for(i=l;i<=r;i++){<br /> if(tim<t[i]){<br /> t[i]=tim;<br /> c[i]=cost;<br /> }<br /> }<br /> }<br /> int s=0;<br /> for(i=1;i<=n;i++) s+= c[i];<br /> cout<<s<<endl;<br /> }<br />}<br />/*<br />4 4<br />1 4 20 5<br />1 3 21 10<br />3 3 4 30<br />3 4 4 20<br />8 4<br />1 5 24 10<br />2 4 6 15<br />4 6 30 50<br />6 7 4 20<br />*/
E題:
是一個可以用STL裡的map和set結合來寫的題目,非常高效的代碼,見我的日新博文;