srm 530

srm 529感觉题并不是很有趣,所以不打算写题解辣>_<

250


Solution

唔,这是个傻逼题,随便暴力下就好= =

Code

#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
class GogoXCake {
public:
   string solve( vector <string> cake, vector <string> cutter ) {
     int m = cutter.size(), n = cutter[0].size();
     for (int i = 0; i + m <= cake.size(); ++i) {
        for (int j = 0; j + n <= cake[0].size(); ++j) {
            bool canUse = true;
            for (int x = 0; x < m; ++x)
                for (int y = 0; y < n; ++y)
                     if (cutter[x][y] == ‘.‘ && cake[i + x][j + y] == ‘X‘)
                        canUse = false;
            if (canUse) {
                 for (int x = 0; x < m; ++x)
                    for (int y = 0; y < n; ++y)
                        if (cutter[x][y] == ‘.‘)
                            cake[i + x][j + y] = ‘X‘;
            }
        }
     }
     for (int i = 0; i < cake.size(); ++i)
        for (int j = 0; j < cake[0].size(); ++j)
            if (cake[i][j] == ‘.‘)
                return "NO";
     return "YES";
   }
}; 

500


Description:

给定一个邻接矩阵表示的图,求0~n?1最多有多少条路径,满足这些路径按一定顺序排列后每条路径至少出现一条之前没有出现过的边。

Solution

感觉这是道非常好的题,可惜自己太弱,听别人讲了才会>_<

首先求出传递闭包,然后我们保留那些能从0到达并且能到n?1的点,标记除0,n?1外所有点visited为false。

然后我们找一个没走过的点v,从一个走过的点u走到v,然后把v标记为走过。当所有点都标记为走过的时候,随意选一个没走过的边,都可以用已经走过的边形成一条路径。

所以最开始用来标记这n?2个点一共用了n?1条边,形成一条路径。其余m?(n?1)=m?n+1条边每条边都形成一个新的路径,所以一共有1+m?n+1=m?n+2条路径。

真是一道很好的题

Code:

#include <bits/stdc++.h>
using namespace std;
const int N = 55;
bool g[N][N];
class GogoXMarisaKirisima {
    public:
    int solve(vector <string> choices) {
        int n = choices.size();
        for (int i = 0; i < n; ++i) {
            g[i][i] = 1;
            for (int j = 0; j < n; ++j)
                if (choices[i][j] == ‘Y‘)   g[i][j] = 1;
        }
        for (int k = 0; k < n; ++k)
            for (int i = 0; i < n; ++i)
                for (int j = 0; j < n; ++j)
                    g[i][j] |= g[i][k] & g[k][j];
        if (!g[0][n - 1])   return 0;
        int ans = 0;
        for (int i = 0; i < n; ++i)
            for (int j = 0; j < n; ++j)
                if (choices[i][j] == ‘Y‘ && g[0][i] && g[j][n - 1]) ++ans;
        for (int i = 1; i < n - 1; ++i)
            if (g[0][i] && g[i][n - 1]) --ans;
        return ans;
    }
};

时间: 2024-10-07 07:51:25

srm 530的相关文章

汕头市队赛 SRM 09 A 撕书

A 撕书I-3 SRM 09 背景&&描述 琉璃在撕书.     书总共有n页,都悬浮在数轴上,第i页的位置为,上面写着一个数字.     琉璃从右往左撕书.假如看到了第i页,就把在第i页左边,且与之距离<=的书都撕掉.(第i页本身不撕)     夜子为了尽量地保全魔法书,决定偷偷在琉璃开始撕之前,增加一页.增加的这一页必须在所有书页的右边,数字随意.     夜子想知道,最少会有多少页书被撕毁. 输入格式 第一行一个整数n,表示书页数. 接下来n行,第i行的俩整数分别为和. 输出格

530 This FTP server is anonymous only vsftp服务器登录失败解决方案

http://blog.csdn.net/pipisorry/article/details/39647931 用本机用户登录vsftp出现错误: [email protected]:~#ftp ftp> open 127.0.0.1 Connected to 127.0.0.1. 220 (vsFTPd 2.3.5) Name (127.0.0.1:pipi): 530 This FTP server is anonymous only. Login failed. ftp> quit 登录

