zoukankan      html  css  js  c++  java
  • 8月13号小练

    网站:CSUST夜间活动4

    A   找到规律就好,奇数就N-1,偶数就无解     Coins    POJ 3210

    原因:    来自:依然

    思路:若n为偶数: 

          1: 若初始状态为偶数正面 + 偶数反面,要想变成全正或全反,翻转的次数必为偶数。

             例如: ○○●●●●  则翻转 2,4,6,8……次均可。

          2: 若初始状态为奇数正面 + 奇数反面,要想变成全正或全反,翻转的次数必为奇数。

             例如: ○○○○○●  则翻转 1,3(先将●翻为○,再将任一个○翻两下),5,7……次均可。

          因次,我们就无法得到一个确定的翻转次数x,让它能使任意初始状态的硬币变成全为正或全为反,因为若x为偶数,则无法满足例2,若x为奇数,则无法满足例1。故应输出"No Solution!"。

          若n为奇数:

          初始状态只可能为偶数正面 + 奇数反面(偶数反面 + 奇数正面同理),故要想变成全正或全反,是必能找出一个次数x满足所有任意情况的。

          1:对初始状态即全为奇数个正面而言,翻转的次数必为偶数。

          2: 由1得只能翻所有正面为反面,因为这样才需翻转偶数次。

             例如: ○○○○●●●  则翻转4,6,8,10……次均可,其中最小为4。要保证对7枚硬币的任意初始状态都可行,则最小应为 7-1=6 ,否则对 ○○○○○○● 无法实现。 

          因此,当你为奇数是,最少翻转次数为n-1。

    代码:   0ms

     1 #include <stdio.h>
     2 int main()
     3 {
     4     int n;
     5     while(~scanf("%d",&n)&&n)
     6     {
     7         if(n%2)
     8             printf("%d
    ",n-1);
     9         else
    10             printf("No Solution!
    ");
    11     }
    12     return 0;
    13 }
    View Code

    B    坑爹的题,刚开始各种超时,后来发现是有规律的,结果还是超时,那个k^t都不能用for,超时,又不能用pow,最后是用就奇偶数乘(是这个名字吧.....不记得了╮(╯▽╰)╭)      小明系列故事――师兄帮帮忙        HDU 4506

    结果RE,运行错误,尼玛,不能用int ,long long ,一定要用__int64!!!!!!!!!!

    代码:   31ms

     1 #include <stdio.h>
     2 #include <math.h>
     3 #include <algorithm>
     4 #include <iostream>
     5 using namespace std;
     6 int  mod=1000000007;
     7 __int64  a[10005],b[10005];   //一定要用__int64!!!!!
     8 int main()
     9 {
    10     int T,i,e;
    11     __int64 t,m,k,sum,n;
    12     scanf("%d",&T);
    13     while(T--)
    14     {
    15         sum=1;
    16         scanf("%I64d%I64d%I64d",&n,&t,&k);
    17         for(i=1;i<=n;i++)
    18             scanf("%I64d",&a[i]);
    19         m=t;
    20         while(t>0)      //(奇偶数乘)
    21        {
    22            if(t%2)
    23                sum=(sum*k)%mod;
    24            t/=2;
    25            k=k*k%mod;
    26        }
    27         m%=n;        //这一步很重要,这决定了你后面的n+i-m会是正数
    28         for(i=1;i<=n;i++)
    29         {
    30             if(i-m<=0)    //<=0
    31                 e=n+i-m;
    32             else
    33                 e=i-m;    //>0
    34             b[i]=(a[e]*sum)%mod;
    35         }
    36 
    37         for(i=1;i<n;i++)
    38             printf("%I64d ",b[i]);
    39         printf("%I64d
    ",b[n]);
    40     }
    41     return 0;
    42 }

    C    以前做过的......那是后没做出来......现在还是没,虽然有思路了......死于夭折.....╮(╯▽╰)╭    饭卡     HDU 2546

     1 #include <stdio.h>
     2 #include <iostream>
     3 #include <algorithm>
     4 #include <string.h>
     5 using namespace std;
     6 #define inf (0x7f7f7f7f)
     7 const int maxn = 1005;
     8 int main()
     9 {
    10     int n, val[maxn], m, dp[maxn];
    11     while (scanf("%d", &n)&&n)
    12     {
    13         int i,j;
    14         for (i=0; i<n; i++)
    15             scanf("%d", &val[i]);
    16         scanf("%d", &m);
    17         memset(dp, 0, sizeof(dp));
    18         sort(val, val+n);    //排序
    19         if (m >= 5)   //大于5
    20         {
    21             for (i=0; i<n-1; i++)
    22                 for (j=m-5; j>=val[i]; j--)    //留下5块,买最贵的
    23                     dp[j] = max(dp[j], dp[j-val[i]] + val[i]);
    24             printf("%d
    ", m - dp[m-5] - val[n-1]);
    25         }
    26         else
    27             printf("%d
    ", m);
    28     }
    29     return 0;
    30 }

    D    不想写 T^T看到网上的代码就傻了......    Ignatius and the Princess I      HDU 1026

  • 相关阅读:
    Android视频播放软解与硬解的区别
    Android ViewPager嵌套ViewPager滑动冲突处理方法
    2.2 Consumer API官网剖析(博主推荐)
    2.1 Producer API官网剖析(博主推荐)
    2. APIS官网剖析(博主推荐)
    1.5 Upgrading From Previous Versions官网剖析(博主推荐)
    1.4 Ecosystem官网剖析(博主推荐)
    1.3 Quick Start中 Step 8: Use Kafka Streams to process data官网剖析(博主推荐)
    1.3 Quick Start中 Step 7: Use Kafka Connect to import/export data官网剖析(博主推荐)
    1.3 Quick Start中 Step 6: Setting up a multi-broker cluster官网剖析(博主推荐)
  • 原文地址:https://www.cnblogs.com/riddle/p/3256966.html
Copyright © 2011-2022 走看看