codeforces#257 C題Jzzhu and Chocolate
1334 ワード
タイトルアドレス:http://codeforces.com/contest/450/problem/C
今回CFの时は绝壁脳障害でした...A問題もC問題も脳障害のミスがあった...唯一ACのB題はHACKにされました...点数も少なくなりました...まるでsad.......
この問題は私の考えは分類討論で,4つの状況に分かれている.
まずn>=mとさせ、そうでなければ交換できます.主に横に切ったナイフの数、縦に切ったナイフの数を考えます.
1:k>n+m-2の場合、そんなに多くのナイフを切ることができず、-1を出力する.
2:k>=nの場合、長い部分を全部切り、残りは短く切る.
3:k=mの場合、全切長で、短い不切である.
4:kこのように分類して終わります.はっきりしています.コードも簡単です.のしかし私はその时意外にも2番目の分类に対して直接1...sad...当時、脳の絶壁が短絡していました..
コードは次のとおりです.
今回CFの时は绝壁脳障害でした...A問題もC問題も脳障害のミスがあった...唯一ACのB題はHACKにされました...点数も少なくなりました...まるでsad.......
この問題は私の考えは分類討論で,4つの状況に分かれている.
まずn>=mとさせ、そうでなければ交換できます.主に横に切ったナイフの数、縦に切ったナイフの数を考えます.
1:k>n+m-2の場合、そんなに多くのナイフを切ることができず、-1を出力する.
2:k>=nの場合、長い部分を全部切り、残りは短く切る.
3:k
4:k
コードは次のとおりです.
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include<algorithm>
using namespace std;
int main()
{
__int64 n, m, k, i, x1=-1, x2=-1, x;
scanf("%I64d%I64d%I64d",&n,&m,&k);
if(n<m)
{
int t=n;
n=m;m=t;
}
if(n+m-2<k)
printf("-1
");
else if(k>=n)
{
printf("%d
",m/(k-n+2));
}
else if(k<n&&k>=m)
{
printf("%I64d
",n/(k+1)*m);
}
else
printf("%I64d
",max(m/(k+1)*n,n/(k+1)*m));
return 0;
}