ACM 第十七天

暑期热身赛

BAPC 2014
The 2014 Benelux Algorithm Programming Contest
 
B Button Bashing
 1 #include<stdio.h>
 2 #include<bits/stdc++.h>
 3 #include<algorithm>
 4 #include<math.h>
 5 #include<string.h>
 6 #include<queue>
 7 using namespace std;
 8 
 9 const int inf=999999999;
10 int a[20];
11 int vis[4000];
12 int tim,step,n,m;
13 struct Node
14 {
15     int step,time;
16 };
17 
18 void bfs()
19 {
20     queue <Node> q;
21     Node s;
22 
23     s.step=s.time=0;
24     vis[0]=1;
25     q.push(s);
26     while(!q.empty())
27     {
28         Node now=q.front();
29         q.pop();
30         if(now.time>=m)
31         {
32             int temp=now.time-m;
33             if(temp==tim)
34             {
35                 step=min(now.step,step);
36             }
37             if(temp<tim)
38             {
39                 tim=temp;
40                 step=now.step;
41             }
42         }
43         for(int i=1; i<=n; i++)
44         {
45             Node next;
46             next.step=now.step+1;
47             next.time=now.time+a[i];
48             if(next.time>3600)
49             {
50                 next.time=3600;
51             }
52             if(next.time>0 && !vis[next.time])
53             {
54                 vis[next.time]=1;
55                 q.push(next);
56             }
57         }
58     }
59 }
60 
61 int main()
62 {
63 
64     int t;
65     cin>>t;
66     while(t--)
67     {
68         cin>>n>>m;
69         for(int i=0; i<=3900; i++)
70             vis[i]=0;
71         for(int i=1; i<=n; i++)
72         {
73             cin>>a[i];
74         }
75         tim=step=inf;
76         if(m==0)
77         {
78             printf("0 0\n");
79             //continue;
80         }
81         else
82         {
83             bfs();
84             printf("%d %d\n",step,tim);
85         }
86     }
87     return 0;
88 }

 

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<string>
 4 #include<stdio.h>
 5 #include<string.h>
 6 #define MAX 0x7f7f7f7f
 7 #define N 100004
 8 using namespace std;
 9 typedef long long LL;
10 int cas,cass;
11 int n,m,lll,ans;
12 struct xxx
13 {
14     int x,y,z;
15 } a[N];
16 int t[N<<2];
17 bool cmp(xxx aa,xxx bb)
18 {
19     return aa.x<bb.x;
20 }
21 void change(int l,int r,int x,int c,int k)
22 {
23     if(l>r || x<l || x>r)return;
24     if(l==r)
25     {
26         t[k]=c;
27         return;
28     }
29     change(l,(l+r)>>1,x,c,k+k);
30     change((l+r)/2+1,r,x,c,k+k+1);
31     t[k]=min(t[k+k],t[k+k+1]);
32 }
33 int query(int l,int r,int a,int b,int k)
34 {
35     if(l>r || l>b || r<a)return MAX;
36     if(a<=l && r<=b)return t[k];
37     int x1=query(l,(l+r)>>1,a,b,k+k),x2=query((l+r)/2+1,r,a,b,k+k+1);
38     return t[k]=min(x1,x2);
39 }
40 int main()
41 {
42     int i,j,k;
43     for(scanf("%d",&cas); cas; cas--)
44 
45     {
46         ans=1;
47         memset(t,0x7f,sizeof t);
48         scanf("%d",&n);
49         for(i=1; i<=n; i++)
50             scanf("%d%d%d",&a[i].y,&a[i].z,&a[i].x);
51         sort(a+1,a+1+n,cmp);
52         change(1,n,a[1].y,a[1].z,1);
53         for(i=2; i<=n; i++)
54         {
55             j=query(1,n,1,a[i].y,1);
56             if(j>a[i].z)ans++;
57             change(1,n,a[i].y,a[i].z,1);
58         }
59         printf("%d\n",ans);
60     }
61     return 0;
62 }

 

 1 #include<stdio.h>
 2 #include<bits/stdc++.h>
 3 #include<math.h>
 4 #include<algorithm>
 5 #include<string.h>
 6 using namespace std;
 7 
 8 int main()
 9 {
10     int t,n;
11     double a,b,c;
12     cin>>t;
13     while(t--)
14     {
15         cin>>n;
16         int ans,shuchu;
17         ans=0;
18         double maxn=0;
19         while(n--)
20         {
21 
22             cin>>a>>b>>c;
23             double q=(double)(c+(b*b)/(4*a));
24             //cout<<q<<" ";
25             ans++;
26             if(q>maxn)
27             {
28                  shuchu=ans;
29             }
30             maxn=max(q,maxn);
31 
32         }
33         cout<<shuchu<<endl;
34     }
35     return 0;
36 }

 

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int t,n,x,y;
 9     int f[1005];
