任意门

C - Bugged

题意:类似装箱问题,但是最后体积总和不能为10的倍数。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define MN 30001
using namespace std; int read_p,read_ca;
inline int read(){
read_p=;read_ca=getchar();
while(read_ca<''||read_ca>'') read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p;
}
const int MOD=1e9+;
int n,a[],w;
int main(){
int i,j,k;
n=read();
a[]=;
while(n--){
w=read();
for (i=;i>=;i--) a[i+w]|=a[i];
}
for (i=;i>=;i--) if (a[i]&&i%) return printf("%d\n",i),;
puts("");
}

D - Widespread

题意:n只怪物,每只有一个生命值,每次攻击可以指定一只造成A点伤害,其他所有造成B点伤害(A>B),问全部消灭的最小攻击次数。

题解:二分攻击次数。

#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MN 300001
#define int long long
using namespace std; int read_p,read_ca;
inline int read(){
read_p=;read_ca=getchar();
while(read_ca<''||read_ca>'') read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p;
}
const int MOD=1e9+;
int n,a[],w=,mmh=,A,B,L=,R=1e9;
inline bool ju(int x){
int u=B*x,s=;
for (int i=;i<=n;i++)
if (a[i]>u) s+=(a[i]-u+A-)/A;
return s<=x;
}
signed main(){
int i,j,k;
n=read();A=read();B=read();A-=B;
for (i=;i<=n;i++) a[i]=read();
while (L<R){
int mid=L+R>>;
if (ju(mid)) R=mid;else L=mid+;
}
printf("%lld\n",L);
}

E - Meaningful Mean

题意:求一个数组中,平均值不小于k的连续子序列个数。

题解:全部减k之后数据结构处理前缀和即可。

#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MN 210001
#define int long long
using namespace std; int read_p,read_ca;
inline int read(){
read_p=;read_ca=getchar();
while(read_ca<''||read_ca>'') read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p;
}
const int MOD=1e9+,M=1e15;
int n,a[MN],ro=,mmh=,k,ls[MN*],rs[MN*],s[MN*],NUM=;
void add(int &p,int l,int r,int k){
if (!p) p=++NUM,ls[p]=rs[p]=s[p]=;
s[p]++;
if (l==r) return;
int mid=l+r>>;
if (k<=mid) add(ls[p],l,mid,k);else add(rs[p],mid+,r,k);
}
int ask(int p,int l,int r,int k){
if (!p) return ;
if (r<=k) return s[p]; int mid=l+r>>;
if (k<=mid) return ask(ls[p],l,mid,k);else return ask(rs[p],mid+,r,k)+ask(ls[p],l,mid,k);
}
signed main(){
int i,j,k;
n=read();k=read();
add(ro,-M,M,);
for (i=;i<=n;i++){
a[i]=read()-k;a[i]+=a[i-];
mmh+=ask(ro,-M,M,a[i]);
add(ro,-M,M,a[i]);
}
printf("%lld\n",mmh);
}

F - Mirrored

题意:记rev(N)为把N在10进制下翻转以后的值(无前导0),给出D,求rev(N)=N+D的N的数量。

题解:好开心在考场上搞了出来。其实就是个暴力。枚举N的位数d,再同时枚举第i和d+1-i位,这样可以确定差中第i位和第d+1-i位的可能值,从而实现剪枝。然后你会发现这玩意可以记忆化……

#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MN 21001
#define int long long
using namespace std; int read_p,read_ca;
inline int read(){
read_p=;read_ca=getchar();
while(read_ca<''||read_ca>'') read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p;
}
const int MOD=1e9+;
int n,a[MN],B[MN],x,mmh=,mm[][][][];
inline int M(int x){return x<?x+:x;}
inline void work(int p,int n,int a,int b){
if (mm[p][n][a][b]!=-) {mmh+=mm[p][n][a][b];return;}
int u=mmh;
if (p+p-==n){
if (a==&&b==) mmh+=*(B[p]==);else
if (a==&&b==) mmh+=*(B[p]==);
return;
}
if (p+p->n){
mmh+=a==b;
return;
}
for (int i=p==;i<=;i++)
for (int j=;j<=;j++)
if (M(i-j-b)==B[p]&&(a==(j<i)||j==i)&&(M(j-i)==B[n+-p]||M(j--i)==B[n+-p])){
if (a){
if (j==i&&B[n+-p]==) continue;
work(p+,n,M(j--i)==B[n+-p],i-b-j<);
}else{
if (j==i&&B[n+-p]==) continue;
work(p+,n,M(j--i)==B[n+-p],i-b-j<);
}
}
mm[p][n][a][b]=mmh-u;
}
signed main(){
int i,j,k;
x=n=read();
if (n%) return puts(""),;
for (k=;k<=&&x;k++) B[k]=x%,x/=;k--;
for (int i=k;i<=;i++) memset(mm,-,sizeof(mm)),work(,i,,);
printf("%lld\n",mmh);
}

