博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforces A. Domino 解题报告
阅读量:5243 次
发布时间:2019-06-14

本文共 1813 字,大约阅读时间需要 6 分钟。

题目链接:http://codeforces.com/problemset/problem/353/A

题目意思:通俗地说,就是当上下两半的数的总和不完全是偶数时,通过上下调换某些骨牌来使这两半的数和变成偶数,统计并输出调换多少次;如果不行,则输出-1。

     其实调换的次数最多只有1次,而实行调换的操作必须符合上下对应的数满足一奇一偶的条件,否则是白做的。如果调换一次之后,也不能使得上下两半的和都为偶数,那么就没必要继续判断了,直接输出“-1”。

1 #include 
2 #include
3 #include
4 using namespace std; 5 6 const int N = 100 + 5; 7 int x[N], y[N]; 8 9 int main()10 {11 int n, i, sum1, sum2, flag;12 while (scanf("%d", &n) != EOF)13 {14 // freopen("data.txt", "r", stdin);15 sum1 = sum2 = 0;16 for (i = 0; i < n; i++)17 {18 scanf("%d%d", &x[i], &y[i]);19 sum1 += x[i];20 sum2 += y[i]; 21 }22 flag = 0;23 // printf("sum1 = %d\nsum2 = %d\n\n", sum1, sum2);24 if (sum1 % 2 || sum2 % 2) // 至少一边为奇数25 {26 for (i = 0; i < n; i++)27 {28 if ((x[i] % 2 && y[i] % 2 == 0) || (x[i] % 2 == 0 && y[i] % 2)) // 序列中第一次遇到奇偶的情况,只需要判断一次 29 {30 // printf("x[%d] = %d, y[%d] = %d\n", i, x[i], i, y[i]);31 sum1 -= x[i]; // 调换之后两边的和发生改变32 sum1 += y[i];33 sum2 -= y[i];34 sum2 += x[i];35 flag = 1; 36 // printf("sum1 = %d\nsum2 = %d\n", sum1, sum2);37 break;38 }39 }40 }41 if (!flag && sum1 % 2 == 0 && sum2 % 2 == 0) // 原来都为偶数,不需要交换42 printf("0\n");43 else if (!(sum1 % 2 == 0 && sum2 % 2 == 0)) // 处理后还是一奇一偶的情况44 printf("-1\n");45 else // 处理后符合都为偶数46 printf("1\n");47 }48 return 0;49 }

 

   

转载于:https://www.cnblogs.com/windysai/p/3372953.html

你可能感兴趣的文章
mysql-5.7 innodb 的并行任务调度详解
查看>>
shell脚本
查看>>
Upload Image to .NET Core 2.1 API
查看>>
python针对excel的读写操作-----openpyxl
查看>>
最后几本书,不珍藏了。
查看>>
Js时间处理
查看>>
Java项目xml相关配置
查看>>
按钮实现A标签新窗口打开(不用window.open)
查看>>
Array对象
查看>>
MainActivity
查看>>
三维变换概述
查看>>
android 数字键盘制作
查看>>
Cpp: object lifetime
查看>>
[8.08考试] 隔膜
查看>>
Board Game CodeForces - 605D (BFS)
查看>>
正则表达式初探
查看>>
Python 中 open()文件操作的方式
查看>>
实验三
查看>>
Android开发高手课 - 02 崩溃优化(下):应用崩溃了,你应该如何去分析?
查看>>
jenkins:忘记登录密码怎么办
查看>>