
比赛
include_zzy
真正不羁的灵魂不会真的去计较什么,因为他们的内心深处有腐王般的骄傲
展开
-
2017.5.21入门组总结
入门组总结第一题:题意:如果每个数字的每一位都不能出现t,则数到第m个是第几个思路:数据规模不大,就1≤m≤100000,足足可以过,“暴力出奇迹!!!” 于是开码,也就是一个循环,每次将i转为字符串,post一下有没有t,没有就+1 第二题:题意:有两种人,每个人都有一个能力值,如果第一种人的任意一个 人的能力值比第二种的人大,就算一种友好关原创 2017-05-26 21:06:03 · 400 阅读 · 0 评论 -
JZOJ 1844——数数
仍然是预处理sum[i]表示前i个数的和,只枚举右端点r问题就转换成了在sum[r-k..r-1]中找一个最小值。那么我们维护一个元素单调递增的队列每次处理完一个r后把队尾所有不小于sum[r]的元素删掉后把sum[r]放进队尾。那么每次只用把队头中元素在原数组中的下标代码如下:#include<algorithm>#include<cstdio>#include<cmath>#inc原创 2017-06-05 20:40:35 · 343 阅读 · 0 评论 -
JZOJ 1845——约数
先将1~n所有非素数除1外的最小公因数求出来 最后循环求出加上每一个i的除1外的最小公约数,如果为0,则加本身代码如下:var n,i,j:longint; ans:int64; w:array[2..10000000] of longint;begin readln(n); for i:=2 to trunc(sqrt(n)) do if w[i]=0 then f原创 2017-06-05 20:30:08 · 351 阅读 · 0 评论 -
JZOJ 1843——小球
这题,只有一种情况才可以加,就是c[i]<>c[j] 那么定义一个sum1和sum2为1和0分别出现多少次 每次循环开始s1+sum1,s2+sum2 如果为0,则ans+s1,sum1+1 如果为1,则ans+s2,sum2+1代码如下:var n,i,x:longint; ans,s1,s2,sum1,sum2:int64;begin readln(n);原创 2017-06-05 20:24:34 · 384 阅读 · 0 评论 -
JZOJ 1842——【汕头市选2014】平均
其实,题意简单化就是叫你求最大的一个数 直接枚举代码如下:var max,a,i,n:longint;begin max:=0; readln(n); for i:=1 to n do begin read(a); if a>max then max:=a; end; write(max);end.原创 2017-06-05 20:15:43 · 505 阅读 · 0 评论 -
2017.6.4 入门组 NO.6——树
80%:做不出100%,先来个80分水法 首先将x,y之间有边的记录两个,存在a数组里,一个是x,y,另一个是y,x 然后将这个a数组排序,将a[i,1]按升序排序。 Then 就可以求出每一个点与多少个点有边,求出每一个点的"子点"的区间,用l和r数组存 再用dfs求出以1作根,每一个点的father是谁 预处理Over 如果为1,新建一原创 2017-06-05 20:02:54 · 352 阅读 · 0 评论 -
2017.6.4 入门组 NO.5——序列
f[i,j*k]:=f[i,j*k]+f[i-1,j]; 设f[i,j]表示前i个,当那一位数字为j*k的时候的最大好序列个数代码如下:const maxn=2000; p=1000000007;var f:array [1..maxn,1..maxn] of longint; i,j,k,n,m:longint;原创 2017-06-05 19:49:19 · 330 阅读 · 0 评论 -
2017.6.4 入门组 NO.4——猜数
这题就是求一个区间[l..r],那开始将l=-10000 r=10000 每次输入一次判断,如果为”N”,那么就将符号反转,如 >→<= <→>= >=→< <=→> 那么符号处理好后, ①如果为”>”或”>=”,那么如果当x大于l且小于或等于r,则l=x 如果当x大于r,则输出”Impossible” ②如果为原创 2017-06-05 19:42:11 · 366 阅读 · 0 评论 -
2017.6.4 入门组 NO.2——睡眠
其实这题就是将第二个时间-第一个时间,小于0的补全就A了代码如下:var x,y,k:string; l1,l2,x1,x2,x3,y1,y2,y3:longint;begin readln(x); readln(y); l1:=pos(':',x); l2:=pos(':',y); k:=copy(x,1,2); val(k,x1); k:=copy(x,l原创 2017-06-05 19:23:48 · 389 阅读 · 0 评论 -
2017.5.14入门组总结
2017.5.14入门组总结第一题:题意:求1~n a[i]*b[i]+c[i]的和思路:暴力实现容易,一看数据“1<=n<=1,000,000”!!!直接暴力模拟,时间复杂度o(n)!于是乎,直接码程序2min搞定第二题:题意:将a[i][j]的位置,往下移i位,到底就换到第一行思路:也是一道水题,不愧是入门组n<=100,暴力没毛病迅速码.......下一题第三题:题意:一开始原创 2017-05-17 20:49:14 · 379 阅读 · 0 评论 -
2017.5.27入门组总结
第一题:题意:有n个数,删掉m个数后,每两个相邻的数相乘,求最后的值思路:1 第二题:题意:给出一个人要做的题数,和做每题的时间。给出开始和结束的时间,求出最多能做多少题思路:主要是要把给多少分钟做题求出来,模拟一波求最多的题数,其实就是贪心,快排+while 数据不大,暴力模拟足够了 第三题:题意:有t组数据,每次给两个点,判断这两个点连一条线中间有没原创 2017-05-28 16:14:26 · 437 阅读 · 0 评论 -
2017.6.4 入门组 NO.1——k好数
数据1<=n<=1000000,时间复杂度最大O(1000000*6) 暴力足够了,于是,便开始码暴力: 循环枚举i,将i转为字符串,每一位的判断是否超过k:如果每一位都没超过就+1代码如下:var n,k,i,j,o,l:longint; s:string;begin readln(n,k); for i:=1 to n do begin原创 2017-06-05 19:16:24 · 403 阅读 · 0 评论