Codeforces Round #374 (Div. 2)【A,B,C】
= =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】的更多相关文章
- 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 ... 
- Codeforces Round #646 (Div. 2)【C. Game On Leaves 题解】
		题意分析 关于这道题,意思就是两个人摘叶子,谁最后摘到编号为x的谁就赢了.既然是叶子,说明其最多只有一个分支,由于题目上说了是无向图,那就是度数小于等于的节点.也就是一步步移除度数小于等于的节点,直到 ... 
- Codeforces Round #443 (Div. 2) 【A、B、C、D】
		Codeforces Round #443 (Div. 2) codeforces 879 A. Borya's Diagnosis[水题] #include<cstdio> #inclu ... 
- Codeforces Round #436 (Div. 2)【A、B、C、D、E】
		Codeforces Round #436 (Div. 2) 敲出一身冷汗...感觉自己宛如智障:( codeforces 864 A. Fair Game[水] 题意:已知n为偶数,有n张卡片,每张 ... 
- Codeforces Round #435 (Div. 2)【A、B、C、D】
		//在我对着D题发呆的时候,柴神秒掉了D题并说:这个D感觉比C题简单呀!,,我:[哭.jpg](逃 Codeforces Round #435 (Div. 2) codeforces 862 A. M ... 
- 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. 题解:答案就是 ... 
- Codeforces Round #441 (Div. 2)【A、B、C、D】
		Codeforces Round #441 (Div. 2) codeforces 876 A. Trip For Meal(水题) 题意:R.O.E三点互连,给出任意两点间距离,你在R点,每次只能去 ... 
- Codeforces Round #440 (Div. 2)【A、B、C、E】
		Codeforces Round #440 (Div. 2) codeforces 870 A. Search for Pretty Integers(水题) 题意:给两个数组,求一个最小的数包含两个 ... 
- Codeforces Round #439 (Div. 2)【A、B、C、E】
		Codeforces Round #439 (Div. 2) codeforces 869 A. The Artful Expedient 看不透( #include<cstdio> in ... 
随机推荐
- 解决Android Studio下Element layer-list must be declared问题
			近期将一个项目从Eclipse转到Android Studio. 项目中使用了环信demo中的一些xml资源,转换后发现color资源目录下诸如layer-list或者shape等标签报Element ... 
- 怎么理解RSA算法
			原文地址:http://www.ittenyear.com/414/rsa/ 怎么理解RSA算法 能够把非对称加密算法里的公钥想象成一个带锁的箱子,把私钥想象成一把钥匙 能够把对称加密算法里的密钥想象 ... 
- secureCRT与vim配置
			折腾了一天,给服务器新装了centos系统,用crt连接,vim用着很不习惯. 修改配色,快捷键啥的都不怎么起效. 后来发现.crt里的会话选项-终端-仿真 里配成xtream,使用颜色方案就可以了. 
- 原来浏览器原生支持JS Base64编码解码  outside of the Latin1 range
			原来浏览器原生支持JS Base64编码解码 « 张鑫旭-鑫空间-鑫生活 https://www.zhangxinxu.com/wordpress/2018/08/js-base64-atob-bto ... 
- powershell 扩展 (PSCX)  安装指南
			在玩ansible的过程中,使用win_unzip模块时powershell支持不了,需要安装PSCX对powershell进行扩展,随手记录下安装过程. 从官网下载的Pscx是一个zip压缩文件,解 ... 
- 【转载】 C++中回车换行(\n\r)和换行(\r)的区别
			原文:http://blog.csdn.net/xiaofei2010/article/details/8458605 windows下的点一下回车,效果是:回车换行,就是\r\n unix系统下的回 ... 
- react之redux增加删除数字
			比如在页面中添加和删除‘222’ action.js export const ADD= 'ADD'; export const RED='RED'; export const add=(str)=& ... 
- python虚拟环境管理包virtualenvwrapper
			1.打开cmd 2.安装virtualenvwrapper pip install virtualenvwrapper-win 3.配置虚拟环境的位置 新建系统变量默认在c盘 4.新建虚拟环境 mkv ... 
- ubuntu16.04 + cuda9.0(deb版)+Cudnn7.1
			https://blog.csdn.net/Umi_you/article/details/80268983 
- openstack封装镜像
			1.准备工作:准备你想要封装的各种镜像的iso,完整版本最简单版本都ok,只要能出虚拟机就行,这个大家去官网下载自己要的iso就可以,我这里用centos6.4最简版本,因为分给我的活让做这个的... ... 
