随笔分类 - codeforce
摘要:吐槽:虽然是水题,,但是没有找到思路。。 题意:输入a,b,找到一个x,使(a^x)+(b^x)的值最小。 题解:还是博客大佬的思路好懂一些。 二进制,只有0 1两种情况。 当a=0,b=1时,x无论取0 还是1,都会得到1。同理,a=1,b=0,也是1。 当a=1,b=1时,x取1,就会得到0;
阅读全文
摘要:题意:最初,盒子是空的。你可以放一些细菌进去。每个细菌每晚会分裂成两个(2变4,4变8)。你需要在某一时刻,观察到X个细菌,请问至少投放多少个细菌。 题解:观察这道题,有二进制特征,应该想到位运算。 int main() { int n,ans=0; cin >> n; while (n) { if
阅读全文
摘要:题意:输入4个数x,y,a,b。花费a可以让x,y任意一个数减一加一,花费b可以让x,y同时加一减一。求最少花费多少可以让x,y变成0。 题解:这是一道贪心题。1)当x,y=0时,花费为0。2)其他情况根据条件讨论,比较只使用a花费的方法和a,b混用的方法谁花费小。 ACcode: int main
阅读全文
摘要:题意:1)a⋅x的含义是一个字符串a,重复x次形成的字符串。如, "abc" ⋅ 2 = "abcabc"。2)如果存在一个数x,使b⋅x=a,那么就称字符串a能被字符串b整除。3)把最短的能同时被字符串s和t整除的非空字符串称为LCM(s,t)。输入两个字符串,找出他们的LCM字符串并输出,否则输
阅读全文
摘要:题意:有t个样例,输入一个数n,求输出一个n个数的数组p,并满足每个数的数值和对应的角标不相同。(p1!=1) 题解:只需要想出最简单的满足条件的表示方法即可。如果是偶数,直接倒着输出;如果是奇数,还是倒着输出,再用一个数把中间的数换掉就行了。(当然也可以统一处理,倒着输出,把中间数换成固定的一个数
阅读全文
摘要:题意:这是一道配对题,输入数组a,数组b(个数不必相同),要求凑成一对的两个数|a-b|不大于1。求最多能配出多少对。 题解:这是一道贪心题,希望能够尽可能多的配对。第一步,排序:这样能过从小的开始比。如果能过满足条件,就计入答案,就比较下一组数,如果一方的数大于另一方,就让小的那一方,向后移一个数
阅读全文
摘要:题意:给出一串字符,字符里有‘(’,')'和‘?’,规定 (())(), () 和 (()(())) 是正确的。‘?’可以变成‘(’或‘)’,如果本身满足条件或通过改变‘?’满足,输出YES,否则输出NO。 题解:注意题中有一句话:一个样例里只有一组括号。所以可以分类讨论:当‘)’在最前或‘(’在最
阅读全文
摘要:题意:有T个测试,输入n个数组成一个数组a,再输入一个x。遍历这个数组,当遍历到的a[i],能被x整除时,就要在这个数组的末尾加上x个a[i]/x,然后移向下一个数,之后添加的数也要按照这个规律进行下去。当a数组中的后增加的数不能被x整除时,程序结束。求这个数组按照这个规律进行下去后,得到的总和。
阅读全文
摘要:题意:给括号配对,像“(())”,"()",都能直接配对,像“)(”这种就需要反转一次,输入偶数个“()”,有一半“(”,有一半“)”,求需要反转的次数。 题解:感觉像之前那道01反转的题,可以通过记录“)”和“(”出现的先后顺序和出现次数,来判断是否需要翻转。 ACcode: int main()
阅读全文
摘要:题意:就是输入一串数,由0,1组成,在这一串数中,选择一个区间,把这个区间中的0变成1,1变成0。希望能让这一串数在改变后,得到的1最多并输出最后得到的1的个数。 题解:从第一个数开始遍历,找到0开头的序列,记住最大序列的长度,把不满足条件的数全部加起来。最后将最大序列部分和不改变部分相加,得出答案
阅读全文
摘要:题意:求一个数,给出它的长度n,要求这个数能被t整除,如果找不到这个数,就输出-1。 题解:找特殊解,能被t整除,只要输出n个t,就肯定能被整除。当t=10时,需要特殊处理,比如n=1时,输出-1,其他输出100,1000,1000(依照n的长度进行输出)。 ACcode: int main(){
阅读全文
摘要:题意:FAfa公司里有n个人,他想分成i个队伍,要求每个队伍人数相等且每支队伍不少于2人(一个队长,一个队员啦)。求有多少种分法。 题解:最大10000,不会超时,直接用for循环(因为最少一个队有两个人,所以for循环只需要跑到n/2就行了),找到除去队长数,队员总数刚好能被队长数整除的队伍数,把
阅读全文
摘要:题意:给Vanya n个方块,用来堆塔,塔的第i层有1+2+3+......+i个,问给出的方块最多能堆几层,输出层数。 题解:时间没有限制,所以用简单的for循环求和就可以解决。主要是bug改了几次。。。 ACcode: int main() { int n; cin >> n; int sum
阅读全文
摘要:题意:输入n个数(第一排输入n),组成一个数组ai(第二排输入数组)。第三排输入的数组比第二排少一个数(消失的数是第二排存在的),第四排的数组又比第三排的数组少一个数(消失的数是第三排数组存在的数)。输出每次消失的那个数。 题解:这道题没有过分的时间限制,所以就直接排序,比较。当两个元素不相同时,输
阅读全文
摘要:题意:输入一组数据,再输入一个数(多组输入),判断在这组数据中,这个数大于等于多少个数。 题解:思路很简单,就是去找有多少个比该数小的数就行了,使用二分查找,这样省时间(普通for循环会超时,呜呜呜) ACcode: #include<stdio.h>#include<iostream>#inclu
阅读全文
摘要:题意:题目设定在1到10000之内,有一些数被成为无聊的数(如果这个数字中都是相同的数字,包括只有一个数字的数,如1,2,3)。输入一个n,求从1到n这个范围内,无聊的数的数字个数的总和。(注意!是数字的个数(1111是4个数字)!!!!) 题解:范围是到10000,所以最多有四位数,所以一个数(1
阅读全文
摘要:题意:给出正多边形的边数,如果正多边形至少有一条边与x轴垂直且有一条边与y轴垂直,输出“YES”,否则输出“NO”。 题解:多画几个图形之后,会发现,当边的条数可以被4整除时,图形会满足条件,输出“YES”,其他情况输出“NO”。 ACcode: int main(){ int t; cin >>
阅读全文
摘要:题意:给出三个数a,b,c和另一个数n,保证A+B+C=n并且A+a=B+b=C+c;(A,B,C为n分出来的三个数)如果能够实现,即输出“YES”,否则输出“NO”。 题解:需保证a,b,c,n之和能被3除尽且a,b,c三个数的差之和不能大于n(否则就不能补上),然后判断一下补齐a,b,c后,n的
阅读全文
摘要:题意:判断是否有对应角度的正多边形,是则“YES”,否则“NO”。(多组输入) (这道题跟本不是1100) 题解:只需要知道正多边形的外角和为360°,以及角度不可能小于60°(正三角形),即可得到正解。 AC代码: #include <iostream> using namespace std;
阅读全文