A.

题意:输入一串字符只含A和D,判断A和D的多少比较,

分析:直接计数

B.

题意:给出数字2,3,5,6的个数,用这些数组成256和32,要求最后组成的数的和最大

分析:贪心,优先组成256,然后组成32; n256=min(k2,k5,k6),n32=min(k3,k2-n256);

C.

题意:要求你制作出n瓶药水,初始每瓶药水要花费x的时间,另有两种魔法操作可以缩短制作时间,type1 :将制作每一瓶药水的时间都缩短至ai的时间,但是要花费bi的魔法点数;type2:瞬间制作出ci瓶药水(相当这ci瓶药水没花时间),但是要花费di的魔法点数。初始你有s的魔法点数,type1有m种魔法,type2有k种魔法。要求出制作出n瓶药水的最短时间

(1 ≤ n ≤ 2·1e9, 1 ≤ m, k ≤ 2·1e5)

分析:1.首先,我们发现如果我们选择第一种type的第i个魔法和第二种type的第j个魔法,则我们准备所有的药水要花费 ai*(n-cj)的时间,我们要使这个值最小;

2.第二种类型魔法可以制作出的药水数及花费的魔法点数是非递减序列,考虑用二分;

3.直接循环一遍type1的魔法(a[i]数组),然后用剩下的魔法点数s1找到能使用的type2的魔法的最大值(二分)

4.注意边界,可能初始的魔法点数既不可能选择type1 也不能选择type2 ,此时答案直接是初始的x*n;

代码:

 #include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std; #define maxn 200010
#define ll long long
#define fi first
#define se second
ll a[maxn],b[maxn],c[maxn],d[maxn];
ll n,m,k,x,s; ll get(ll mon)
{
ll l=,r=k;
while(l<r)
{
ll mid=(l+r+)/;
if(d[mid]>mon)
r=mid-;
else
l=mid;
}
return c[l];
}
int main()
{ cin>>n>>m>>k;
cin>>x>>s;
ll ans=n*x;
a[]=x; //type1没有选中的spell时注意初始化
for(ll i=;i<=m;i++) cin>>a[i];
for(ll i=;i<=m;i++) cin>>b[i];
for(ll i=;i<=k;i++) cin>>c[i];
for(ll i=;i<=k;i++) cin>>d[i];
for(int i=;i<=m;i++) //i要从0开始,因为tyoe1可能也没有可以使用的pell
{
ll s1=s-b[i];
//cout<<s1<<" "<<get(s1)<<" "<<(n-get(s1))*a[i]<<endl;
if(s1<)continue;
ans=min(ans,(n-get(s1))*a[i]);
}
cout<<ans<<endl;
return ;
}

D.

题意:-1e9~1e9的棋盘,给出黑king的位置,和n个白棋的位置白棋只能是象,车,王后;问白棋是否能在一步之内攻击到黑king。

Bishop象:只能走对角线任意格但不能跳过障碍;

Rook车:只能走水平和垂直但不能跳过障碍;

Queen王后:可以走对角线和水平和垂直,也不能跳过障碍;

分析:以黑king为分析对象,一步之内要攻击到黑king只有上下左右及上左上右下左下右八个方向上离黑king最近的白棋(因为白棋都不能跳过挡道棋子),即可在输入时更新每个方向上离黑king最近的白棋,最后根据每种白棋能走的方向判断能否攻击到黑king。

代码://自己容易手挫版

