zoukankan      html  css  js  c++  java
  • poj3210

    题意:很难理解,意思是,给出一些硬币,总数一定,要求对于任何一种情况(无论几个正面,几个反面)都恰好进行k次操作,不多不少,使得朝上的面统一。每次操作可以翻一枚硬币。输入硬币总数,求所有满足条件的k中最小的。无解输出no solution

    分析:利用k的奇偶性。对于总数为偶数的情况。以六个为例,对于111111和111110,一个只能进行奇数次操作,另一个只能进行偶数次操作。k不可能既是奇数又是偶数,所以必定无解。 对于总数为奇数的情况。以五个为例,对于任意一种情况必定可以看成奇数个a面加上偶数个b面组成,由于11111必须要偶数次操作,所以所有情况都得偶数次操作,所以k为偶数,只能使所有的b面最终翻转为a面。所以对于最坏情况:10000的情况就只能进行4次操作,所以奇数k必定n-1。其实对于11111的情况k可以等于5,即所有1变为0,但是这种解已经大于刚才我们求出的n-1了,不是最优解,可以舍弃。

    View Code
    #include <cstdio>
    #include
    <iostream>
    #include
    <cstdlib>
    #include
    <cstring>
    usingnamespace std;

    int main()
    {
    //freopen("D:\\t.txt", "r", stdin);
    int n;
    while (scanf("%d", &n) != EOF && n !=0)
    {
    if (n %2==0)
    printf(
    "No Solution!\n");
    else
    printf(
    "%d\n", n -1);
    }
    return0;
    }
  • 相关阅读:
    你真的了解JSON吗?
    FormData对象
    javascript类数组
    Windows环境下XAMPP的相关设置
    PhpStorm相关设置
    yarn 与 npm 比较
    JavaScript+HTML+CSS 无缝滚动轮播图的两种方式
    javascript数据类型和类型转换
    焦大:以后seo排名核心是用户需求点的挖掘
    焦大:seo思维进化论(番外)
  • 原文地址:https://www.cnblogs.com/rainydays/p/1959663.html
Copyright © 2011-2022 走看看