CDOJ 29 飞镖(dart) 解题报告

题目链接:http://acm.uestc.edu.cn/#/problem/show/29

比较坑爹的一道题,我是先打表找了规律,然后证明这个规律的……

稍微说一下,随便的X次指的是其中不必要包括一次双倍,如果包括一次最后一次会说的。

首先,如果不考虑红心,如果只剩一次,随便的一次,那么显然只有1~K K~2K的偶数 2K~3K的三的倍数可以投中。

如果只剩两次,包括一次最后一次,那么显然是2~3K全部可以被充满。
对于3K~5K的分数:
3K+t = 2K + K+t 或 2K-2 + K+t+2
可以证明对于t是奇偶均可以成立
以上式子的边界:
5K-3 = 2K + 3K-3
5K-2 = 2K-2 + 3K
5K = 2K + 3K
这里可以知道5K-1是取不到的(如果5K-1恰好是3的倍数是可以取到的)

如果只剩两次,随便的两次,则在只剩最后一次的基础上加上2K~3K的部分,也就是在5K-1~6K里面3的倍数均可以达到。

如果只剩三次,必然包括一次最后一次
已知,2~5K除了5K-1都可以达成;
可知,2~8K除了8K-1是肯定可以达到的。
只要对于两次里面的每一个都+3K即可。
又因为最大只能达到8K=(3+3+2)K,不用考虑更上。
所以任何在2~8K-2或者8K的值均可以取到。

接下来考虑红心:
如果只能有一个小红心,参考只剩两次,包括一次最后一次。
如果可以有一个大红心,参考只剩两次,随便的两次。
如果可以有一个大红心+一个小红心,参考只剩一次,随便的一次。
如果可以有两个大红心,参考只剩一次,随便的一次。
如果可以有两个大红心+一个小红心,参考个P。

有一个小要求就是C必须要大于等于2,想必能理解吧。不过,疑似,数据没有这个坑。

原谅我压代码压得我自己都不认得了。

#include <cstdio>
using namespace std;

int K, M, C;
bool able;

int main() {
	while (~scanf("%d%d%d", &K, &M, &C) && (K || M || C)) {
		able = false;
		able |= C == M * 2 || C == M * 3 || C == M * 4 || C == M * 5 || C == M * 6;
		able |= C >= 2 && (C < K * 8 - 1 || C == K * 8);
		able |= (C -= M) >= 2 && (C < K * 5 - 1 || C == K * 5);
		able |= (C -= M) >= 0 && (C < K * 5 - 1 || C == K * 5 || C <= K * 6 && !(C % 3));
		able |= (C -= M) >= 0 && (C <= K || C <= K * 2 && !(C % 2) || C <= K * 3 && !(C % 3));
		able |= (C -= M) >= 0 && (C <= K || C <= K * 2 && !(C % 2) || C <= K * 3 && !(C % 3));
		puts(able ? "Yes" : "No");
	}
	return 0;
}
时间: 2024-10-10 13:48:01

CDOJ 29 飞镖(dart) 解题报告的相关文章

CDOJ 25 点球大战(penalty) 解题报告

简单的字符串处理 坑点,有人可能没名字(名字为空) 有人名字可能为blablablano 但是因为输入保证最后五个字符为 good(前面有个空格) 因为如果输入意思是no good的话,no前面必须有一个空格 所以只需要判断倒数第6.7.8个字符是不是' '.'n'.'o'就可以了 当然,如果出现名字为空,结果为good,字符串长度达不到8,要判断一下字符串的长度 以上解决之后稍微关注一下输出格式就可以了 #include <cstdio> #include <cstring> u

【算法学习笔记】29.规律题 解题报告 SJTU_OJ 1101 SuperXOR

1101. SuperXOR Description Pangzi recently realized that bitwise XOR operation is just an addition without carries. For example, when computing (1001)_2 XOR (1101)_2, you write down: 1001 + 1101 ------- 0100 You see, everything is like an addition, e

CDOJ 30 最短路 解题报告

啊啊啊打博文真是累的要死…… 题目链接:http://acm.uestc.edu.cn/#/problem/show/30 题目就是标算,不解释了,用的是Bellman Ford算法,的队列优化版SPFA 我不太喜欢用C++的STL,所以用的都是自己手打的队列.优先队列打着太麻烦所以就不用Dijkstra了……人懒没救 随便一提,用的是一行广搜,的扩展版(所以说Bellman Ford算法不就是广搜吗),虽然不是一行了,不过SPFA算法也简单多了.我在后面的一道题会讲一讲一行广搜……嗯,树上战争

2016.8.29 LGTB解题报告

考试总结: 1.这道题还是花了不少的时间的,特别是对拍啊之类的,总是放不下,然后有一些实现的问题导致改错也改了很久: 解决方案:下一次在决定写程序的时候,一定要先在草稿纸上把实现算法的流程基本上写一次,精确到循环语句,判断语句的框架,把所有的情况都完整地考虑一次,确定没有问题了再写: 这道题犯了和上一套第二题同样的问题:证明的时间过长: 解决方案:在解题时把流程规范化,在证明了算法正确性以后就放下了,不要总是把它提出来! 2.这道题的数据范围特别小,所以可以很容易地想到状压DP,然后考虑到互质的

2016.8.29 解题报告之我会做的题都是简单题

老规矩,要相关资料联系邮箱: 考试分析: 1.  画图确定性质,其实我开始也打算用二进制判重的,但进制题一般不会使状态无法用longlong表示出来,然后那种确定了某种状态以后就排除了无关变量,直接取最优的思路也很不错: 2.  最早入手的题以及死在上面的题,还想了了很久的复杂度证明和对拍,无话可说,希望这次AK之路被断能让我涨一点记性,以后要抓住脑海里的每一点信息(本来还想了longlong这个问题的): 3.  找性质,把在线决策问题转化为线性判断类问题,排除任务之间有一点橡树的关系的无关干

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh童鞋的提醒. 勘误2:第7题在推断连通的时候条件写错了,后两个if条件中是应该是<=12 落了一个等于号.正确答案应为116. 1.煤球数目 有一堆煤球.堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形). -. 假设一共

Winter-2-STL-E Andy&#39;s First Dictionary 解题报告及测试数据

use stringstream Time Limit:3000MS     Memory Limit:0KB Description Andy, 8, has a dream - he wants to produce his very own dictionary. This is not an easy task for him, as the number of words that he knows is, well, not quite enough. Instead of thin

codeforces 505A. Mr. Kitayuta&#39;s Gift 解题报告

题目链接:http://codeforces.com/problemset/problem/505/A 题目意思:给出一个长度不大于10的小写英文字符串 s,问是否能通过在字符串的某个位置插入一个字母,使得新得到的字符串成为回文串. /**************************************(又到自我反省时刻) 做的时候,通过添加一个单位使得长度增加1,找出中点,检验前一半的位置,找出对称位置替换成对应的前一半位置的字符,然后原字符串剩下的部分追加到后面,再判断回文.但是由于

CH Round #56 - 国庆节欢乐赛解题报告

最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树,其中一些树上结有能够产生能量的魔力水果.已知每个水果的位置(Xi,Yi)以及它能提供的能量Ci.然而,魔幻森林在某些时候会发生变化:(1) 有两行树交换了位置.(2) 有两列树交换了位置.当然,树上结有的水果也跟随着树一起移动.不过,只有当两行(列)包含的魔力水果数都大于0,或者两行(列)都没有魔