= =C题这种DP打的少吧,记得以前最短路分层图打过这样子的,然后比赛前半个小时才恍然大雾。。。然后瞎几把还打错了,还好A,B手速快。。上分了;

A题:

计算B的连续个数的组数,每组的连续个数;

水题;

#include <iostream>
#include<cstdio>
#include<string.h>
#include<algorithm>
using namespace std; char s[110];
int a[110]; int main()
{
int n;
scanf("%d",&n);
scanf("%s",s);
int num=0;
int flag=0;
memset(a,0,sizeof(a));
for(int i=0;i<n;i++)
{
if(s[i]=='B')
{
if(flag)
{
a[num]++;
}
else
{
a[++num]++;
flag=1;
}
}
else
{
flag=0;
}
}
printf("%d\n",num);
for(int i=1;i<=num;i++)
printf("%d ",a[i]);
return 0;
}

B题:

求最少开锁,最晚开锁;= =最后一个是密码;

这题纯暴力模拟,水;

#include <iostream>
#include<cstdio>
#include<string.h>
#include<algorithm>
using namespace std;
/* */ char s[110][110]; int main()
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n+1;i++)
{
scanf("%s",s[i]);
}
int temp=strlen(s[n+1]);
int mini=0;
int mimi=0;
for(int i=1;i<=n;i++)
{
int x=strlen(s[i]);
if(x<temp)
mini++;
if(x<=temp&&strcmp(s[i],s[n+1])!=0)
mimi++;
}
int ans1=0;
if(mini)
{
for(int i=1;i<=mini;i++)
{
if(i%k==0)
ans1+=5;
ans1++;
}
}
printf("%d ",ans1+1);
int ans2=0;
if(mimi)
{
for(int i=1;i<=mimi;i++)
{
if(i%k==0)
ans2+=5;
ans2++;
}
}
printf("%d\n",ans2+1);
return 0;
}

C题:

求1-n的路径长度<=T范围内,最多能经过几个点;

思路:

dp[i][j]代表到达 i 经 过 j 个点的最小花费;

然后BFS每个可到达,里面写个小DP;

//注意vis数组开bool,不知道不开会不会MLE,还有图的话最好用链表模拟;

#include <bits/stdc++.h>
using namespace std;
//dp[i][j]代表到达第i个结点,经过j个结点的最短时间; typedef pair<int,int> PP;
const int INF=0x3f3f3f3f; int dp[5001][5001];
bool vis[5001][5001];
int pre[5001][5001];
int n,m,T;
int i,j,k;
int u,v,w;
vector<PP>ma[5001];
queue<PP>q; void bfs()
{
vis[1][1]=true;
dp[1][1]=0;
q.push({1,1});
while(!q.empty())
{
PP u=q.front();q.pop();
int x=u.first;
int y=u.second;
vis[x][y]=false;
v=ma[x].size();
for(i=0;i<v;i++)
{
int xx=ma[x][i].first;
int co=ma[x][i].second;
if(dp[x][y]+co>T)
continue;
if(dp[xx][y+1]>dp[x][y]+co)
{
dp[xx][y+1]=dp[x][y]+co;
pre[xx][y+1]=x;
if(vis[xx][y+1]) continue;
vis[xx][y+1]=true;
q.push({xx,y+1});
}
}
}
}
void print()
{
vector<int>res;
res.push_back(n);
while(pre[n][j])
{
res.push_back(pre[n][j]);
n=pre[n][j];
j--;
}
int ans=res.size();
printf("%d\n",ans);
for(i=ans-1;i>=0;i--)
{
printf("%d ",res[i]);
}
}
int main()
{
memset(dp,INF,sizeof(dp));
scanf("%d%d%d",&n,&m,&T);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&u,&v,&w);
ma[u].push_back({v,w});
}
bfs(); for(i=n;i>=1;i--)
{
if(dp[n][i]<=T)
{
j=i;
break;
}
}
print();
return 0;
}

