zoukankan      html  css  js  c++  java
  • Codeforces #Round 376 部分题解

    A:

    题目传送门:http://codeforces.com/problemset/problem/731/A

    直接根据题意模拟即可

     1 #include "bits/stdc++.h"
     2 
     3 using namespace std ;
     4 typedef long long QAQ ; 
     5 
     6 char s[ 1010 ] ;
     7 
     8 inline int Calc ( const char x , const char y ) {
     9         if ( x > y ) return x - y ;
    10         else return y -x ; 
    11 }
    12 
    13 inline int gmin ( int x , int y ) {
    14         return x > y ? y : x ; 
    15 }
    16 
    17 int main ( ) {
    18         scanf ( "%s" , s + 1 ) ;
    19         int len = strlen ( s + 1 ) ;
    20         
    21         char now = 'a' ;
    22         QAQ Ans = 0  ;
    23         for ( int i=1 ; i<=len ; ++i ) {
    24                 char next = s[ i ] ;
    25                 int cost = gmin( Calc ( now , next ) , 26 - Calc ( now , next ) ) ;
    26                 Ans += cost ; 
    27                 now = s[ i ] ;
    28         }
    29         cout << Ans << endl ; 
    30         return 0 ; 
    31 } 
    View Code

    B:

    题目传送门:http://codeforces.com/problemset/problem/731/B

    贪心

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <fstream>
     4 #include <sstream>
     5 
     6 using namespace std ;
     7 const int maxN = 2e5 + 1e3 ;
     8 const double eps = 1e-5 ; 
     9 
    10 int arr [ maxN ] ;
    11 
    12 int INPUT ( ) {
    13         int x = 0 , f = 1 ; char ch = getchar ( ) ;
    14         while ( ch < '0' || ch > '9' ) { if ( ch == '-' ) f = -1 ; ch = getchar ( ) ; } 
    15         while ( ch <='9' && ch >= '0' ){ x = ( x << 1 ) + ( x << 3 ) + ch - '0' ; ch = getchar ( ) ; } 
    16         return x * f ;
    17 }
    18 
    19 int main ( ) {
    20         int N = INPUT ( ) ;
    21         for ( int i=1 ; i<=N ; ++i ) {
    22                 arr[ i ] = INPUT ( ) ;
    23         }
    24         for ( int i=1 ; i<=N+1 ; ++i ) {
    25                 if ( arr[ i ] < 0 ) {
    26                         goto Fail ;
    27                 }
    28                 if ( arr[ i ] % 2 == 1 ){
    29                         -- arr[ i + 1 ] ;
    30                 }
    31         }
    32         cout << "YES" << endl ;
    33         goto End ; 
    34         Fail :
    35                 cout << "NO" << endl ; 
    36         End:
    37                 return 0 ;
    38 }
    View Code

    C:

    题目传送门:http://codeforces.com/problemset/problem/731/C

    将每个联通袜子分量加入一个冰炸鸡,用带权的冰炸鸡维护。最小染色数等于总共个数 - 颜色袜子最多的个数。

     1 #include "bits/stdc++.h"
     2 
     3 using namespace std ; 
     4 const int maxN = 2e5 + 1e3 ; 
     5 typedef long long QAQ ;
     6 
     7 int c[ maxN ] , t1[ maxN ] , t2[ maxN ] , father[ maxN ] , size[ maxN ] ;
     8 map <int ,int>mp[ maxN ] ;
     9 QAQ Ans ; 
    10 
    11 int getfa ( const int x ) { return father[ x ] == x ? x : father[ x ] = getfa ( father[ x ] ) ; } 
    12 inline int gmin ( const int x , const int y ) { return x > y ? y : x ; } 
    13 inline int gmax ( const int x , const int y ) { return x > y ? x : y ; } 
    14 void Set_Init ( const int n ) { for ( int i=1 ; i<=n ; ++i ) father[ i ] = i  , size[ i ] = 1 ; }
    15 inline void Union_Set ( int x , int y ) { father[ x ] = y ; size[ y ] += size [ x ] ; } 
    16 
    17 inline int INPUT ( ) {
    18         int ret = 0 , f = 1 ; char ch = getchar( ) ;
    19         while ( ch < '0' || '9' < ch ) { if ( ch == '-' ) f = -1 ; ch = getchar ( ) ; } 
    20         while ( '0' <= ch && ch <= '9' ) { ret = ( ret << 1 ) + ( ret << 3 ) + ch - '0' ; ch = getchar ( ) ; }
    21         return ret * f ;
    22 } 
    23 
    24 
    25 int main ( ) {
    26         int N = INPUT ( ) , M = INPUT ( ) , K = INPUT ( ) ;
    27         for ( int i=1 ; i<=N ; ++i ) 
    28                 c[ i ] = INPUT ( ) ;
    29         Set_Init ( N ) ;
    30         for ( int i=1 ; i<=M ; ++i ) {
    31                 t1[ i ] = INPUT ( ) , t2[ i ] = INPUT ( ) ;
    32                 int px = getfa ( t1[ i ] ) ;
    33                 int py = getfa ( t2[ i ] ) ;
    34                 if ( px != py ) Union_Set ( px , py ) ;
    35         }
    36         for ( int i=1 ; i<=N ; ++i ) ++mp[ getfa ( i ) ][ c[ i ] ] ;
    37         for ( int i=1 ; i<=N ; ++i ) {
    38                 if ( getfa ( i ) == i ) {
    39                         int temp = 0 ;
    40                         map <int , int>::iterator It ; 
    41                         for ( It = mp[ i ].begin( ) ; It != mp[ i ].end ( ) ; ++It ) {
    42                                 temp = gmax( temp, It -> second ) ;
    43                         }
    44                         Ans += size[ i ] - temp ; 
    45                 }
    46         }
    47         cout << Ans << endl ; 
    48         return 0 ; 
    49 } 
    View Code
  • 相关阅读:
    RS-232 vs. TTL Serial Communication(转载)
    UART to Serial Terminal(转载)
    UART Explained(转载)
    Gprinter热敏打印机光栅位图点阵数据解析工具
    WinCE非通用调试工具汇总
    WinCE下GPRS自动拨号软件(GPRS AutoDial)
    WinCE项目应用之车载导航
    mysql创建临时表,将查询结果插入已有的表
    mysql利用navicat导出表结构和表中数据
    mysql查看表的属性 mysql将查询结果给临时变量
  • 原文地址:https://www.cnblogs.com/shadowland/p/5967913.html
Copyright © 2011-2022 走看看