CCPC-Wannafly Camp Day3 总结
从day2开始就愈发自闭。orz。单纯指学习上。其他的事情服从安排。
7-1 3A. 黑色气球
小D面前有n个黑色的气球。
假设第i个黑色气球的高度是一个正整数h
i
,现在小D知道了任意两个不同气球的高度之和,你能帮小D还原出每个黑色气球的具体高度嘛?
输入格式
第一行一个整数n
接下来n行,每行n个整数,其中第i行第j个整数表示第i个气球和第j个气球的高度之和。(当i=j时这个数为0)。
2≤n≤1000,输入的每个数不超过10
5
。数据保证答案唯一。
输出格式
一行n个整数,表示答案。
保证答案唯一。
输入样例
5
0 3 4 5 6
3 0 5 6 7
4 5 0 7 8
5 6 7 0 9
6 7 8 9 0
输出样例
1 2 3 4 5
思路
仔细读题就会发现没有那么难,就是告知每两个数之和,求这些数分别是多少。小学奥数?简单数学吧。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<stack>
#include<queue>
#include<set>
#include<map>
using namespace std;
int n;
int a[1100][1100];
int b[1100];
int main() {
cin >> n;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
cin >> a[i][j];
b[3] = (a[2][3] + a[1][3] - a[1][2]) / 2;
b[1] = a[1][3] - b[3];
for (int i = 2; i <= n; i++) b[i] = a[1][i] - b[1];
cout << b[1];
for (int i = 2; i <= n; i++) cout << ' ' << b[i];
cout << endl;
return 0;
}
7-5 3E. 棋技哥
火山哥和鸡老八在下棋。
这张棋盘是n×m的。每一个格子要么是黑色的,要么是白色的。
两个人轮流进行操作。火山哥先手。每一次可以选择一个黑色的格子,以这个格子为右下角,棋盘左上角为左上角,将这个矩阵的所有格子的颜色由黑变成白,由白变成黑。如果找不到一个黑色的格子,那么那个人就输了。
现在两个人都想让火山哥赢,请问谁能赢呢。
输入格式
第一行一个整数T,表示有T组数据。
每组数据第一行两个整数n,m,表示棋盘的大小。
接下来n行每行m个字符0(白色)或者1(黑色),描述了这个棋盘的初始状态。
1≤n,m≤500,1≤T≤20。
输出格式
对于每组的每个询问,输出一行,如果火山哥赢输出“call”,鸡老八赢输出“aoligei”(不含引号)。
输入样例
3
2 2
11
11
3 2
01
10
11
2 2
00
11
输出样例
call
aoligei
aoligei
思路
一开始想了好多算法。最后发现其实只要看左上方格子就行啦。有一种策略就是每次找到最右下黑格开始变,所以左上格子变化数就是总数,即这个格子每次都要变。所以判断左上格子就知道要变奇数还是偶数次,即是先手赢还是后手赢。
#include<iostream>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n, m;
cin>>n>>m;
string s[510];
for(int i=0; i<n; i++)
{
cin>>s[i];
}
if(s[0][0]=='1')
cout<<"call"<<endl;
else
cout<<"aoligei"<<endl;
}
}
开始了只能签上到的自闭之旅……