USACO Chapter 2 Section 2.1

准备期末考试 停了一个月……现在开始继续刷

 

 

 1 /*
 2 ID:xiekeyi1
 3 PROG:castle
 4 LANG:C++
 5 */
 6 #include<bits/stdc++.h>
 7 using namespace std ;
 8 const int maxn = 55;
 9 
10 int graph[maxn][maxn][5];
11 int roomsize[maxn*maxn] ;
12 int vis[maxn][maxn];
13 int m , n , color , maxsize ; 
14 int dx[] = { 1 ,  0 , -1 , 0 } ;
15 int dy[] = { 0 , 1 , 0 , -1 };
16 int nowsize ; 
17 int ans_row , ans_col ; 
18 char dir ; 
19 void scan()
20 {
21     cin >> m >> n ;
22     for( int i = 1 ; i <= n ; i++)
23         for( int j = 1 ; j <= m ; j++)
24         {
25             int t ;
26             cin >> t ;
27             for( int  k = 3 ; k >= 0 ; k--)
28                 graph[i][j][k] = t % 2 , t = t >> 1 ;
29         }
30 }
31 
32 void floodfill( int x , int y )
33 {
34     vis[x][y] = true ;
35     roomsize[color]++;
36     graph[x][y][4] = color ; 
37     for( int i = 0 ; i < 4 ; i++)
38     {
39         int nx = x + dx[i] ;
40         int ny = y + dy[i];
41         if( nx < 1 || ny < 1 || nx > n || ny > m ) continue ;
42         if( vis[nx][ny] || graph[x][y][i] ) continue ;
43         floodfill(nx,ny);
44     }
45 }
46 
47 void merge( int x , int y )
48 {
49     int sum = 0 ;
50     if( x >= 2 && graph[x-1][y][4] != graph[x][y][4] )
51     {
52         sum = roomsize[ graph[x-1][y][4] ] + roomsize[ graph[x][y][4] ] ;
53         if( sum > maxsize)
54             maxsize=sum,ans_row=x,ans_col=y,dir='N' ; 
55     }
56     if( y < m && graph[x][y+1][4] != graph[x][y][4] )
57     {
58         sum = roomsize[ graph[x][y+1][4] ] + roomsize[ graph[x][y][4] ] ;
59         if( sum > maxsize )
60             maxsize = sum , ans_row = x , ans_col = y , dir = 'E' ;
61     }
62 }
63 
64 int main()
65 {
66     freopen("castle.in","r",stdin);
67     freopen("castle.out","w",stdout);
68     scan();
69     for( int i = 1 ; i <= n ; i++)
70         for( int j = 1 ; j <= m ; j++)
71         {
72             if( !vis[i][j] )
73             {
74                 roomsize[ color ] = 0 ;
75                 floodfill( i , j );
76                 color++;
77             }
78         }
79     for( int i = 0 ; i < color ; i++)
80         nowsize = max( nowsize , roomsize[ i ] ) ; 
81     for( int i = 1 ; i <= m ; i++)
82         for( int j = n  ; j >= 1 ; j--)
83             merge(j,i);
84 
85     cout << color << endl << nowsize << endl << maxsize << endl
86          << ans_row << ' ' << ans_col << ' ' << dir << endl ;
87     return 0 ;
88 }
1castle

 

 

 

 1 /*
 2 ID:xiekeyi1
 3 PROG:frac1
 4 LANG:C++
 5 */
 6 
 7 #include<bits/stdc++.h>
 8 using namespace std ;
 9 const int maxn = 170 ; 
10 struct node
11 {
12     int fenzi , fenmu ;
13     long double value ;
14 }x[maxn*maxn];
15 
16 bool operator < ( struct node a , struct node b ) 
17 {
18     return a.value < b.value ;
19 }
20 
21 int gcd( int a , int b )
22 {
23     if( b == 0 )
24         return a ;
25     if( a == 0 )
26         return b ; 
27     else
28         return gcd( b , a % b ) ;
29 }
30 
31 int main()
32 {
33     freopen("frac1.in","r",stdin);
34     freopen("frac1.out","w",stdout);
35     int n ;
36     cin >> n ;
37     int cnt = 0 ; 
38     for( int i = 0 ; i <= n ; i++)
39         for( int j = 1 ; j <= n ; j++)
40             if( gcd( i , j ) == 1 && ( (i+0.0) / j ) <= 1  )
41                 x[cnt].fenzi = i , x[cnt].fenmu = j , x[cnt].value = (x[cnt].fenzi + 0.0)  / x[cnt].fenmu , cnt++;
42 
43     sort(x,x+cnt);
44     for( int i = 0 ; i < cnt ; i++)
45         printf("%d/%d\n",x[i].fenzi,x[i].fenmu);
46     return 0 ; 
47 }
48 
49             
2frac1

 

 

 1 /*
 2 ID:xiekeyi1
 3 PROG:sort3
 4 LANG:C++
 5 */
 6 #include<bits/stdc++.h>
 7 using namespace std ;
 8 const int maxn = 1010 ;
 9 int a[maxn] , b[maxn];