#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
using namespace std; #define ll long long
#define fi first
#define se second
pair<ll,ll>p[];
int flag[];
char cr[];
ll xx;
ll yy; int judge(char c,ll x,ll y)
{
if(x==xx)
{
if(y<yy)
{
if(!flag[])
{
flag[]=;
p[].se=y;p[].fi=xx;cr[]=c;
}
p[].se=max(p[].se,y);
if(p[].se==y) cr[]=c;
}
else
{
if(!flag[])
{
flag[]=;
p[].se=y;p[].fi=xx;cr[]=c;
}
p[].se=min(p[].se,y);
if(p[].se==y) cr[]=c;
}
}
else if(y==yy)
{
if(x<xx)
{
if(!flag[])
{
flag[]=;
p[].fi=x;p[].se=yy;cr[]=c;
}
p[].fi=max(p[].fi,x);
if(p[].fi==x) cr[]=c;
}
else
{
if(!flag[])
{
flag[]=;
p[].fi=x;p[].se=yy;cr[]=c;
}
p[].fi=min(p[].fi,x);
if(p[].fi==x) cr[]=c;
}
}
else if(x+y==xx+yy)
{
if(x>xx&&y<yy)
{
if(!flag[])
{
flag[]=;
p[].fi=x;p[].se=y;cr[]=c;
}
p[].fi=min(p[].fi,x);
p[].se=max(p[].se,y);
if(p[].fi==x) cr[]=c;
}
else
{
if(!flag[])
{
flag[]=;
p[].fi=x;p[].se=y;cr[]=c;
}
p[].fi=max(p[].fi,x);
p[].se=min(p[].se,y);
if(p[].fi==x) cr[]=c;
}
}
else if(x-y==xx-yy)
{
if(x<xx&&y<yy)
{
if(!flag[])
{
flag[]=;
p[].fi=x;p[].se=y;cr[]=c;
}
p[].fi=max(p[].fi,x);
p[].se=max(p[].se,y);
if(p[].fi==x)cr[]=c;
}
else
{
if(!flag[])
{
flag[]=;
p[].fi=x;p[].se=y;cr[]=c;
}
p[].fi=min(p[].fi,x);
p[].se=min(p[].se,y);
if(p[].fi==x) cr[]=c;
}
}
} int main()
{
int n;
cin>>n;
cin>>xx>>yy;
ll x,y;
char c;
while(n--)
{
cin>>c>>x>>y;
judge(c,x,y);
}
bool is=false;
for(int i=;i<=;i++)
{
//cout<<p[i].fi<<" "<<p[i].se<<" "<<cr[i]<<endl;
if(i%&&(cr[i]=='R'||cr[i]=='Q'))
is=true;
else if(i%==&&(cr[i]=='B'||cr[i]=='Q'))
is=true;
}
if(is)
cout<<"YES\n";
else
cout<<"NO\n";
return ;
}

//出题author优美版

#include <cstdio>
#include <algorithm> using namespace std; inline char in_char()
{
char c = '\0';
while (c <= ' ')
c = getchar();
return c;
} inline int in_int()
{
int n;
scanf("%d", &n);
return n;
} struct figurine
{
char kind;
int x, y;
}; int n;
int x0, y0;
figurine nearest[]; inline int dist(int x1, int y1, int x2, int y2)
{
return max(abs(x1 - x2), abs(y1 - y2));
} inline void upd_nearest(figurine& was, const figurine& cur)
{
if (was.kind == '?' ||
dist(x0, y0, cur.x, cur.y) < dist(x0, y0, was.x, was.y))
was = cur;
} inline int get_direction(const figurine& cur)
{
// vertical
if (cur.x == x0 && cur.y < y0) return ;
if (cur.x == x0 && cur.y > y0) return ;
// horizontal
if (cur.y == y0 && cur.x < x0) return ;
if (cur.y == y0 && cur.x > x0) return ;
// diagonal 1
if ((cur.y - y0) == (cur.x - x0) && cur.x < x0) return ;
if ((cur.y - y0) == (cur.x - x0) && cur.x > x0) return ;
// diagonal 2
if ((cur.y - y0) == (x0 - cur.x) && cur.y < y0) return ;
if ((cur.y - y0) == (x0 - cur.x) && cur.y > y0) return ;
// the piece doesn't lie on any of the eight directions
return -;
} int main()
{
n = in_int();
x0 = in_int(); y0 = in_int();
for (int i = ; i < ; i++)
nearest[i].kind = '?';
// read and update nearest
for (int i = ; i < n; i++)
{
figurine cur;
cur.kind = in_char(); cur.x = in_int(); cur.y = in_int();
int dir = get_direction(cur);
if (dir >= )
upd_nearest(nearest[dir], cur);
}
bool ans = false;
// check verticals and horizontals
for (int i = ; i < ; i++)
if (nearest[i].kind == 'R' || nearest[i].kind == 'Q')
ans = true;
// check diagonals
for (int i = ; i < ; i++)
if (nearest[i].kind == 'B' || nearest[i].kind == 'Q')
ans = true;
// output
puts(ans ? "YES" : "NO");
return ;
}

