zoukankan      html  css  js  c++  java
  • 「题解」Codeforces 1375F Integer Game

    先钦点 (a<b<c),不失一般性。

    选择成为先手,如果出现等差数列,且后手上一次不能对最大的进行操作,那么输出公差就赢了。

    发现如果让 (a,b) 变成等差数列最后一项,都是让它们加上 (2c-a-b)

    那么先输出 (2c-a-b),如果后手让 (a,b) 增加的话就赢麻了,否则就是让 (c) 增加。

    那么再输出新的 (2c-a-b),后手不能让 (c) 增加,只能给 (a,b) 增加,这样就又赢麻了。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #define int long long
    #define mp std::make_pair
    #define pb push_back
    #define fir first
    #define sec second
    typedef std::pair<int, int> pii;
    #define flh fflush(stdout);
    int t;
    pii a[4];
    #define print(x) do{
    	int y = x;
    	printf("%lld
    ", y);flh;
    	scanf("%lld", &t); if(!t) return 0;
    	for(int i = 1; i <= 3; ++i) if(a[i].sec == t) a[i].fir += y;
    	std::sort(a + 1, a + 4);
    }while(0)
    signed main() {
    	for(int i = 1; i <= 3; ++i) scanf("%lld", &a[i].fir), a[i].sec = i;
    	std::sort(a + 1, a + 4);
    	puts("First");
    	print(a[3].fir*2 - a[2].fir - a[1].fir);
    	if(t != a[3].sec) print(a[2].fir - a[1].fir);
    	print(a[3].fir*2 - a[2].fir - a[1].fir);
    	print(a[2].fir - a[1].fir);
    	return 0;
    }
    
  • 相关阅读:
    关于字段长度的定义
    连续滚动效果的脚本
    JavaScript显示日期,跳动时间,星期
    [转载]SQL2000里的数据类型
    VSTSTF54000错误
    Delphi TreeView 现场保存与恢复
    易简协同平台与佛道修行
    CMD 反编译CHM文件
    专家与大师
    流程建模思考(草)
  • 原文地址:https://www.cnblogs.com/do-while-true/p/15331798.html
Copyright © 2011-2022 走看看