A:题目:http://codeforces.com/contest/735/problem/A

 题意:出发点G,终点T,每次只能走k步,#不能走,问能否到达终点

 思路:暴力

 

 #include <stdio.h>
#include <string.h>
char str[];
void YES(){
printf("YES\n");
}
void NO(){
printf("NO\n");
}
void solve(int n,int k){
int st,ed;
for(int i=;i<=n;i++){scanf(" %c",&str[i]);if(str[i]=='G') st=i;else if(str[i]=='T') ed=i;}
if(st<ed){
while(st<=ed){
st+=k;
if(st>n) {
NO();
return ;
}
if(st==ed){
YES();
return ;
}
if(str[st]=='#'){
NO();
return ;
}
}
NO();
}
else if(st>ed){
while(st>=ed){
st-=k;
if(st<){
NO();
return ;
}
if(st==ed){
YES();
return ;
}
if(str[st]=='#'){
NO();
return ;
}
}
NO();
} }
int main(){
int n,k;
while(scanf("%d %d",&n,&k)!=EOF){
solve(n,k);
}
}

B:题目:http://codeforces.com/contest/735/problem/B

  题意:有n个值,分成两部分分别有n1,n2个,求两部分的平均值之和的最大值

  思路:sum1/n1+sum2/n2 要尽量大,肯定排序从大往小选

  

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=1e5+;
int a[maxn];
bool cmp(int a,int b){
return a>b;
}
int main(){
int n,n1,n2;
while(scanf("%d %d %d",&n,&n1,&n2)!=EOF){
for(int i=;i<=n;i++) scanf("%d",&a[i]);
sort(a+,a++n,cmp);
int x=min(n1,n2);
int y=max(n1,n2);
long long sum1=,sum2=;
for(int i=;i<=x;i++) sum1+=a[i];
for(int i=x+;i<=x+y;i++) sum2+=a[i];
double ans=;
ans=sum1/(x*1.0)+sum2/(y*1.0);
printf("%.7f\n",ans);
}
return ;
}

C:题目:http://codeforces.com/contest/735/problem/C

  题意:两个人能比赛的条件为两个人之前打过比赛场数的差值不超过1,问胜者最多能打多少场比赛

  思路:递推,假设打n场所需要的最少人数是a[n],那么要打n+1场比赛,那么在打了n场的基础上,最少需要一个打了n-1场比赛的人才能打,所以要打n+1场比赛所需要的最少人数是a[n+1]=a[n]+a[n-1],即a[n+2]=a[n+1]+a[n],a[1]=1,a[2]=3;

  

 #include <cstdio>
#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=;
long long Fi[maxn];
void solve() {
Fi[]=,Fi[]=;
for(int i=;i<=;i++) {
Fi[i]=Fi[i-]+Fi[i-];
if(Fi[i]>=(long long)1e18) {
break;
}
}
}
int main(){
long long n;
solve();
while(scanf("%I64d",&n)!=EOF) {
int pos=lower_bound(Fi+,Fi++,n)-Fi;
if(Fi[pos]>n) pos-=;
printf("%d\n",pos);
}
return ;
}

D:题目:http://codeforces.com/contest/735/problem/D

  题意:一个数n的最小花费为n的最大约数(除了自己本身) ,现在n可以被分成k个数,n=n1+n2+...+nk,(nk>=2),n现在所需要的费用是k个数的费用总和,求n的最小花费

  思路:很明显质数的最小费用是1,也就是看一个数能由多少个质数组成就是多少,一开始用的暴力过的,枚举前5000个数,对每个数找每次找最近的质数减掉然后再对n进行dp,dp[n]=min(dp[n-j]+dp[j],dp[n]),后来想了想好像就是哥德巴赫猜想。。

即任一大于2的偶数都可写成两个素数之和,那么当n是素数是答案是1,n是偶数或者n-2是质数,那么答案是2,其他的答案就是3(因为可以奇数可以拆为一个奇数加一个偶数,素数肯定是奇数)

 #include <stdio.h>
#include <iostream>
#include <map>
using namespace std;
map<int,int> m;
bool judge(int n){
for(int i=;i*i<=n;i++){
if(n%i==) return false;
}
return true;
}
const int maxn=;
int dp[maxn];
int Cal(int num){
int cnt=;
while(num){
for(int j=num;;j--){
if(judge(j)){
num-=j;
cnt++;
break;
}
}
}
return cnt;
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
m[]=;
m[]=;
for(int i=;i<=;i++){
m[i]=Cal(i);
}
int cnt=;
for(int i=n;i>=max(n-,);i--){
m[i]=Cal(i); }
for(int i=n;i>=max(n-,);i--)
m[n]=min(m[n],m[n-i]+m[i]);
printf("%d\n",m[n]);
}
}