E.

待更新

cf #379div2的更多相关文章

  1. ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'

    凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...

  2. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  3. cf Round 613

    A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...

  4. ARC下OC对象和CF对象之间的桥接(bridge)

    在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...

  5. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  6. CF memsql Start[c]UP 2.0 A

    CF memsql Start[c]UP 2.0 A A. Golden System time limit per test 1 second memory limit per test 256 m ...

  7. CF memsql Start[c]UP 2.0 B

    CF memsql Start[c]UP 2.0 B B. Distributed Join time limit per test 1 second memory limit per test 25 ...

  8. CF #376 (Div. 2) C. dfs

    1.CF #376 (Div. 2)    C. Socks       dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...

  9. CF #375 (Div. 2) D. bfs

    1.CF #375 (Div. 2)  D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...

随机推荐

  1. git操作笔记

    首先本文参考廖雪峰的git学习教程,写的非常好,值得学习. http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b80 ...

  2. CSS之float样式总结

    从四大开始开始慢慢接触前端,大概半年多过去了,虽然做了一些东西,但感觉有些点始终不是很清晰.有时候为了赶进度,没有太多时间对某个点进行全面深入思考分析,只能从网上搜一搜,试一试,只要效果出来了,任务就 ...

  3. Linux下面配置文件~/.bash_profile

    ~/.的意义是什么? ~ 代表你的/home/用户名目录 假设你的用户名是x,那么~/就是/home/x/ . 是代表此目录本身,但是一般可以不写 所以cd ~/. 和cd ~ 和cd ~/效果是一样 ...

  4. 大理石在哪里UVa 10474

    我自己写的代码 #include<iostream>#include<algorithm>using namespace std;int main(){    int N,a[ ...

  5. SeleniumIDE从0到1 (Selenium IDE 安装)

    换了工作后需要学习到自动化测试,经过一系列的筛选,最终选定了Selenium,原因是因为本人熟悉一点代码,用Selenium比较容易上手.刚开始接触Selenium的小伙伴是不是会觉得不知道从何动手呢 ...

  6. python学习之迭代器与生成器

    1.迭代器省内存 迭代器只允许往后读数据,不允许回读数据 迭代器不能跳着读文件,因为他是一点一点加载文件内容到内存的,读完了可以销毁或丢掉 2.生成一个迭代器 a = iter(["fd&q ...

  7. Mysql修改字段长度

    alter table '表名' modify column '列名' varchar(50);

  8. mysql查看修改字符集

    1.列出MYSQL支持的所有字符集: SHOW CHARACTER SET; 2.当前MYSQL服务器字符集设置 SHOW VARIABLES LIKE 'character_set_%'; 3.当前 ...

  9. Socket之TCP连接_TcpNoDelay

    摘自: http://jerrypeng.me/2013/08/mythical-40ms-delay-and-tcp-nodelay/

  10. python 拾贝

    1. 内建的 type() 函数带三个参数时, 将作为强悍的动态类构造器. 如下:   type(name, bases, dict) 返回一个新的type对象. 基本上是 class 语句的动态形式 ...