![](https://img-blog.csdnimg.cn/9e7f3513e46e45f6888348cca8b1b19b.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
日积月累
大学期间刷题的沉淀,前期主要以C语言为主,后期是JAVA实现。工作后更新较少。
Blaze Jack
这个作者很懒,什么都没留下…
展开
-
PolynomialSPOJ - POLYNOM
The number of spectators at the FIFA World Cup increases year after year. As you sell the advertisement slots during the games for the coming years, you need to come up with the price a company has to...原创 2018-09-05 20:59:41 · 4433 阅读 · 0 评论 -
CodeForces - 426A. The Useless Toy
题意:对于给出的方向经过n次旋转后,能否转成第二个方向,如果能输出顺时针还是逆时针旋转,如果不能或者两种方式都能转到就输出undefined。思路:直接模拟风车的旋转,然后判断即可。#includeusing namespace std;int main(){ char ni[8]={'v','>','^','','^','<',}; char sun[8]={'v','原创 2017-07-31 20:14:24 · 289 阅读 · 0 评论 -
HihoCoder - 1634(最小的最大子矩阵和)
写到要疯掉,这种需要细节的题目得在精神状态比较好的时候写。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<queue>#i原创 2018-10-20 18:31:48 · 541 阅读 · 0 评论 -
冥土追魂(暴力枚举)
刚开始以为是博弈,原来是暴力。可以证明:最优情况下一定是最多只能有一行只选一部分,剩下n-1行要不整行全选,要不不选也就是说对于当前k,暴力枚举哪一行选择前(k%m)个,然后剩下n-1行中选择所有和最小的(k/m)行就可以了复杂度O(n*m*logm+n²)#include<iostream>#include<cstdio>#include<al...原创 2018-10-23 22:04:38 · 786 阅读 · 0 评论 -
CodeForces - 426B. The Festive Evening
题意:一座城堡有26个入口,分别用26个字母表示,有n个客人,k个守卫。接下来的字符串规定了客人到来时要走哪个门,这个门在客人来之前会打开(注意不是一开始就打开每扇将会有客人进来的门,而是当这位客人快到的时候才打开,也就是说一个个打开)这个门在最后一个客人进去之后才会关闭。同时每次有一个门打开都要有一名士兵去把守,直到最后一个客人进城,他才可以离开去把守别的门。问:会不会出现守卫忙不过来的情况原创 2017-07-31 20:19:36 · 277 阅读 · 0 评论 -
Uva 550 Multiplying by Rotation(模拟乘法)
题意:给出进制,某个数的最后一位,还有乘数,求这个数的位数。我直接举个例子abc4*7=4abc。进制10,数的最后一位为4,乘数为7.因为4*7=28,所以c为8,又4*8=32,所以b为4,这样一直推下去直到4,且没有进位就结束。#includeusing namespace std;int main(){ int sys,e,s; while(scanf("%d %d %d原创 2017-08-11 09:38:48 · 280 阅读 · 0 评论 -
一个环,有n个点, 问从0点出发,经过k步回到原点有多少种方法
动态规划,每个节点都可以由左边或者右边移动过来。 public static void main(String[] args) { //走n步,环长为k int n=8,k=10; //经过i步到达j点的组合数 int [][]dp = new int[n+1][k]; //经过0步到0点的组合数为1 dp[0][0]=1; for(int i = 1; i <= n ;i++){原创 2021-07-20 12:37:25 · 421 阅读 · 0 评论 -
UVA - 575 - Skew Binary
题意: 跟二进制的计算有点相似,区别是每个位置的计算都要减去1。思路:直接一位一位的计算。#include#include#include#define eps 1e-6using namespace std;int main(){ char a[100]; while(scanf("%s",a)&&a[0]!='0'){ int n=strlen(a);原创 2017-08-11 09:25:19 · 215 阅读 · 0 评论 -
CodeForces - 121A - Lucky Sum
题意:对于每个数a,用一个由4或者7组成,且大于等于a的数替代它,要最接近的,比如8,那就用44替代,不能用47。给定一个区间,求这些区间的数被替代完之后的总和。思路:看到题目就想到打表,枚举一下所有与4和7有关的数字。其实我们可以把所求区间切成一段一段,每一段都会是有同一个替代数,这个替代数乘以片段长度就是这段数字的总和。#include#include#include#i原创 2017-08-14 15:36:18 · 448 阅读 · 0 评论 -
[Light oj] 1245 - Harmonic Number (II)
I was trying to solve problem '1234 - Harmonic Number', I wrote the following codelong long H( int n ) { long long res = 0; for( int i = 1; i n; i++ ) res = res + n / i; r原创 2017-10-20 19:26:00 · 188 阅读 · 0 评论 -
uva694
题意:给定数字A,还有limit,当a是偶数执行第三步a=a/2,然后回到第二步;当a是奇数是执行第三步,a=a*3+1,然后回到第二步;停止执行的条件是回到第二步时a=1,或者在执行第三步后A的值超过了limit;输出运算过程中,没有超过limit的值的个数,包括初始值A。#includeusing namespace std;long long int a,b,co,ta;int原创 2017-07-24 20:42:41 · 391 阅读 · 0 评论 -
IndiaHacks 2nd Elimination 2017- A. Binary Blocks
题意:对于给出的矩阵,选择一个整数k,为了使每个k*k正方形里的数字全为1或者全为0,你需要变换某些不一样的数字,求变换的最少次数。当n或者m不能整除k时,可以延长到整除为止,延长部分数字为0;注意是最少次数,所以要找到最合适的k。思路: 先打表,算出每个位置所包含的数字1的数目,之后在计算每个方块的数字时,只需要用相减的方法就可以算出来,不用再遍历。#include#incl原创 2017-08-08 09:20:25 · 221 阅读 · 0 评论 -
hdu2089--不要62
中文题就不说题意了,直接说思路,第一次打表,把所有一到一百万每个数字打了一遍,直接相减就可以得出结果了。#include#includeusing namespace std;int a[1001000];int judge(int nu){ while(nu>0){ if(nu%100==62||nu%10==4) return 0; nu=nu/10; } ret原创 2017-07-27 15:04:10 · 385 阅读 · 0 评论 -
求两个数组元素相乘和(区间dp)
给定两个数组x,y,每次从数组x顺序取一个数a,从数组y的头或者尾巴取一个数b,求所有a*b的最大和。举例说明:数组 x原创 2021-06-20 23:30:06 · 1152 阅读 · 1 评论 -
hdu4747(求mex区间之和)
求区间所有mex之和,用线段树会快一秒,但是写的很长,所以我写了递推版的。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<queue...原创 2018-07-24 22:32:53 · 820 阅读 · 0 评论 -
HDU1326:Box of Bricks
题意:怎样移动最少的方块让所有的方块一样高,求平均一下然后分别算出差值相加就可以了,很水。#include#includeusing namespace std;int a[100];int main(){ int n,g=1,ju=0; while(scanf("%d",&n)&&n){ // if(ju++) printf("\n"); printf("Set #%d原创 2017-08-10 14:02:49 · 253 阅读 · 0 评论 -
uva1339--映射
题意:判断第二个字符串能否从第一个加密得到。加密得方式有两种,一种是对于同一种类型的字符用另一种进行替换。第二种加密方式看起来比较复杂,其实就是打乱的字符的顺序。两种加密方式可以同时使用。思路:分别统计两个字符串中26个字母出现的频率,然后依次对比,映射成立就yes,反之no;#include#include#includeusing namespace std;char原创 2017-07-31 19:43:31 · 285 阅读 · 0 评论 -
poj2109-Power of Cryptography
题意: 对于给出的数开n次方。思路:直接用double型数据就可以过,要注意的是pow的第二个参数要写成1.0/n;#include#includeusing namespace std;typedef long long ll;int main(){ double n,p; while(cin>>n>>p){ printf("%.0lf\n",pow(p,1.0/n原创 2017-08-09 09:51:24 · 216 阅读 · 0 评论 -
CodeForces - 233B - Non-square Equation(不小心会爆int)
思路:x2 + s(x)·x - n = 0,把这个方程配方一下,可以求出x的表达式。int x=sqrt(n+s*s/4)-s/2;因为s最多81,所以可以直接枚举所有x,再进行验证。#include#include#include#include#include#define mx 1000000000using namespace std;long lon原创 2017-09-04 15:41:59 · 238 阅读 · 0 评论 -
Uva 10110 - Light, more light
题意:走廊有n盏灯,一个人会在走廊来回走n次。假设这是第k次走,那么位置能被k整除的灯都要改变一次状态。求最后一个灯的最终状态(开或者关)。注意:人走的是n次来回,在回来时不会去改变灯的状态,灯的初始状态是关闭的。思路:其实就是求数n的因子数目的奇偶性,只有能开方的数,因子数目才是奇数,也就是这种n才能使最终状态为开。#include#include#include#de原创 2017-08-11 09:27:01 · 263 阅读 · 0 评论 -
poj2080--算日期
题意:起始日期为2001-1-1,求过了那天后的日期还有那天是周几。思路:最重要的是判断闰年,加一个判断函数,之后周几对7取余数就知道了。#include using namespace std; int mon[2][13]={0,31,28,31,30,31,30,31,31,30,31,30,31,0,31,29,31,30,31,30,31,31,30,31,30,31原创 2017-07-24 15:47:49 · 185 阅读 · 0 评论 -
Uva 621 Secret Research
题意:对于给出的数字判断是四种类型的哪一种,其实很简单因为s就三种情况,所有输入枚举的话也就12种。#include#includeusing namespace std;char s[15];int n;int ju(int i){ if(s[i]=='1'||s[i]=='4'||(s[i]=='7'&&s[i+1]=='8')) return 1; else retu原创 2017-08-10 11:15:04 · 176 阅读 · 0 评论 -
hdu 1302 The Snail
题意:一直蜗牛想爬出深度度为h的井,白天向上爬u米,晚上下降d米,还有一个就是第二天向上爬的距离为减少F%,第三天又减少F%,u至少为零,不会变成负数。当蜗牛爬出井口或者滑到井底就输出当时的天数。注意:刚好到井口或者刚好到井底是不算的。思路:模拟蜗牛的爬行。#include#includeusing namespace std;int main(){ double h原创 2017-08-09 10:31:08 · 181 阅读 · 0 评论 -
SPOJ - ESYRCRTN(找规律)
F(1)=1F(2)=3F(N)=F(N-1)-F(N-2)Now you are given N, you have to find the value of F(1)+F(2)+......+F(N) .InputInput starts with an integer T(1OutputFor each test case, print the value.Ex原创 2017-09-09 13:08:21 · 223 阅读 · 0 评论 -
CF 279C Ladder(区间问题)
You've got an array, consisting of n integers a1, a2, ..., an. Also, you've got m queries, the i-th query is described by two integers li, ri. Numbers li, ri define a subsegment of the original ar原创 2017-10-20 19:10:10 · 357 阅读 · 0 评论 -
poj - 3061(尺取法)
A sequence of N positive integers (10 < N < 100 000), each of them less than or equal 10000, anda positive integer S (S < 100 000 000) are given. Write a program to find the minimal length of thesubse原创 2018-01-03 22:27:03 · 201 阅读 · 0 评论 -
线段树加dp
rmq#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<queue>#include<set>#define ...原创 2019-04-14 20:50:34 · 226 阅读 · 0 评论 -
字符串处理
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<queue>#include<set>#define mem(a,...原创 2019-04-15 22:07:01 · 136 阅读 · 0 评论 -
fzu2271(佛洛依德)
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<queue>#include<set>#define mem(a,...原创 2019-05-16 20:56:34 · 301 阅读 · 0 评论 -
牛客网多校训练 j题 (莫队)
链接:https://www.nowcoder.com/acm/contest/139/J来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒空间限制:C/C++ 524288K,其他语言1048576K64bit IO Format: %lld题目描述Given a sequence of integers a1, a2, ..., an and q pairs of in...原创 2018-07-19 18:48:14 · 215 阅读 · 0 评论 -
poj 2823 滑动窗口 经典单调队列
不知道为什么交G++的话,用printf反而比cout慢,而且就是慢了这零点几秒,刚好超时,我改了半天的代码,最后才找出是输出超时,还有一个解决的方法就是交c++。#include<iostream>#include<cstdio>using namespace std;const int mx = 1e6+10;int p[mx],qmax[mx],qmin[...原创 2018-07-10 12:08:37 · 174 阅读 · 0 评论 -
CodeForces - 617E(莫队)
开数组的时候少开了一个一个位置,wa很难过。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<queue>#define ls 2*原创 2018-07-07 17:23:37 · 257 阅读 · 0 评论 -
poj 3017(单调队列)
想了半天终于是看的题解,网上的题解好像都是出自一人之手,写的都一毛一样,令人窒息。建了一个递减的队列,具体很难讲的清,又不想复制别人的讲解,就这样吧。#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#incl...原创 2018-07-10 12:04:51 · 244 阅读 · 0 评论