逻辑思维题(不涉及算法)
eIectron
优美的代码是成功AC的第一步。看着那么多博客不再更新,这就是我几年后的状态吗?要是走了就再也不回来了。
展开
-
CodeFroces 873B. Balanced Substring(思维题)
点击打开链接题意:给出一个字符串,求其中满足0和1的个数相等的最长字符串的长度。解法:当时只能想到枚举区间然后直接用前缀和判定的方法,但是枚举区间复杂度明显不对。然后想到了二分,发现很多数据都挺对的,然后wa24。想了想发现,有可能4不满足但是6满足,故不存在单调性。。。最后看了一发题解。每位有一个值:前i个数字0的个数 - 前i个数字1的个数。如果有两个地方的值是相同的,那么显然原创 2017-10-14 21:12:17 · 331 阅读 · 0 评论 -
CodeFroces 831C. Jury Marks(STL的应用)
http://codeforces.com/problemset/problem/831/C题目大意:有k个评委,n条pol记得的分数。评委从前往后依次评分。pol记得一些评委评完分的分数,这些分数不一定是按照时间给出的。问参赛者初试分数有多少种可能。解法:我们想一种检验方式,要保证pol记得的分数全都满足。一开始我很笨的用了k²n的算法,一直tle。正解为,随便选一个分数,然后将他枚举k原创 2017-07-14 16:22:56 · 221 阅读 · 0 评论 -
Codefroces 735B Urbanization
B. Urbanizationtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputLocal authorities have heard a lot about co原创 2016-11-28 13:52:54 · 422 阅读 · 0 评论 -
南华OJ 重排串
http://www.acmusc.cn:9988/problem/212/题意很容易明白。如果他没有要求字典序最小,那么我们直接用优先队列靠着每个字母出现的频率次数逐位贪心就可做出来。但是现在他要字典序最小,这就是另外一个问题了。首先我们知道,如果一个字符串,长度为len,而其中某个字母的个数n,如果n > (len + 1) / 2,那么这个字符串想排列出题目所要求的是不可能的。原创 2017-07-05 16:46:43 · 1104 阅读 · 0 评论 -
CodeFroces 827A.String Reconstruction
http://codeforces.com/problemset/problem/827/A这道题比赛的时候用线段树没做出来。题意很简单,就是给出n个字符串,每个字符串分别在一些位置,而且所给的字符串并不会有冲突。要求构造出合理的字符串。因为是区间更新,很容易想到是线段树。只需要单点更新,每个位置记录一下所在的字符串,并且传参的时候把起点也传下去。这样就可以知道是字符串的第几个字符了。原创 2017-07-13 19:40:00 · 2893 阅读 · 0 评论 -
CodeFroces 822C.Hacker, pack your bags!(sorting+线性枚举)
C. Hacker, pack your bags!time limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputIt's well known that the best wa原创 2017-07-03 22:01:10 · 1549 阅读 · 0 评论 -
CodeFroces Round 423 A. Restaurant Tables
http://codeforces.com/contest/828/problem/A题意:一家餐厅有a张单人桌和b张双人桌,接下来有n个团队来餐厅消费,给他们安排座位规则如下:如果团队只有一个人,那么查看是否有单人桌,有单人桌则给安排单人桌位置。如果没有单人桌,则看是否有双人桌,有双人桌则安排双人桌座位。如果还没有,则查看是否有双人桌只坐着一个人的,如果有,则安排到该双人桌位置。如果还没原创 2017-07-12 19:26:43 · 319 阅读 · 0 评论 -
CodeFroces 821C Okabe and Boxes(栈?)
http://codeforces.com/problemset/problem/821/C题意很简单,就是给出n个数字,一共有2n个操作,也就是一个数字会有add和remove两个操作。现在要求你每次出栈的栈顶元素要从1到n。如果当前的栈顶不是对应的数字,那么就可以把整个栈里面的数字全部排序(当然,我们是从小到大往下排)。问最多要操作多少次。这个问题我一开始是没理解题意,然后暴力每次so原创 2017-06-29 14:34:27 · 201 阅读 · 0 评论 -
CodeFroces 821A Okabe and Future Gadget Laboratory
http://codeforces.com/problemset/problem/821/A题意很简单,就是说一个n*n的矩阵中是否有不为1的数字是无法从同一行的一个数字+同一列的一个数字加起来,如果存在这样的数字输出no,否则输出yes。You can output each letter in upper or lower case.代码如下:#includeusing na原创 2017-06-29 14:25:12 · 218 阅读 · 0 评论 -
CodeFroces 814A An abandoned sentiment from past(快排)
http://codeforces.com/problemset/problem/814/A题目给定a,b序列且a中0的个数等于b的元素个数,为是否有办法使得b中的元素(只能使用一次)放入a中0的位置使得a不是一个递增序列。解法很简单,我们把b sort一下,然后用b从最大的数字从前往后放到a中0的地方,然后判断一下是否递增即可。代码如下:#includeusing namesp原创 2017-06-07 23:32:13 · 229 阅读 · 0 评论 -
CodeFroces 812A Sagheer and Crossroads
题意就是,有一个十字路口如图所示,然后给你标出每个路口是否有车,是往左还是直走还是往右,然后还给出行人灯,如果是1就是绿灯。问是否有可能有车撞到人的事故发生。四个路口,我们直接记录每个路口的信息,如果某个路口行人灯是绿的,我们就判断四个路口是否有情况会发生事故。代码如下:#includeusing namespace std;struct node{ int l, s, r,原创 2017-06-03 12:14:02 · 293 阅读 · 0 评论 -
CodeFroces 787A The Monster
http://codeforces.com/problemset/problem/787/A一道简单题,大概就是两个人跑,问什么时候才能相遇。看了看范围,最大起始只能是100,每次跑也只能是100,那么根据抽屉原理,他们在100*100的范围内如果能相遇就肯定能相遇了。所以两个for就好了。代码如下:#includeusing namespace std;int main()原创 2017-05-18 14:28:20 · 248 阅读 · 0 评论 -
2015北京邀请赛 UVALive7270 Osu! Master
水题,但是一开始没看懂就是了。q神经常玩的游戏呀。给出一堆的操作,玩过节奏大师的都知道分数是慢慢累计的。1 2 3这样,到了S这个点,会重置一次,之前的也算一次(如果之前有过C和B操作的话),S自己本身也算一次。问总共记分了多少次。统计一下就好了。一开始没看懂wa了两发。。。代码如下:#includeusing namespace std;int main(){ int原创 2017-05-09 16:37:15 · 403 阅读 · 0 评论 -
CodeFroces 478C. Table Decorations(贪心)
http://codeforces.com/problemset/problem/478/C题目大意就是给出R,G,B三种颜色的balloon数目,现在每三个一组,要求同一组中三个颜色不能全相同。问能凑出的最多组合。解法:很明确一点,我们把他们排序。如果较少的两个加起来还没有第三个的一半多,那么我们会把前两个每次拿一个出来和第三个出两个来匹配,那么答案就是a[0]+a[1]反之,我们就原创 2017-07-24 14:24:22 · 338 阅读 · 0 评论 -
CodeFroces Gym 100860A AutoCoder
这题只需要找一找规律即可得出答案。我们知道奇数位置肯定是一个等差数列求和。单独看偶数位置,会发现其中又蕴含了一个等差数列,把它求出来,再看剩下的,发现里面依然有一个等差数列。这样不断循环求出答案即可。代码如下:#include#include#include#include#include#include#include#include#include#include原创 2017-08-17 09:08:46 · 220 阅读 · 0 评论 -
CodeFroces Round 438C. Qualification Rounds(思维题)
题意:给出n个题目,k个队伍是否刷过这题的情况表。现在要举办一场比赛,要求用的题目,不能有队伍已经刷过一半以上。问是否存在解。解法:当时瞎写发现,好像只要选两个就可以了,然后就开始猜结论来写。由于k只有4,所以说最多只有1代码如下:#include#include#include#include#include#include#include#include#inclu原创 2017-10-06 11:05:06 · 378 阅读 · 0 评论 -
CodeFroces 175B. Plane of Tanks: Pro (构造)
题意:如果有多于50%的人比自己优秀自己就是noob,如果只有多于20%的人比自己优秀自己就是random,如果只有多于10%的人比自己优秀自己就是average,如果只有多于1%的人比自己优秀自己就是hardcore,如果没人比自己优秀自己就是pro。代码如下:#include#include#include#include#include#include#include#原创 2017-08-29 21:08:22 · 295 阅读 · 0 评论 -
Codefroces 250D. Building Bridge (数学思维)
点击打开链接题意就是,一个坐标轴上,一个西边村庄在(0,0),然后有一条河在x=a和x=b夹着的地方(a 解法:真的是想了两三个小时没有想出来怎么做好。。。然后找了个题解。大致就是,两点之间直线最短。选取b河岸上一点,他所能到达a的方式最优的只有一条路,选取a河岸上的点肯定是最靠近它和东边村庄的连线的那个点,两点之间直线最短嘛。所以我们将a河岸上的点排一下序。枚举b河岸上的点,然后不断原创 2017-08-23 20:28:04 · 269 阅读 · 0 评论 -
UVA 465 Overflow(模拟)
发现这题有毒。。。用sscanf会wa,但是学别人用atof直接转换为浮点数的话又可以AC。。。代码如下:#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;int原创 2017-08-28 08:06:32 · 225 阅读 · 0 评论 -
UVA 10706 Number Sequence(模拟)
首先,输入的i很大,如果想直接不断跑1 12 123这样上去直接找必定是超时的。可以发现,一个数x,他12345……x一共有多少位我们是可以直接求出来的。所以我们每次直接减去这么多个数字即可。所以我们从1开始枚举x,每次i减去他的长度,直到i小于0,就说明答案就在12345……x中,直接暴力枚举即可得到答案。那么这个x可能到多大呢?我们可以估算一下,假设x=1e5,直接用等差数列求和公式,原创 2017-08-27 17:35:37 · 181 阅读 · 0 评论 -
CodeFroces 817B. Makes And The Product(构造)
分类讨论下即可。代码如下:#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;const int maxn = 1e5 + 5;int n, a[maxn];int main() {原创 2017-08-21 10:53:19 · 290 阅读 · 0 评论 -
CodeFroces 817A Treasure Hunt(构造题)
一开始没有什么想法,后来发现其实他们都可以看成是从0到abs(x2 - x1),每次步长是x,并且移动的奇偶是固定的,所以我们只需要判断一下两个数字移动的次数的奇偶是否相同即可。然后就wa了。还有一个就是要判断是否可以用x的步长刚好到达abs(x2 - x1),如果无法到达也是直接输出NO。代码如下:#include #includeusing namespace std;in原创 2017-08-21 10:15:11 · 442 阅读 · 0 评论 -
CodeFroces 839B Game of the Rows(模拟)
这道题坑点还是有点烦的。完全是面向数据编程了。。。解法:我是首先把每个部队里面的人数都处理到4一下,然后排序,从大到小往里面塞。如果中间还有完全空闲的行,那么如果部队有三人,那就行数++,如果两人,那么就可以用一个single标记一下只可以塞一个人的个数++,行数++,如果是一人,那么就加到左边那一列好了,左边最大行数++,中间行数++。如果只剩下左边右边了,那么就要先放2进去,尽量塞原创 2017-08-19 08:56:19 · 206 阅读 · 0 评论 -
CodeFroces 429B Godsend (模拟)
解法:由于第一个人是可以选择任意长度,和为奇数的序列,偶数相对于奇数是可以忽略的,所以当第一个人有奇数个奇数的时候,一次就能取完,必赢。有大于等于2的偶数个的时候,取掉一个变为奇数,第二个人无可奈何,所以也必定为第一个人赢。唯一第一个人会输的就是没有奇数的时候了。代码如下:#include#include#include#include#include#include#incl原创 2017-08-19 08:46:55 · 270 阅读 · 0 评论 -
2017年多校赛第一场 1001 Add More Zero(逻辑思维)
很明显,要找出10的k次方小于(2的m次方 - 1)且k尽量大,就是对log10(2^m-1)向下取整。并且2的次幂是不存在刚好等于10^k的情况的,比如1000-1会退回999少了一位,但实际上这种情况对于2的次幂不会存在。所以就变成了求log10(2^m),也就是m*log10(2)。我写这题的时候并不会写,我是直接想找规律,以为他进制都是看最高位,最高位恰好又是1 2 4 8 1 3 6原创 2017-07-26 11:47:26 · 381 阅读 · 0 评论 -
2017年多校赛第一场 1011 KazaQ's Socks(找规律)
做法:只需要枚举一下天数为2,3,4,5,一下子就能看到规律了。要注意要用long long。代码如下:#includeusing namespace std;int main() { long long n, m, k, ans; int Case = 1; while(cin >> n >> m) { if(m <= n) { ans = m; } els原创 2017-07-26 10:30:08 · 281 阅读 · 0 评论 -
HDU 6029 Graph Theory
http://acm.hdu.edu.cn/showproblem.php?pid=6029有n个数字,给出两种操作,询问是否存在完美匹配。一开始以为是二分图,但是这复杂度有点爆表,所以不知道怎么下手,然后队友dalao告诉我,只需要不断维护前面没有匹配到的就可以的。所以写了一发,1A#includeusing namespace std;int main(){ b原创 2017-05-07 18:39:58 · 332 阅读 · 0 评论 -
HDU 6027 Easy Summation
http://acm.hdu.edu.cn/showproblem.php?pid=6027这题因为k很小,自己手写一个函数算一个数的k次幂,然后直接跑就行了。代码如下:#includeusing namespace std;const int Mod = 1e9 + 7;long long mypow(int x, int k){ long long ans = 1;原创 2017-05-07 18:32:04 · 323 阅读 · 0 评论 -
2017CCPC女生赛 Automatic Judge
http://acm.hdu.edu.cn/showproblem.php?pid=6023这道题唯一的坑点在于,罚时是在过了题后才加上去的,我就说这还能怎么做。代码如下:#includeusing namespace std;int main(){ int T, n, m; bool pro[1020]; int cnt[1020]; char str[10];原创 2017-05-07 18:29:08 · 1268 阅读 · 0 评论 -
2017 蓝桥杯省赛c/c++ B组 K区间和
读入n和k,然后有n个连续的数字,求有多少个区间对k取余为0例子:5 212345那么我们输出:6区间有,(1,2,3),(1,2,3,4,5),(2),(2,3,4,5),(3,4,5),(4)。范围:n ,k 首先我是用前缀和n^2暴力过去骗分的。。。然后大神给我讲了一种O(n)的方法。。。首先,我们算出前缀和%k,那么上面就变成1,1,0,原创 2017-04-08 18:27:12 · 830 阅读 · 0 评论 -
L2 - 015 互评成绩
果然手速赛,上一年就没做到这道题,前面一直卡着,还是太菜。。。但是真的好简单。代码:#includeusing namespace std;int main(){ int n,k,m,a[15],sum; double goal[10005]; cin >> n >> k >> m; for(int i = 0; i < n; i++) { sum = 0; fo原创 2017-03-12 17:22:34 · 409 阅读 · 0 评论 -
UESTC 1339 郭大侠与线上游戏
题目地址 http://acm.uestc.edu.cn/#/problem/show/1339这道题,是求中位数,以前也有一道中位数的题目卡的我要死,这次这道题我依旧没有办法自己做出来,找了题解才明白怎么做,但是现在才开始分析为什么要这样做。我一开始的想法很简单,直接用一个vector来模拟这题目,但是排序很耗费时间,一共一百万组操作,我就假设我里面五十万个数字,然后一直快排,就达到3原创 2017-03-11 14:21:53 · 320 阅读 · 0 评论 -
HDU 6012 Lotus and Horticulture
这道题目是BC的B题,当时真的是一脸懵逼,这啥东西。但是后来看了看dalao的代码,发现还是不理解。后来,才想起dalao做题时候说的一句话,这个温度区间,是左闭右开的。我!@#¥%……&*(&……¥%这样就很好搞了,因为是左闭右开,那么你把最佳温度的右边加一就好了,这样就已经包括到所有实数这个范围了。按照出题人的题解,你把范围扩大一倍也是可以的,效果一样,//扩大三倍都没问题,反正就是这个意原创 2017-01-26 11:41:31 · 341 阅读 · 0 评论 -
Codefroces 750C New Year and Rating
Every Codeforces user has rating, described with one integer, possibly negative or zero. Users are divided into two divisions. The first division is for users with rating 1900 or higher. Those with ra原创 2017-01-27 03:18:31 · 514 阅读 · 0 评论 -
UVA 400 Unix is 命令
题意:给出n个文件名,排序后左对齐输出,并且假设最长的字符串是M个字符,那么除了最右边那一列,每一列都是M + 2 个字符,最右列为M个字符。题目规定每一行60个字符。解法:先读入,然后记录下最长的字符数,然后算出每一行应该输出几个单词。只不过他这个顺序是竖着的,所以我们稍微xjb搞一下就好了。然后就是没有自动帮忙补齐空字符的库函数,要自己写。代码如下:#includeusing n原创 2017-02-18 10:17:34 · 466 阅读 · 1 评论 -
UVA 136 丑数
题目意思就是,除了2,3,5,不能被其他素数整除的数称为丑数。求出第1500个丑数。这道题是紫书上STL的一道题,但是我并没有用到STL,不过也一样。分析,1,2,3,4,5,6,8,9,10,12……这些都是丑数。首先,我可以求出很多素数,然后暴力一下看看,我以为第1500个数字应该不是很大,但是我错了。。。所以要换一种思路,我们的思路是,不引入其他素数。素数的定义是,除了1和本身,原创 2017-02-18 10:07:01 · 293 阅读 · 0 评论 -
CodeFroces 766B Mahmoud and a Triangle
题意:给出n条线段,求是否存在可以组成三角形的三条边解:保证两边之和大于第三边即可,排序后遍历整个数组,只需看最接近的三条线段即可,如果最接近的三条线段都不成立,那么其他必定不成立。即若a[i] + a[i + 1] 代码:#includeusing namespace std;int a[100005];int main(){ int n; bool flag = 0;原创 2017-02-08 05:10:12 · 296 阅读 · 0 评论 -
Codeforces285C Building Permutation
Building PermutationTime Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64uSubmit Status Practice CodeForces 285C DescriptionPermutation p is an order原创 2016-11-23 23:47:31 · 577 阅读 · 0 评论 -
Codefroces194A Exams
H - ExamsTime Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64uSubmit Status Practice CodeForces 194A DescriptionOne day the Codeforces round author原创 2016-11-21 13:12:52 · 532 阅读 · 0 评论 -
Codefroces246B Increase and Decrease
DescriptionPolycarpus has an array, consisting of n integers a1, a2, ..., an. Polycarpus likes it when numbers in an array match. That's why he wants the array to have as many equal numbers as原创 2016-11-21 13:04:15 · 352 阅读 · 0 评论