nenu contest
分类:
IT文章
•
2022-07-29 00:33:28
http://vjudge.net/vjudge/contest/view.action?cid=54393#overview
A n^2能过 对第二个n我二分了一下,快了一点点,nlogn
1 #include<cstdio>
2 #include<algorithm>
3 using namespace std;
4 double judge[128];
5 int main(){
6 for(int i=0;i<100;i++){
7 judge[i]=i*10;
8 }
9 double now;
10 int n,s;
11 while(~scanf("%d%d",&n,&s)){
12 int sum=0;
13 for(int i=0;i<n;i++){
14 scanf("%lf",&now);
15 int L=lower_bound(judge,judge+100,now)-judge;
16 if(judge[L]>now) L--;
17 if(judge[L]<=now&&now<=judge[L]+5) sum++;
18 }
19 printf("%.1f
",sum*(60+0.2*s));
20 }
21 return 0;
22 }
View Code
A LEE的on的方法也很值得借鉴,竟然比我二分的慢,不知为何,数据小吧
1 #include<cstdio>
2 const double eps = 1e-8;
3 int main() {
4 int n, s, cnt;
5 double t;
6 while (~scanf("%d%d", &n, &s)) {
7 cnt = 0;
8 while (n--) {
9 scanf("%lf", &t);
10 int T = int(t);
11 if (T % 10 < 5 || (T % 10 == 5 && (t-T) < eps)) {
12 cnt++;
13 }
14 }
15 printf("%.1f
", cnt*(60 + 0.2*s));
16 }
17 return 0;
18 }
View Code
B %X scanf printf 16进制输入输出
1 #include<cstdio>
2 #include<cstring>
3 const int M=1010;
4 char op[M];
5 int main(){
6 int t,sa,sb;
7 while(~scanf("%d",&t)){
8 while(t--){
9 scanf("%X%X",&sa,&sb);
10 getchar();
11 gets(op);
12 int lp=strlen(op);
13 for(int i=0;i<lp;i++){
14 if(op[i]=='8'){
15 if(op[i+3]=='A'){
16 sa+=sb;
17 }
18 else{
19 sb+=sa;
20 }
21 i+=8;
22 }
23 else if(op[i]=='F'){
24 if(op[i+3]=='A'){
25 sa+=sa;
26 }
27 else{
28 sb+=sb;
29 }
30 i+=5;
31 }
32 }
33 printf("%X %X
",sa,sb);
34 }
35 }
36 return 0;
37 }
View Code
1 #include<cstdio>
2 #include<cstring>
3 #include<iostream>
4 #include<map>
5 #define mt(a,b) memset(a,b,sizeof(a))
6 using namespace std;
7 const int M=128;
8 class UnionFindSet { //并查集
9 int par[M];
10 public:
11 void init() {
12 mt(par,-1);
13 }
14 int getroot(int x) {
15 int i=x,j=x,temp;
16 while(par[i]>=0) i=par[i];
17 while(j!=i) {
18 temp=par[j];
19 par[j]=i;
20 j=temp;
21 }
22 return i;
23 }
24 bool unite(int x,int y) {
25 int p=getroot(x);
26 int q=getroot(y);
27 if(p==q)return false;
28 if(par[p]>par[q]) {
29 par[q]+=par[p];
30 par[p]=q;
31 } else {
32 par[p]+=par[q];
33 par[q]=p;
34 }
35 return true;
36 }
37 }gx;
38 map<string,int> mp;
39 string str;
40 int main(){
41 int n,m;
42 char op[32];
43 while(~scanf("%d",&n)){
44 bool flag=false;
45 gx.init();
46 mp.clear();
47 for(int i=1;i<=n;i++){
48 scanf("%d",&m);
49 while(m--){
50 flag=true;
51 scanf("%s",op);
52 str=(string)op;
53 if(!mp[str]){
54 mp[str]=i;
55 }
56 else{
57 gx.unite(mp[str],i);
58 }
59 }
60 }
61 if(!flag){
62 printf("%d
",n);
63 continue;
64 }
65 int ans=0;
66 for(int i=1;i<=n;i++){
67 if(i==gx.getroot(i)) ans++;
68 }
69 printf("%d
",ans-1);
70 }
71 return 0;
72 }