10     f[1]=0;
11     f[2]=1;
12     int i=3;
13     for(i=3; i<=46; i++)
14     {
15         f[i]=f[i-2]+f[i-1];
16     }
17 
18     cin>>t;
19     while(t--)
20     {
21         cin>>n;
22         bool bb=1;
23         for(i=46; i>2&&bb; i--)
24         {
25             for(int ty=1; ty<=1000000; ty++)
26             {
27                 if(ty*f[i]+f[i-1]>n)
28                 {
29                     break;
30                 }
31                 else if((n-ty*f[i])%f[i-1]==0 &&(n-ty*f[i])/f[i-1]<=ty)
32                 {
33                     y=ty;
34                     x=(n-ty*f[i])/f[i-1];
35                    bb=0;
36                     break;
37                 }
38 
39             }
40 
41        }
42        cout<<x<<" "<<y<<endl;
43     }
44     return 0;
45 }

 

  1 #include<stdio.h>
  2 #include<algorithm>
  3 #include<math.h>
  4 #include<queue>
  5 #include<string.h>
  6 #define Max(a,b) (a>b?a:b)
  7 #include<bits/stdc++.h>
  8 using namespace std;
  9 
 10 const int maxn=1e6;
 11 struct node
 12 {
 13     int x,y,p;
 14     node(int x=0,int y=0,int p=0):x(x),y(y),p(p) {}
 15 };
 16 char s[maxn],mp[205][105];
 17 
 18 int main()
 19 {
 20     int t,r,c;
 21     cin>>t;
 22     cout<<t<<endl;
 23 
 24     while(t--)
 25     {
 26         cin>>s;
 27         memset(mp,'#',sizeof mp);
 28         mp[101][0]='.';
 29         int minx=101,maxx=101,miny=0,maxy=0;
 30         node pi=node(101,0,0);
 31         for(int i=0; i<strlen(s); i++)
 32         {
 33             if(s[i]=='F')
 34             {
 35                 if(pi.p==0)
 36                     pi.y+=1;
 37                 if(pi.p==1)
 38                     pi.x-=1;
 39                 if(pi.p==2)
 40                     pi.y-=1;
 41                 if(pi.p==3)
 42                     pi.x+=1;
 43                 mp[pi.x][pi.y]='.';
 44             }
 45             else if(s[i]=='B')
 46             {
 47                 if(pi.p==0)
 48                     pi.y-=1;
 49                 if(pi.p==1)
 50                     pi.x+=1;
 51                 if(pi.p==2)
 52                     pi.y+=1;
 53                 if(pi.p==3)
 54                     pi.x-=1;
 55                 mp[pi.x][pi.y]='.';
 56                 pi.p=(pi.p+2)%4;
 57             }
 58             else if(s[i]=='L')
 59             {
 60                 if(pi.p==0)
 61                     pi.x-=1;
 62                 if(pi.p==1)
 63                     pi.y-=1;
 64                 if(pi.p==2)
 65                     pi.x+=1;
 66                 if(pi.p==3)
 67                     pi.y+=1;
 68                 mp[pi.x][pi.y]='.';
 69                 pi.p=(pi.p+1)%4;
 70             }
 71             else if(s[i]=='R')
 72             {
 73                 if(pi.p==0)
 74                     pi.x+=1;
 75                 if(pi.p==1)
 76                     pi.y+=1;
 77                 if(pi.p==2)
 78                     pi.x-=1;
 79                 if(pi.p==3)
 80                     pi.y-=1;
 81                 mp[pi.x][pi.y]='.';
 82                 pi.p=(pi.p+3)%4;
 83             }
 84             minx=min(minx,pi.x);
 85             maxx=max(maxx,pi.x);
 86             miny=min(miny,pi.y);
 87             maxy=max(maxy,pi.y);
 88 
 89         }
 90         cout<<(maxx-minx+3)<<' '<<(maxy-miny+2)<<endl;
 91         //cout<<maxy<<miny;
 92         for(int i=minx-1; i<=maxx+1; i++)
 93         {
 94             for(int j=0; j<=maxy+1; j++)
 95             {
 96                 printf("%c",mp[i][j]);
 97             }
 98             printf("\n");
 99         }
100 
101     }
102     return 0;
103 }

 

posted @ 2018-08-23 12:56  白雪儿  Views(142)  Comments(0Edit  收藏  举报