涨rating啦好开心

AtCoder Regular Contest 075的更多相关文章

  1. AtCoder Regular Contest 075 2017年6月4日 C、D、E题解

    http://arc075.contest.atcoder.jp/assignments 昨晚做的atcoder,今天写个简单题解. F题不会做,800point的,就跪了,要等zk大佬来做.zk能做 ...

  2. AtCoder Regular Contest 075 E - Meaningful Mean(树状数组)

    题目大意:求一个数组中,平均值不小于k的连续子序列个数 所有数减去k,算个前缀和出来,就变成二维数点问题了. 没有修改,离线的话就是CZL所说的“NOIP最喜欢的套路”了:倒着加进BIT,以权值为数组 ...

  3. AtCoder Regular Contest 075 D Widespread

    题目传送门 这道题其实二分一下答案就okay了的 不过LL什么的有时候忘了加 被卡了下 #include<cstdio> #include<cstring> #include& ...

  4. AtCoder Regular Contest 075 C D E (暂时)

    C - Bugged 题意 给\(n\)个数,找其中的一个子集,使得其和最大,且不是\(10\)的整数倍. 思路 先对\(n\)个数求和, 如果本身即不被\(10\)整除,则即为答案. 否则,如果本身 ...

  5. 【arc075f】AtCoder Regular Contest 075 F - Mirrored

    题意 给定一个数x,问有多少个正整数y,使得rev(y)-y==x 其中rev(x)表示x按位翻转之后得到的数. x<=1e9 做法 首先通过打表发现,这个答案不会很大. 这就说明解相当地松弛. ...

  6. AtCoder Regular Contest 061

    AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...

  7. AtCoder Regular Contest 094 (ARC094) CDE题解

    原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...

  8. AtCoder Regular Contest 092

    AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...

  9. AtCoder Regular Contest 093

    AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...

随机推荐

  1. 小白的Python之路 day3 函数式编程,高阶函数

    函数式编程介绍   函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的 ...

  2. asp.net mvc 下拉列表

    第一步:新建一个格式化下拉列表的公共类文件 using System; using System.Collections; using System.Collections.Generic; usin ...

  3. iOS 通知的变化ios9-10,新功能展示

    二.新功能展示 1  使用 /iOS通知新功能玩法 2.  全面   iOS10里的通知与推送详情 一.变化 四.Notification(通知) 自从Notification被引入之后,苹果就不断的 ...

  4. JaveScript流程控制(JS知识点归纳四)

    01 流程控制 顺序结构: 程序的默认执行方式 条件判断语句:也称之为分支结构,选择结构:如果程序要执行的代码出现了多种情况需要使用 循环结构:当代码需要多次重复执行多次时,使用 02 条件判断语句 ...

  5. ArcGIS 网络分析[8.1] 资料1 使用AO打开或创建网络数据集之【打开】

    为了创建或打开一个网络数据集,你必须使用NetworkDatasetFDExtension对象(文件地理数据库中的数据集)或NetworkDatasetWorkspaceExtension对象(对于S ...

  6. JS画几何图形之二【圆】

    半径为r的圆上的点p(x,y)与圆心O(x0,y0)的关系: x = x0+rcosA;  y = y0+rsinA ,A为弧度 样例:http://www.zhaojz.com.cn/demo/dr ...

  7. 串口调试者v2.1------开源c#串口调试工具

    第一步:上图 第二步:上代码 >>>>>>>>>>>源代码下载<<<<<<<<< ...

  8. [数据清洗]- Pandas 清洗“脏”数据(三)

    预览数据 这次我们使用 Artworks.csv ,我们选取 100 行数据来完成本次内容.具体步骤: 导入 Pandas 读取 csv 数据到 DataFrame(要确保数据已经下载到指定路径) D ...

  9. python中使用递归实现反转链表

    反转链表一般有两种实现方式,一种是循环,另外一种是递归,前几天做了一个作业,用到这东西了. 这里就做个记录,方便以后温习. 递归的方法: class Node: def __init__(self,i ...

  10. Java基础day01

    linux:1免费 开源的操作系统,Java主要是服务器端的开发 2与window,目录结构.安全性比后者高 3常用命令 pwd.ls.cd:vi(打开一个记事本若没有就新建一个记事本) 绝对路径:都 ...