链接:https://ac.nowcoder.com/acm/contest/271/A
来源:牛客网

御坂美琴
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

misaka是呱太爷爷的小粉丝,呱太爷爷有一句话说的好:"一尺之棰,日取其半,万世不竭"。

misaka现在有 n 个呱太玩偶放在一堆,每一次操作,misaka会选择当前个数 > 1 的一堆呱太玩偶。并将这一堆呱太玩偶分成 两堆,x 是当前这一堆玩偶的个数。现在 misaka 想将玩偶分成 m 堆,其中第 i 堆呱太玩偶的个数是 ai ,你需要告诉 misaka 是否能通过若干次操作将玩偶分成指定的这 m 堆。如果可以输出 ,否则输出

输入描述:

第一行两个数 n, m 。
接下来一行 m 个数 a

i

输出描述:

输出共一个字符串 

,表示 misaka 能否将玩偶分成指定的 m 堆。
    简单模拟一下就好了,我的做法是先将输入的ai按降序排列,然后不断地由大到小分解石头,中间遇到等于ai的石头数就把这堆给它。
一开始以为queue就好了,WA很多次,后来发现要用priority_queue,比如25,25-> 25,13,12 -> 13,12,13,12 这样就不是严格递减了,
换成堆AC。
  
 # include <iostream>
# include <cstdio>
# include <cstring>
#include<queue>
# include <algorithm>
using namespace std;
typedef long long LL;
using namespace std;
LL a[];
priority_queue<LL>q;
int main(){
LL n,m;
cin>>n>>m;
LL s=;
for(int i=;i<=m;++i)scanf("%lld",a+i),s+=a[i];
if(s!=n){
puts("ham");
return ;
}
q.push(n);
bool ok;
sort(a+,a++m,greater<LL>());
int i=;
while(i<=m && !q.empty() ){
LL p=q.top();
q.pop();
if(p>a[i]){
q.push(p-p/);
q.push(p/);
}
else if(p==a[i]){
n-=a[i];
i++;
continue;
}
else{
break;
} }
if(n== && i==m+) puts("misaka");
else puts("ham");
return ;
}

链接:https://ac.nowcoder.com/acm/contest/271/B
来源:牛客网

白井黑子
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 524288K,其他语言1048576K
64bit IO Format: %lld

题目描述

kuroko 作为常盘台唯一的空间系能力者,在每年例行的能力测试中可绝对不能让 misaka 失望哦,但是由于她的等级只是 level 4「大能力者」,在能力测试中会遇到不少困难。kuroko 是一个凡事都会尽力的好女孩,所以请你帮她算出她最多能完成多少测试吧

对于空间系能力者测试的内容是检验对物体进行空间移动的能力,测验时一共有 n 个物品放在一条直线上,每个物品都有一个坐标 ai ,kuroko 可以选择两个物品并使用能力交换它们的位置,但是如果两个物品的坐标不满足 kuroko 的计算公式的话,她就没有办法使用能力。

具体来说,对于坐标 ai ,其在 kuroko 的计算公式中是用参数 f(ai) 表示的。f(ai) 是 ai 各数位相乘的结果,由于 level 4「大能力者」在学园都市中也是很强大的存在,所以满足公式的条件不会太苛刻,对于两个物品 ai, aj ,如果 f(ai) x f(aj) 不能被某个自然数的 k 次幂表示 的话,那么 kuroko 就能对这两个物品使用能力。

现在 kuroko 想知道,有多少对物品她可以对其施展能力,知道了这个后她就知道自己能完成多少测验了。

这里认为任何自然数的 0 次幂都是1;

 
 
 
 
   一开始直接理解错题意,以为是k^x,想着直接暴力扫就好了,后来发现是x^k = =
 注意到把a数组转化为f之后,f里每个数的因子都只有2,3,5,7这四个,每个数都可以写作  A=2^v1 * 3^v3 * 5^v5 * 7^v7 的格式。