版本:

 #include <cstdio>
bool judge(int n){
for(int i=;i*i<=n;i++)if(n%i==) return false;
return true;
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
if(judge(n)){
printf("1\n");
}
else if(judge(n-)||n%==){
printf("2\n");
}
else printf("3\n");
}
return ;
}

E,F留坑

Codeforces Round #382 (div2)的更多相关文章

  1. Codeforces Round #539 div2

    Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...

  2. 【前行】◇第3站◇ Codeforces Round #512 Div2

    [第3站]Codeforces Round #512 Div2 第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间 Rating又掉了……但是没什么,比上一次好多了: ...

  3. Codeforces Round#320 Div2 解题报告

    Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...

  4. Codeforces Round #564(div2)

    Codeforces Round #564(div2) 本来以为是送分场,结果成了送命场. 菜是原罪 A SB题,上来读不懂题就交WA了一发,代码就不粘了 B 简单构造 很明显,\(n*n\)的矩阵可 ...

  5. Codeforces Round #361 div2

    ProblemA(Codeforces Round 689A): 题意: 给一个手势, 问这个手势是否是唯一. 思路: 暴力, 模拟将这个手势上下左右移动一次看是否还在键盘上即可. 代码: #incl ...

  6. Codeforces Round #626 Div2 D,E

    比赛链接: Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) D.Present 题意: 给定大 ...

  7. CodeForces Round 192 Div2

    This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...

  8. Codeforces Round #382 Div. 2【数论】

    C. Tennis Championship(递推,斐波那契) 题意:n个人比赛,淘汰制,要求进行比赛双方的胜场数之差小于等于1.问冠军最多能打多少场比赛.题解:因为n太大,感觉是个构造.写写小数据, ...

  9. Codeforces Round #382 (Div. 2) 解题报告

    CF一如既往在深夜举行,我也一如既往在周三上午的C++课上进行了virtual participation.这次div2的题目除了E题都水的一塌糊涂,参赛时的E题最后也没有几个参赛者AC,排名又成为了 ...

随机推荐

  1. js计算剩余分钟

    // 剩余时间提醒 function checkTime() { if (timeCompare()) { document.getElementById('distanceDeadline').in ...

  2. 解决sqlserver数据库显示单个用户

    今天突然发现数据库显示为单个用户并且,访问速度超慢,执行以下语句解决了 USE master; GO DECLARE @SQL VARCHAR(MAX); SET @SQL='' SELECT @SQ ...

  3. C# 反射的例子

    通过字符串变量访问控件 string t = "textbox1"; TextBox tb = (TextBox)this.GetType().GetField(t, System ...

  4. HP ML150 G6 服务器硬件介绍

    前面板和背面板组件介绍: 1 介质托架                           12 系统运行状况 LED 指示灯 2 USB 2.0 端口 (2)               13 AC ...

  5. Linux之Samba部署

    1.Samba介绍 Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成,SMB(Server Messages Block,信息服务块)是一种 ...

  6. LeetCode算法题-Longest Harmonious Subsequence(Java实现)

    这是悦乐书的第270次更新,第284篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第136题(顺位题号是594).我们定义一个和谐数组是一个数组,其最大值和最小值之间的差 ...

  7. 基本数据对象(int,float,str)

    一.整型(int) # int对象初始化 x = 2 y = int(3) n = int("A3",12) # 运算符(+.-.*././/.%.**) ''' 相关的函数 '' ...

  8. python 结巴分词学习

    结巴分词(自然语言处理之中文分词器) jieba分词算法使用了基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能生成词情况所构成的有向无环图(DAG), 再采用了动态规划查找最大概率路径,找出基于 ...

  9. 【English】20190312

    tokens记号 [ˈtoʊkən]   delimiter characters分隔符字符 [dɪ'lɪmɪtə]  [ˈkærɪktɚs]    argument论据主题[ˈɑ:rgjumənt] ...

  10. 【jq】prop和attr的区别

    prop()函数的结果: 1.如果有相应的属性,返回指定属性值. 2.如果没有相应的属性,返回值是空字符串. attr()函数的结果: 1.如果有相应的属性,返回指定属性值. 2.如果没有相应的属性, ...