汕头市队赛 SRM 09 B 撕书

B 撕书II-3 SRM 09 背景&&描述 琉璃手头有一黑一白两本魔法书,一本是<缟玛瑙的不在证明>,另一本是<白色相簿1.5>     传说同时打开这两本书会有奇怪的事情发生.     琉璃打开一看,果然非常奇怪:两本书上都各自写着一个正整数(可能他买到盗版了),分别是a和b.     试图撕书的汀想借过来看看,但琉璃只告诉了他这俩数加起来的值x和异或起来的值y.     汀发现有很多种(a,b)满足琉璃告诉他的信息...你能帮他算出来有多少种吗? 输入格式 两

windows server 2012 FTP连接报530 User 用户名 cannot log in home directory inaccessible的解决方法

我最近在创建个人网站,经过了万网购买域名注册(www.lingcup.xyz ,www.lingcup.com),在主机屋购买免费云服务器(ip是49.4.142.41),域名别名解析(cname)到云服务器指向的别名,在云服务器安装了windows server 2012 系统,到了用本地笔记本上的ftp客户端上传asp.net 网站到服务器上的步骤了. 然后就出现了530 User 用户名 cannot log in home directory inaccessible 连不上服务器的情况

TopCoder SRM 625 Incrementing Sequence 题解

本题就是给出一个数k和一个数组,包括N个元素,通过每次增加数组中的一个数的操作,最后需要得到1 - N的一个序列,不用排序. 可以从暴力法入手,然后优化. 这里利用hash表进行优化,最终得到时间效率是O(n*n)的算法,而且常数项应该很低,速度还挺快的. 思路: 1 如果数组A[i]在1 -N 范围内,就利用bool B[]记录,这个数已经找到了: 2 如果A[i]的值之前已经找到了,那么就增加k操作,得到新的值A[i]+k,看这个值是否找到了,如果没找到,就使用B记录,如果之前已经找到了,那

汕头市队赛 SRM 06 C 秀恩爱

C 秀恩爱 SRM 06 背景&&描述 KPM坐在直升机上俯瞰小渔村景象. 渔村可看作二维平面,密密麻麻地到处都是单身狗,KPM当前所在坐标为(sx,sy). KPM的后宫团们自发地聚集在一起为他送行,从空中看,后宫团形成了一个多边形. 当然了KPM是不在那个多边形内的. 直升机突然开始原地转圈,后宫团们因为想看着KPM的正脸,所以也跟着以KPM所在坐标为中心旋转. 后宫团所经之处单身狗尸横遍野.赶来救治伤员的医护人员想知道,多边形扫过的面积是多少. 注意,本题不保证横坐标互不相同.纵坐标

[TC SRM 697 div1 lev1] DivisibleSetDiv1

Tutorial:https://apps.topcoder.com/wiki/display/tc/SRM+697#DivisibleSetDiv1 Note:证明过程值得一看. 主要内容:寻找[x1,x2,...,xn]使得满足bi * xi >= S - xi,其中S = x1 + x2 + ... + xn.

Topcoder SRM 刷题企划

1.本文用来记录自己在Topcoder上刷过的题目.不过重点是记录心得,记录自己的思路问题. 2.刷的题目全部都是Div2 1000分的题目,小概率会去做Div1 的进阶题. 3.基本上自己写出来的题目都不会另开一篇来写. 4.Topcoder使用: [教程1][教程2] SRM 508 Div2 YetAnotherORProblem (Div2 Hard) 题意:构造长度为N,各元素上限为R的序列,并且满足$A_1+A_2+\cdots+A_n=A_1|A_2|\cdots|A_n$,求方案

解决flashfxp连接虚拟机报错 530 permission denied

菜鸟使用flashfxp遇到连接报错. [21:36:19] [R] 530 Permission denied.[21:36:19] [R] 连接失败 (连接已被客户端关闭) 搜索后发现,是因为linux设定root帐号不准连接,因此,我们在linux设定下,允许root连接即可(不推荐这么做,安全考虑) vsftpd的配置,配置文件中限定了vsftpd用户连接控制配置. vsftpd.ftpusers:位于/etc/vsftpd目录下.它指定了哪些用户账户不能访问FTP服务器,例如root等