Codeforces Round #374 (Div. 2)【A,B,C】的更多相关文章

  1. Codeforces Round #374 (Div. 2) A , B , C 水,水,拓扑dp

    A. One-dimensional Japanese Crossword time limit per test 1 second memory limit per test 256 megabyt ...

  2. Codeforces Round #646 (Div. 2)【C. Game On Leaves 题解】

    题意分析 关于这道题,意思就是两个人摘叶子,谁最后摘到编号为x的谁就赢了.既然是叶子,说明其最多只有一个分支,由于题目上说了是无向图,那就是度数小于等于的节点.也就是一步步移除度数小于等于的节点,直到 ...

  3. Codeforces Round #443 (Div. 2) 【A、B、C、D】

    Codeforces Round #443 (Div. 2) codeforces 879 A. Borya's Diagnosis[水题] #include<cstdio> #inclu ...

  4. Codeforces Round #436 (Div. 2)【A、B、C、D、E】

    Codeforces Round #436 (Div. 2) 敲出一身冷汗...感觉自己宛如智障:( codeforces 864 A. Fair Game[水] 题意:已知n为偶数,有n张卡片,每张 ...

  5. Codeforces Round #435 (Div. 2)【A、B、C、D】

    //在我对着D题发呆的时候,柴神秒掉了D题并说:这个D感觉比C题简单呀!,,我:[哭.jpg](逃 Codeforces Round #435 (Div. 2) codeforces 862 A. M ...

  6. Codeforces Round #434 (Div. 2)【A、B、C、D】

    Codeforces Round #434 (Div. 2) codeforces 858A. k-rounding[水] 题意:已知n和k,求n的最小倍数x,要求x后缀至少有k个0. 题解:答案就是 ...

  7. Codeforces Round #441 (Div. 2)【A、B、C、D】

    Codeforces Round #441 (Div. 2) codeforces 876 A. Trip For Meal(水题) 题意:R.O.E三点互连,给出任意两点间距离,你在R点,每次只能去 ...

  8. Codeforces Round #440 (Div. 2)【A、B、C、E】

    Codeforces Round #440 (Div. 2) codeforces 870 A. Search for Pretty Integers(水题) 题意:给两个数组,求一个最小的数包含两个 ...

  9. Codeforces Round #439 (Div. 2)【A、B、C、E】

    Codeforces Round #439 (Div. 2) codeforces 869 A. The Artful Expedient 看不透( #include<cstdio> in ...

随机推荐

  1. 有趣的Ruby-学习笔记3

    Ruby方法 方法名要以小写字母开头.假设用大写字母开头会被作为常量 (这点非常奇怪) 定义一个无參的方法 def method_name expr.. end 定义一个有參的方法 def metho ...

  2. OBS桌面视频直播软件/推流工具使用指南

    OBS 操作指南 什么是OBS? Open Broadcaster Software 是一款好用的互联网流媒体直播内容输入作软件. OBS使用是否收费? 不收费,这个程序和它的源代码都是免费的. OB ...

  3. Learning Scrapy 中文版翻译 第二章

    为了从网页中提取信息,你有必要对网页的结构做一些了解.我们将快速学习HMTL,HTML数状结构以及用XPath在网页上提取信息 HTML, DOM树结构以及XPath 让我们花一点时间来了解当用户在浏 ...

  4. java web service

    1.编写服务代码 服务代码提供了两个函数,分别为sayHello和sayHelloToPerson,源代码如下: /* * File name: HelloService.java * * Versi ...

  5. Java WebService一个构建

    参考:http://dyygusi.iteye.com/blog/2148029 下面是自己的实践路线,

  6. 一个测试基础面试题——如何测试web银行开户

    之前面试被问到过这样一个问题,自己答的都是一些UI界面上的case,看了一些大神的关于这类面试题的总结才知道自己差的不是一点半点,今天也总结下. 内管银行开户,有账号.用户名.用户证件类型.证件号三个 ...

  7. Spring源码-加载和IOC部分

    源代码和注释放在了github上,包括加载过程的注释和getBean部分的 地址: https://github.com/lvxingzhi/spring-framework-4.3.9-note.g ...

  8. linux应用之nginx的安装及配置(centos)

    Ubuntu/CentOS 系统上安装与配置Nginx 一.在线安装: Ubuntu:sudo apt-get install nginx CentOS: sudo yum install nginx ...

  9. Facebook图片存储系统Haystack——存小文件,本质上是将多个小文件合并为一个大文件来降低io次数,meta data里存偏移量

    转自:http://yanyiwu.com/work/2015/01/04/Haystack.html 一篇14页的论文Facebook-Haystack, 看完之后我的印象里就四句话: 因为[传统文 ...

  10. kallsyms

    kallsyms 在v2.6.0的内核中,为了更好地调试内核,引入新的功能kallsyms.kallsyms把内核用到的所有函数地址和名称连接进内核文件,当内核启动后,同时加载到内存中.