zoukankan      html  css  js  c++  java
  • hdu 4414 && hdu 4415

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4414

    简单题目,直接枚举

    View Code
     1 using namespace std;
     2 typedef long long ll;
     3 const int N = 60;
     4 char map[N][N];
     5 int ans,ans1,ans2,ans3,ans4;
     6 int n;
     7 bool juge(int x,int y,int flag)
     8 {
     9     //cout<<"x = "<<x<<" "<<y<<" "<<flag<<endl;
    10     if(flag)
    11     {
    12         if(x < n && x >= 0 && y - 1 >= 0 && y + 1 < n && map[x][y - 1] == 'o' && map[x][y + 1] == 'o' && map[x][y] == '#')
    13         return true;
    14         else return false;
    15     }
    16     if(!flag)
    17     {
    18         if(x + 1 < n && x - 1 >= 0 && y >= 0 && y < n && map[x - 1][y] == 'o' && map[x + 1][y] == 'o' && map[x][y] == '#')
    19         return true;
    20         else return false;
    21     }
    22 }
    23 bool dfs(int x,int y)
    24 {
    25     int temx = x;
    26     int temy = y;
    27     while(juge(temx - 1,y,1))
    28     {
    29         ans1 ++;
    30         temx --;
    31     }
    32     temx = x;
    33     while(juge(temx + 1,y,1))
    34     {
    35         ans2 ++;
    36         temx ++;
    37     }
    38     while(juge(x,temy - 1,0))
    39     {
    40         ans3 ++;
    41         temy --;
    42     }
    43     temy = y;
    44     int tt = juge(x,temy + 1,0);
    45     while(juge(x,temy + 1,0))
    46     {
    47         ans4 ++;
    48         temy ++;
    49     }
    50     //cout<<"ans1 = "<<ans1<<" "<<ans2<<" "<<ans3<<" "<<ans4<<endl;
    51     if(ans1 == ans2 && ans1 == ans3 && ans1 == ans4 && ans1 != 0)
    52     return true;
    53     else return false;
    54 }
    55 int main()
    56 {
    57     int i,j;
    58     //freopen("data.txt","r",stdin);
    59     while(cin>>n)
    60     {
    61         if(!n) break;
    62         for(i = 0; i < n; i++)
    63         cin>>map[i];
    64         ans = 0;
    65         for(i = 1; i < n - 1; i++)
    66         {
    67             for(j = 1; j < n - 1; j++)
    68             {
    69                 if(map[i - 1][j] == '#' && map[i + 1][j] == '#' && map[i][j - 1] == '#' && map[i][j + 1] == '#' && map[i][j] == '#')
    70                 {
    71                     ans1 = ans2 = ans3 = ans4 = 0;
    72                     if(dfs(i,j)) ans ++;
    73                 }
    74             }
    75         }
    76         printf("%d\n",ans);
    77     }
    78     return 0;
    79 }

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4415

    想的太简单了,直接贪心做的,找到ai最小的那个敌人并且他的bi不为的零的时候作为入口,然后找下去,但是没考虑如果给的敌人的bi值的和不能把那些bi是零的敌人杀完的话就要分情况考虑了。看了别人的解释还是写了好长时间 http://blog.csdn.net/acm_ted/article/details/8010170 读她的解释,读的都晕了

    View Code
     1 using namespace std;
     2 typedef long long ll;
     3 const int N = 100001;
     4 int tt[N];
     5 struct node
     6 {
     7     int val;
     8     int wei;
     9 };
    10 node tworm[N];
    11 node zworm[N];
    12 bool cmp(node a,node b)
    13 {
    14     return a.val < b.val;
    15 }
    16 int main()
    17 {
    18     int t,n,m;
    19     int i,j;
    20     int tn,zn;
    21     node tw;
    22     int ans,tsum;
    23     int cs = 0;
    24     //freopen("data.txt","r",stdin);
    25     scanf("%d",&t);
    26     while(t--)
    27     {
    28         _clr(tworm,0);
    29         _clr(zworm,0);
    30         scanf("%d%d",&n,&m);
    31         tn = zn = 0;
    32         for(i = 0; i < n; i++)
    33         {
    34             scanf("%d%d",&tw.val,&tw.wei);
    35             if(!tw.wei) zworm[zn ++] = tw;
    36             else tworm[tn ++] = tw;
    37         }
    38         printf("Case %d: ",++cs);
    39         sort(zworm,zworm + zn,cmp);
    40         sort(tworm,tworm + tn,cmp);
    41         int tzn = zn - 1;
    42         int maxsum = 0;
    43         int maxans = 0;
    44         int sum = 0;
    45         if(tn > 0 && tworm[0].val <= m)
    46         {
    47             maxsum += tworm[0].val;
    48             maxans = tn;
    49             for(i = 0; i < tn; i++)
    50             {
    51                 if(!i) sum += tworm[i].wei;
    52                 else {sum --; sum += tworm[i].wei;}
    53             }
    54         }
    55         for(;sum != 0 && tzn >= 0;)
    56         {
    57             sum --, maxans ++, tzn --;
    58         }
    59         if(tzn < 0) printf("%d %d\n",maxans,maxsum);
    60         else
    61         {
    62             m -= maxsum;
    63             for(i = 1,j = 0; i < tn && j <= tzn;)
    64             {
    65                 if(tworm[i].val <= zworm[j].val)
    66                 {
    67                     if(m >= tworm[i].val)
    68                     {
    69                         maxans ++, tzn --;
    70                         maxsum += tworm[i].val;
    71                         m -= tworm[i].val;
    72                         i++;
    73                     }
    74                     else break;
    75                 }
    76                 else
    77                 {
    78                     if(m >= zworm[j].val)
    79                     {
    80                         maxans ++;
    81                         maxsum += zworm[j].val;
    82                         m -= zworm[j].val;
    83                         j++;
    84                     }
    85                     else break;
    86                 }
    87             }
    88             printf("%d %d\n",maxans,maxsum);
    89         }
    90     }
    91     return 0;
    92 }
  • 相关阅读:
    Element UI表格组件技巧:如何简洁实现跨页勾选、跨页统计功能
    Spring Cloud Gateway转发Spring WebSocket
    mac OS 安装配置Nginx服务器
    异常处理
    模块和包调用方法、执行顺序
    模块:序列化
    模块:random
    模块:time
    模块:collections,Python中的扩展数据类型
    re模块的基本用法
  • 原文地址:https://www.cnblogs.com/fxh19911107/p/2699232.html
Copyright © 2011-2022 走看看