BestCoder Round #85(ZOJ1569尚未验证)
A题
子序列和啊,就要想到前缀和的差。这个转换一定要!记着!那么i到j的一段子序列和Sij%m == 0就等价于(Sj-Si-1)%m == 0 了,那么什么意思呢?就是如果有两段前缀和%m的模是一样的,那么是不是就存在着一段子序列满足条件了,然后注意一下边边角角应该就没问题了。
因为ZOJ坏掉了,所以我尚未验证以下答案的ans是否就是满足条件的序列总数!移步ZOJ1569自行验证。
#include <cstdio>
#include <set>
#include <map>
#include <queue>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long LL;
const int INF = 0x3f3f3f3f;
+ ];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
,sum = ;
memset(num,,sizeof(num));
scanf("%d%d",&n,&m);
; i < n; i++)
{
scanf("%d",&x);
sum = (sum + x) % m;
) ans++;
num[ sum ]++;
}
; i< m; i++)
{
ans += (num[i] - ) * num[i] / ;
}
)
printf("YES\n");
else
printf("NO\n");
}
;
}
B题(思路)
这个应该算是个贪心。真尼玛= =,脑洞题。
我也不知道怎么讲比较好,自己拿个笔和纸琢磨一下,应该就搞懂了,网上那些题解说的感觉也不好。还是要拿笔,照这个程序,手动模拟一下,应该就能搞懂了。
#include <cstdio>
#include <set>
#include <map>
#include <queue>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long LL;
typedef long long LL;
const int INF = 0x3f3f3f3f;
;
int a[maxn];
int main()
{
int t,n,m;
scanf("%d", &t);
while(t--)
{
scanf("%d%d", &n, &m);
; i < n - ; i++)
scanf("%d", &a[i]);
sort(a, a + n - );
LL ans = n;
; i< n - m; i++)
ans += a[i];
printf("%I64d\n", ans);
}
;
}
C题
这题竟然是交一暴力就能A了。。我也是醉了啊。
学个小姿势:素数定理
也就是说1到n以内的素数个数大概是O(sqrt(x) * ln x)个
那么就可以看出这道题,枚举暴力的时间复杂度,其实就是对n=sqrt(x),的前后的一些素数进行枚举嘛,所以最多和1到sqrt(x)范围内的素数个数差不多?所以暴力的时间复杂度O(n4logn2\sqrt[4]{n}log\sqrt[2]{n},所以能直接枚举。
素数,总是要注意一些比2小的数的情况。这道题里面还有什么,是不是正数啊,有没有加LL啊,巴拉巴拉啦。打高亮了。
#include <iostream>
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long LL;
const LL INF = 0x3f3f3f3f3f3f3f3fll;
LL x,z,ans;
bool judge(LL t)
{
) return false;
LL temp = t;
; i * i <= temp; i++)
{
)
{
)
return false;
temp /= i;
}
}
ans = min(ans,abs(t * t - x));
return true;
}
void solve()
{
;
LL z = sqrt(x);
if(z * z < x) z++;
for(LL i = max(z,2LL);;i++)
{
if(judge(i))
break;
}
;i>;i--)
{
if(judge(i))
break;
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%I64d", &x);
ans = INF;
solve();
printf("%I64d\n",ans);
}
;
}
4√nlog2√n)
BestCoder Round #85(ZOJ1569尚未验证)的更多相关文章
- BestCoder Round #85 hdu5778 abs(素数筛+暴力)
abs 题意: 问题描述 给定一个数x,求正整数y,使得满足以下条件: 1.y-x的绝对值最小 2.y的质因数分解式中每个质因数均恰好出现2次. 输入描述 第一行输入一个整数T 每组数据有一行,一个整 ...
- BestCoder Round #85 hdu5777 domino
domino 题意: 问题描述 小白在玩一个游戏.桌子上有n张多米诺骨牌排成一列.它有k次机会,每次可以选一个还没有倒的骨牌,向左或者向右推倒.每个骨 牌倒下的时候,若碰到了未倒下的骨牌,可以把它推倒 ...
- BestCoder Round #85 hdu5776 sum
sum 题意: 问题描述 给定一个数列,求是否存在连续子列和为m的倍数,存在输出YES,否则输出NO 输入描述 输入文件的第一行有一个正整数T,表示数据组数. 接下去有T组数据,每组数据的第一行有两个 ...
- HDU5780 gcd (BestCoder Round #85 E) 欧拉函数预处理——分块优化
分析(官方题解): 一点感想: 首先上面那个等式成立,然后就是求枚举gcd算贡献就好了,枚举gcd当时赛场上写了一发O(nlogn)的反演,写完过了样例,想交发现结束了 吐槽自己手速慢,但是发了题解后 ...
- HDU5779 Tower Defence (BestCoder Round #85 D) 计数dp
分析(官方题解): 一点感想:(这个题是看题解并不是特别会转移,当然写完之后看起来题解说得很清晰,主要是人太弱 这个题是参考faebdc神的代码写的,说句题外话,很荣幸高中和faebdc巨一个省,虽然 ...
- HDU 5778 abs (BestCoder Round #85 C)素数筛+暴力
分析:y是一个无平方因子数的平方,所以可以从sqrt(x)向上向下枚举找到第一个无平方因子比较大小 大家可能觉得这样找过去暴力,但实际上无平方因子的分布式非常密集的,相关题目,可以参考 CDOJ:无平 ...
- HDU5777 domino (BestCoder Round #85 B) 思路题+排序
分析:最终的结果肯定会分成若干个区间独立,这些若干个区间肯定是独立的(而且肯定是一边倒,左右都一样) 这样想的话,就是如何把这n-1个值分成 k份,使得和最小,那么就是简单的排序,去掉前k大的(注意l ...
- HDU 5776 sum (BestCoder Round #85 A) 简单前缀判断+水题
分析:就是判断简单的前缀有没有相同,注意下自身是m的倍数,以及vis[0]=true; #include <cstdio> #include <cstdlib> #includ ...
- BestCoder Round #85
sum Accepts: 640 Submissions: 1744 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/13107 ...
随机推荐
- elastichq 离线安装
plugin install file:///home/hadoop/xxxx.zip 奇怪的是,这样安装成功后访问host:port:9200/_plugin/hq/ 仍然会报错,找不到一些js函数 ...
- 【转】Maven3把命令行创建的web工程转成Eclipse和IntelliJ Idea的工程
参考链接:http://blog.sina.com.cn/s/blog_4f925fc30102ed5b.html 大前提:在执行mvn eclipse:eclipse命令之前一定要先存在一个含有po ...
- 创建文本注记TextElement
1.创建一个字体 /// <summary> /// 字体设置 /// </summary> /// <param name="size">Th ...
- Google Map API V3开发(2)
Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...
- Web jquery表格组件 JQGrid 的使用 - 全部代码
系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...
- 网络抓包wireshark
抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过的抓包工具有fiddle.wireshark,作为一个不是经常要抓包的人员,学会用Wireshar ...
- Spring 入门知识
------------------------------------------------------------------------------------- Spring是什么? Spr ...
- vijos1250 最勇敢的机器人
背景 Wind设计了很多机器人.但是它们都认为自己是最强的,于是,一场比赛开始了~ 描述 机器人们都想知道谁是最勇敢的,于是它们比赛搬运一些物品. 它们到了一个仓库,里面有n个物品,每个物品都有一个价 ...
- [Linux] 账户管理命令(一)
用户和用户组 Linux用户组的所有信息都存放在/etc/group文件中.具有某种共同特征的用户集合起来就是用户组(Group).用户组(Group)配置文件主要有 /etc/group和/etc/ ...
- linuxmint 17安装scim输入法
安装输入法框架: sudo apt-get install scim 安装输入法: sodu apt-get install scim-pinyin 此时启动的输入法的候选词框不随着光标移动,需要安装 ...