我们把每个数的<a1,a3,a5,a7>处理出来,要想A1*A1'是k次幂数显然要满足(vi+vi')%k==0,然后每次找他的补集统计一下不合法的数量就好了。
A<=1e18所以 a1,a3,a5,a7<=60,注意特判一下
k=0的情况。

段错误半天,后来发现找补集的时候可能对应的系数超出60,也就说明不存在这种方案,直接特判下就过了。
 #include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<map>
#include<algorithm>
using namespace std;
typedef long long LL;
using namespace std;
LL a[];
int v[]={,,,};
int g[][][][];
int b[][];
LL f(LL n){
if(!n) return ;
LL s=;
while(n){
s*=(n%);
n/=;
}
return s;
}
int main(){
LL s=,n,k,zero=;
scanf("%lld%lld",&n,&k);
for(int i=;i<=n;++i) scanf("%lld",a+i),a[i]=f(a[i]);
if(k==){
puts("");
return ;
}
if(k==){
for(int i=;i<=n;++i)if(a[i]==)s++;
printf("%lld\n",n*(n-)/-s*(s-)/);
return ;
}
for(int i=;i<=n;++i){
if(a[i]==){zero++;continue;}
LL tmp=a[i];
for(int j=;j<;++j){
while(tmp&&tmp%v[j]==){
b[i][j]++;
tmp/=v[j];
}
b[i][j]%=k;
if(b[i][j]>){
while()puts("fuck");
}
}
g[b[i][]][b[i][]][b[i][]][b[i][]]++;
}
LL ans=;
for(int i=;i<=n;++i){
if(a[i]==){
ans+=n-i;
zero--;
continue;
}
int u[];
g[b[i][]][b[i][]][b[i][]][b[i][]]--;
for(int j=;j<;++j){
if(b[i][j]==) u[j]=;
else u[j]=(k-b[i][j])%k;
if(u[j]>)u[j]=;
}
ans+=g[u[]][u[]][u[]][u[]]+zero;
}
ans=n*(n-)/-ans;
printf("%lld\n",ans);
return ;
}
 
 

