贪心/数学 Codeforces Round #212 (Div. 2) A. Two Semiknights Meet

题目传送门

 1 /*
 2     贪心/数学:还以为是BFS,其实x1 + 4 * k = x2, y1 + 4 * l = y2
 3 */
 4 #include <cstdio>
 5 #include <algorithm>
 6 #include <cstring>
 7 using namespace std;
 8
 9 const int MAXN = 11;
10 const int INF = 0x3f3f3f3f;
11 char s[MAXN][MAXN];
12
13 int main(void)        //Codeforces Round #212 (Div. 2) A. Two Semiknights Meet
14 {
15     int t;    scanf ("%d", &t);
16     while (t--)
17     {
18         char ch;    int x1, y1, x2, y2;    bool ok = false;
19
20         for (int i=1; i<=8; ++i)    scanf ("%s", s[i] + 1);
21         for (int i=1; i<=8; ++i)
22         {
23             for (int j=1; j<=8; ++j)
24             {
25                 if (!ok && s[i][j] == ‘K‘)    {x1 = i;    y1 = j;    ok = true;}
26                 if (ok && s[i][j] == ‘K‘)    {x2 = i;    y2 = j;}
27             }
28         }
29
30         if ((x2 - x1) % 4 == 0 && (y2 - y1) % 4 == 0)    puts ("YES");
31         else    puts ("NO");
32     }
33
34     return 0;
35 }
时间: 2024-10-12 13:24:02

贪心/数学 Codeforces Round #212 (Div. 2) A. Two Semiknights Meet的相关文章

贪心+构造 Codeforces Round #277 (Div. 2) C. Palindrome Transformation

题目传送门 1 /* 2 贪心+构造:因为是对称的,可以全都左一半考虑,过程很简单,但是能想到就很难了 3 */ 4 /************************************************ 5 Author :Running_Time 6 Created Time :2015-8-3 9:14:02 7 File Name :B.cpp 8 *************************************************/ 9 10 #include

数学 Codeforces Round #219 (Div. 2) B. Making Sequences is Fun

题目传送门 1 /* 2 数学:这题一直WA在13组上,看了数据才知道是计算cost时超long long了 3 另外不足一个区间的直接计算个数就可以了 4 */ 5 #include <cstdio> 6 #include <cmath> 7 #include <iostream> 8 #include <algorithm> 9 #include <cstring> 10 using namespace std; 11 12 typedef

数学 Codeforces Round #282 (Div. 2) B. Modular Equations

题目传送门 题意:a % x == b,求符合条件的x有几个 数学:等式转换为:a == nx + b,那么设k = nx = a - b,易得k的约数(>b)的都符合条件,比如a=25 b=1,那么24,12, 8, 6, 4, 3, 2都可以,所以只要求出k的约数有几个就可以了,a <= b的情况要特判 /************************************************* Author        :Running_Time* Created Time  

数学 Codeforces Round #308 (Div. 2) B. Vanya and Books

题目传送门 1 /* 2 水题:求总数字个数,开long long竟然莫名其妙WA了几次,也没改啥又对了:) 3 */ 4 #include <cstdio> 5 #include <iostream> 6 #include <algorithm> 7 #include <cstring> 8 #include <cmath> 9 #include <vector> 10 #include <string> 11 #inc

【贪心】Codeforces Round #401 (Div. 2) D. Cloud of Hashtags

从后向前枚举字符串,然后从左向右枚举位. 如果该串的某位比之前的串的该位小,那么将之前的那串截断. 如果该串的某位比之前的串的该位大,那么之前那串可以直接保留全长度. 具体看代码. #include<cstdio> #include<iostream> #include<string> using namespace std; string a[500010]; int n,lens[500010],b[500010]; int main() { // freopen(

【贪心】 Codeforces Round #419 (Div. 1) A. Karen and Game

容易发现,删除的顺序不影响答案. 所以可以随便删. 如果行数大于列数,就先删列:否则先删行. #include<cstdio> #include<algorithm> using namespace std; int p1,ans1[510*110],ans2[510*110],p2; int n,m,a[110][110]; int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;++i){ f

【贪心】Codeforces Round #436 (Div. 2) D. Make a Permutation!

题意:给你一个长度为n的数组,每个元素都在1~n之间,要你改变最少的元素,使得它变成一个1~n的排列.在保证改动最少的基础上,要求字典序最小. 预处理cnt数组,cnt[i]代表i在原序列中出现的次数.b数组,代表没有出现过的数是哪些.b数组的长度就是答案. b数组是从小到大排好的,然后for循环b数组,同时用一个指针p指着a数组的当前位置,最开始指向开头,如果cnt[a[p]]==1,就向后跳,否则再看 是否b[i]<a[p]或者a[p]这个数是否已经出现过了(用个hav数组表示a[p]是否已

【推导】【贪心】Codeforces Round #431 (Div. 1) A. From Y to Y

题意:让你构造一个只包含小写字母的可重集,每次可以取两个元素,将它们合并,合并的代价是这两个元素各自的从'a'到'z'出现的次数之积的和. 给你K,你构造的可重集必须满足将所有元素合而为一以后,所消耗的最小代价恰好为K. 考虑只包含一种类字母的消耗代价,以a为例: a 0 aa 1 aaa 3 aaa 6 aaaa 10 aaaaa 15 ... ... 而且如果再其上任意叠加别的字母的话,是互不干涉的.于是可以贪心地从K中依次减去最大的一个上表中的数,输出那么多'a',然后下一次换成'b',如

Codeforces 1099 D. Sum in the tree-构造最小点权和有根树 贪心+DFS(Codeforces Round #530 (Div. 2))

D. Sum in the tree time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Mitya has a rooted tree with nn vertices indexed from 11 to nn, where the root has index 11. Each vertex vv initially had