10 int c[5][5] ;
11 
12 int main()
13 {
14     freopen("sort3.in","r",stdin);
15     freopen("sort3.out","w",stdout);
16     int n ;
17     cin >> n ;
18     for( int i = 1 ; i <= n ; i++)
19     {
20         cin >> a[i] ;
21         b[i] = a[i] ;
22     }
23 
24     sort( b+1 , b+1+n ) ;
25 
26     for( int i = 1 ; i <= n ; i++)
27         if( a[i] != b[i] )
28             c[ b[i] ][ a[i] ]++;
29 
30     int ans = 0 ; 
31     for( int i = 1 ; i <= 3 ; i++)
32     {
33         for( int j = 1 ; j <= 3 ;j++)
34         {
35             if( c[i][j] && c[j][i] )
36             {
37                 int t = min( c[i][j] , c[j][i] );
38                 c[i][j] -= t , c[j][i] -=t , ans+=t ;
39             }
40         }
41     }
42 
43     ans+= c[1][2] * 2 ;
44     ans+= c[1][3] * 2 ;
45     cout << ans << endl ;
46     return 0 ; 
47 }
3sort3

 

 

 1 /*
 2 ID:xiekeyi1
 3 PROG:holstein
 4 LANG:C++
 5 */
 6 #include<bits/stdc++.h>
 7 using namespace std ;
 8 const int maxn = 30 ; 
 9 int v , vv[maxn] , g , gg[maxn][maxn];
10 
11 void init()
12 {
13     cin >> v ;
14     for( int i = 1 ; i <= v ; i++)
15         cin >> vv[i];
16     cin >> g ;
17     for( int i = 1 ; i <= g ; i++)
18         for( int j = 1 ; j <= v ; j++)
19             cin >> gg[i][j];
20 }
21 
22 bool flag = false ;
23 int num[maxn];
24 int cnt = 0 ;
25 int k = 1 ; 
26 void work() 
27 {
28     int a[30] = {0};
29     for( int i = 1 ; i <= cnt  ; i++)
30         for( int j = 1 ; j <=  v ; j++)
31             a[j] += gg[ num[i] ][j] ; 
32     for( int i = 1 ; i <= v ; i++)
33         if( a[i] < vv[i] )
34             return ;
35 
36     flag = true ; 
37     cout << cnt ;
38     for( int i = 1 ; i <= cnt ; i++)
39         cout << ' ' << num[i] ;
40     cout << endl ;
41 }
42 
43 void dfs( int t )
44 {
45     if( flag || t > g ) return ;
46     if( cnt >= k )
47     {
48         work() ;
49         return ;
50     }
51 
52     cnt++;
53     num[cnt] = t + 1 ;
54     dfs( t + 1 ) ;
55     cnt--;
56     dfs( t + 1 ) ; 
57     return ; 
58 }
59 
60 
61 int main()
62 {
63     freopen("holstein.in","r",stdin);
64     freopen("holstein.out","w",stdout);
65     init() ;
66     while( !flag )
67     {
68         dfs(0);
69         k++;
70     }
71     return  0 ; 
72 }
4holstein

 

 

 1 /*
 2 ID:xiekeyi1
 3 PROG:hamming
 4 LANG:C++
 5  */
 6 #include<bits/stdc++.h>
 7 using namespace std ;
 8 
 9 bool judge( int b , int n , int d , int aj)
10 {
11     bitset<8> judge( n ^ aj ) ;
12     int t1 = 0 , t2 = 0 ;
13     for( int i = 0  ; i < b ; i++)
14         if( judge.test( i ) )
15             t1++;
16     if( t1 < d )
17         return false ; 
18     //    judge.flip();
19     //    for( int i = 0 ; i < b ; i++)
20     //        if( judge.test( i ) ) 
21     //            t2++;
22     //    if( t1 < d && t2 < d )
23     //        return false ;
24     return true ; 
25 
26     //    int t1 = judge.count();
27     //    judge.flip();
28     //    int t2 = judge.count();
29     //    if( t1 !=  d && t2 != d )
30     //        return false ;
31     //    return true ; 
32 }
33 
34 
35 int main()
36 {
37     freopen("hamming.in","r",stdin);
38     freopen("hamming.out","w",stdout);
39     int n , b , d ;
40     cin >> n >> b >> d ;
41     int cnt = 0 ;
42     vector<int> a;
43     a.push_back(0);
44     int i = 0 ; 
45     while( a.size() != n)
46     {
47         for( ; i <= 300; ) 
48         {
49             i++;
50             //cout << "Debug: " << i << endl ; 
51             bool flag = true ; 
52             for( int j = 0 ; j < a.size() ; j++)
53             {
54                 //bitset<8> judge( i ^ a[j] ) ; 
55                 if( !judge( b, i , d , a[j] ) ) 
56                 {
57                     flag = false ;
58                     break ;
59                 }
60             }
61             if( flag )
62             {
63                 a.push_back(i) ;
64                 //cout << "Debug:" << i << endl ; 
65                 break ; 
66             }
67 
68         }
69     }
70     int tcnt = 0 ;
71     for( int i = 0 ; i < a.size() ; i++)
72     {
73         ++tcnt;
74         if( tcnt == 1 )
75             cout << a[i] ;
76         else if( tcnt != 10  )
77             cout << ' ' << a[i] ;
78         else if( tcnt == 10 )
79         {
80             tcnt = 0 ;
81             cout <<  ' ' << a[i] << endl ;
82         }
83     }
84     if( tcnt != 0  )
85         cout << endl ;
86     return 0 ; 
87 }
5hamming

 

posted on 2017-07-13 10:08  Dark猫  阅读(153)  评论(0)    收藏  举报

导航