Wannafly挑战赛29-A/B的更多相关文章

  1. Wannafly挑战赛29题解

    这套题目非常有意思啊23333--话说为啥没有上条先生的呢-- 传送门 \(A\) 御坂美琴 蠢了--首先先判总共加起来等不等于\(n\),不是的话就不行 然后dfs记录\(n\)不断分下去能分成哪些 ...

  2. Wannafly挑战赛25游记

    Wannafly挑战赛25游记 A - 因子 题目大意: 令\(x=n!(n\le10^{12})\),给定一大于\(1\)的正整数\(p(p\le10000)\)求一个\(k\)使得\(p^k|x\ ...

  3. Wannafly挑战赛27

    Wannafly挑战赛27 我打的第一场$Wannafly$是第25场,$T2$竟然出了一个几何题?而且还把我好不容易升上绿的$Rating$又降回了蓝名...之后再不敢打$Wannafly$了. 由 ...

  4. Wannafly 挑战赛 19 参考题解

    这一次的 Wannafly 挑战赛题目是我出的,除了第一题,剩余的题目好像对大部分算法竞赛者来说好像都不是特别友好,但是个人感觉题目质量还是过得去的,下面是题目链接以及题解. [题目链接] Wanna ...

  5. Wannafly挑战赛21A

    题目链接 Wannafly挑战赛21A 题解 代码 #include <cstdio> #include <cmath> #define MAX 1000005 #define ...

  6. Wannafly挑战赛24游记

    Wannafly挑战赛24游记 A - 石子游戏 题目大意: A和B两人玩游戏,总共有\(n(n\le10^4)\)堆石子,轮流进行一些操作,不能进行下去的人则输掉这局游戏.操作包含以下两种: 把石子 ...

  7. Wannafly挑战赛25C 期望操作数

    Wannafly挑战赛25C 期望操作数 简单题啦 \(f[i]=\frac{\sum_{j<=i}f[j]}{i}+1\) \(f[i]=\frac{f[i]}{i}+\frac{\sum_{ ...

  8. Wannafly挑战赛18B 随机数

    Wannafly挑战赛18B 随机数 设\(f_i\)表示生成\(i\)个数有奇数个1的概率. 那么显而易见的递推式:\(f_i=p(1-f_{i-1})+(1-p)f_{i-1}=(1-2p)f_{ ...

  9. Wannafly挑战赛22游记

    Wannafly挑战赛22游记 幸运的人都是相似的,不幸的人各有各的不幸. --题记 A-计数器 题目大意: 有一个计数器,计数器的初始值为\(0\),每次操作你可以把计数器的值加上\(a_1,a_2 ...

  10. 【Wannafly挑战赛4】F 线路规划 倍增+Kruskal+归并

    [Wannafly挑战赛4]F 线路规划 题目描述 Q国的监察院是一个神秘的组织.这个组织掌握了整个帝国的地下力量,监察着Q国的每一个人.监察院一共有N个成员,每一个成员都有且仅有1个直接上司,而他只 ...

随机推荐

  1. 【C#】异步的用法

    1. C#5.0 加入了async, await关键字. async是在声明异步方法时使用的修饰符, 声明放在返回值之前即可,await表达式则负责消费异步操作, 不能出现在catch或finally ...

  2. ComponentOne使用技巧——从Winform穿越到WPF

    概述 WPF 和 Winform 是两个单独的平台,但二者又都是基于 .NET 4.0 以上版本开发的,所以很多.NET开发人员就开始研究如何在WPF中使用Winform.微软已经架设了两个开发平台的 ...

  3. Sublime Text3 插件:DocBlockr与javascript注释规范

    原:http://www.ithao123.cn/content-719950.html 1.引子 在写代码的时候,尤其是写脚本,最需要注释了.目前脚本.样式的注释格式都有一个已经成文的约定规范(这些 ...

  4. python学习 day014打卡 内置函数二&递归函数

    本节主要内容: 1.lambda匿名函数 2.sorted() 3.filter() 4.map() 5.递归函数 6.二分法 一.lambda匿名函数 为了解决一些简单的需求而设计的一句话函数 # ...

  5. Mybatis工程搭建

    工程搭建 • 1依赖包 • 2配置文件 • 2.1spring-mybatis.xml • 2.2mybatis-config.xml自带配置文件 • 2.3 mapper(dao)对象 • 2.4 ...

  6. testin 测试用例管理平台

    应用信息:应用图标,应用名称,版本号,应用包名,系统平台[Android,ios,Web/H5,小程序,快应用]项目成员:成员帐号[邮箱],成员姓名,成员角色,成员职位,状态[激活,未激活],操作[移 ...

  7. 3.2 git命令大全

    1. 常用命令 -- 查看 git remote:要查看当前配置有哪些远程仓库; git remote -v: -v 参数,你还可以看到每个别名的实际链接地址; git branch -a :查看远程 ...

  8. .NET扩展方法 封装公用方法

    定义方法的时候  第一个参数前面加上this   表示这个方法可以被IQueryable类型的对象.出来  调用的时候 只用传第二个参数  第一个参数不用传 第一个参数就是.出当前方法的参数 定义扩展 ...

  9. 关于使用python.numpy的tips

    产生含有5个数字的随机向量时,注意写法 import numpy as np A=np.random.randn(5,1)   # 注意不要只写5  B=np.random.randn(5)与A不一样 ...

  10. 异常上报工具:腾讯Bugly

    1.腾讯出了一个和umeng差不多的异常上报工具Bugly.(传送门:https://bugly.qq.com/docs/) (1)两者比较明显的区别是,Bugly能比较实时上报异常信息,经过测试基本 ...