Topcoder SRM 648 (div.2)
第一次做TC全部通过,截图纪念一下。

终于蓝了一次,也是TC上第一次变成蓝名,下次就要做Div.1了,希望div1不要挂零。。。_(:зゝ∠)_
A. KitayutaMart2
万年不变的水题。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<set>
#include<map>
#include<stack>
#include<vector>
#include<queue>
#include<string>
#include<sstream>
#define eps 1e-9
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
#define FOR(i,j,k) for(int i=j;i<=k;i++)
#define MAXN 1005
#define MAXM 40005
#define INF 0x3fffffff
using namespace std;
typedef long long LL;
int i,j,k,n,m,x,y,T,ans,big,cas,num;
bool flag;
class KitayutaMart2
{
public:
int numBought(int K, int T)
{
m=T/K;
m++;
ans=;
while (m!=)
{
m>>=;
ans++;
}
return ans-;
}
};
B. Fragile2
给一个N个点(3<=N<=20)的无向图,现在不分先后取出其中两个点,使得强连通分量变多,问最多有多少种取法。
因为图实在太小了,所以枚举这两个点即可。用DFS计算连通分支数。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<set>
#include<map>
#include<stack>
#include<vector>
#include<queue>
#include<string>
#include<sstream>
#define eps 1e-9
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
#define FOR(i,j,k) for(int i=j;i<=k;i++)
#define MAXN 1005
#define MAXM 40005
#define INF 0x3fffffff
using namespace std;
typedef long long LL;
int i,j,k,n,m,x,y,T,ans,big,cas,num,G[][],G2[][];
bool flag;
int vis[];
class Fragile2
{
public: void check(int u)
{
int i,j,k;
for (i=;i<n;i++)
{
if (!vis[i] && G2[u][i])
{
vis[i]=;
check(i);
}
}
} int cc(int a,int b)//计算删去结点a,b后的连通度
{
int i,j,k,blk; memset(vis,,sizeof(vis)); for (i=;i<n;i++)//复制一下地图
{
for (j=;j<n;j++)
{
G2[i][j]=G[i][j];
}
} vis[a]=;vis[b]=;//删去结点a,b
for (i=;i<n;i++)
{
G2[i][a]=;
G2[a][i]=;
G2[b][i]=;
G2[i][b]=;
} blk=;
for (i=;i<n;i++)//计算强连通分量
{
if (!vis[i])
{
blk++;
vis[i]=;
check(i);
}
} return blk; } int countPairs(vector <string> mp)
{
int i,j,k;
n=mp.size(); for (i=;i<n;i++)//复制一下地图到G
{
for (j=;j<n;j++)
{
if (mp[i][j]=='N') G[i][j]=;
else G[i][j]=;
}
} num=cc(n,n);//计算一下不修改地图时的强连通分量数 ans=;
for (i=;i<n;i++)//枚举要删除的两个点。
{
for (j=i+;j<n;j++)
{
if (num<cc(i,j)) ans++;
}
}
return ans;
}
};
C.ABC
字符串长为N(3<=N<=30),并且由大写字母A,B,C组成,其中存在K(k<=N*(N-1)/2)对数i和j,满足i<j,s[i]<s[j]。现在给出N,K,试着构造任意一个满足条件的字符串
动态规划,设dp[a][b][c][s]!=0时为当前字符串由a个字母A,b个字母b,c个字母C组成,并且得分为s成立。而dp[a][b][c][s]=0表示由a个字母A,b个字母b,c个字母C组成的字符串不可能得分为s。
转移方程
(1) dp[a+1][b][c][s]=dp[a][b][c][s];
(2) dp[a][b+1][c][s+a]=dp[a][b][c][s]
(3) dp[a][b][c+1][s+a+b]=dp[a][b][c][s]
初始状态为dp[0][0][0][0]=1
因为我们要递归输出,所以设dp[a][b][c][s]=1为由状态1转移过来的,dp[a][b][c][s]=2为由状态2转移过来的,dp[a][b][c][s]=3为由状态3转移过来的
最后递归输出答案即可。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<set>
#include<map>
#include<stack>
#include<vector>
#include<queue>
#include<string>
#include<sstream>
#define eps 1e-9
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
#define FOR(i,j,k) for(int i=j;i<=k;i++)
#define MAXN 1005
#define MAXM 40005
#define INF 0x3fffffff
using namespace std;
typedef long long LL;
int i,j,k,n,m,x,y,T,big,cas,num;
bool flag;
int dp[][][][];
string ans; class ABC
{
public: void out(int x,int y,int z,int s)
{
if (x<=&&y<=&&z<=&&s<=) return;
if (dp[x][y][z][s]==)
{
out(x-,y,z,s);
ans+="A";
}else
if (dp[x][y][z][s]==)
{
out(x,y-,z,s-x);
ans+="B";
}else
{
out(x,y,z-,s-x-y);
ans+="C";
}
} string createString(int n, int c)
{
int i,j,k,l; dp[][][][]=;
for (i=;i<=n;i++)
{
for (j=;i+j<=n;j++)
{
for (k=;i+j+k<=n;k++)
{
for (l=;l<=c;l++)
{
if (dp[i][j][k][l])
{ if (i+j+k==n && l==c)//找到答案,输出
{
out(i,j,k,l);//递归输出
return ans;
} dp[i+][j][k][l]=;
if (l+i<=c) dp[i][j+][k][l+i]=;
if (l+i+j<=c) dp[i][j][k+][l+i+j]=;
}
}
}
}
} return ""; }
Topcoder SRM 648 (div.2)的更多相关文章
- TopCoder SRM 560 Div 1 - Problem 1000 BoundedOptimization & Codeforces 839 E
传送门:https://284914869.github.io/AEoj/560.html 题目简述: 定义"项"为两个不同变量相乘. 求一个由多个不同"项"相 ...
- TopCoder SRM 667 Div.2题解
概览: T1 枚举 T2 状压DP T3 DP TopCoder SRM 667 Div.2 T1 解题思路 由于数据范围很小,所以直接枚举所有点,判断是否可行.时间复杂度O(δX × δY),空间复 ...
- [topcoder]SRM 646 DIV 2
第一题:K等于1或者2,非常简单.略.K更多的情况,http://www.cnblogs.com/lautsie/p/4242975.html,值得思考. 第二题:http://www.cnblogs ...
- [topcoder]SRM 633 DIV 2
第一题,http://community.topcoder.com/stat?c=problem_statement&pm=13462&rd=16076 模拟就可以了. #includ ...
- TopCoder SRM 596 DIV 1 250
body { font-family: Monospaced; font-size: 12pt } pre { font-family: Monospaced; font-size: 12pt } P ...
- Topcoder SRM 656 (Div.1) 250 RandomPancakeStack - 概率+记忆化搜索
最近连续三次TC爆零了,,,我的心好痛. 不知怎么想的,这题把题意理解成,第一次选择j,第二次选择i后,只能从1~i-1.i+1~j找,其实还可以从j+1~n中找,只要没有被选中过就行... [题意] ...
- 【topcoder SRM 702 DIV 2 250】TestTaking
Problem Statement Recently, Alice had to take a test. The test consisted of a sequence of true/false ...
- TopCoder SRM 639 Div.2 500 AliceGameEasy
题意: 一个游戏有n轮,有A和B比赛,谁在第 i 轮得胜,就获得 i 分,给出x,y,问A得x分,B得y分有没有可能,如果有,输出A最少赢的盘数 解题思路: 首先判断n(n+1)/2 = (x+y)是 ...
- TopCoder SRM 642 Div.2 1000 --二分+BFS
题意: 给你一张图,N个点(0~N-1),m条边,国王要从0到N-1,国王携带一个值,当走到一条边权大于此值的边时,要么不走,要么提升该边的边权,提升k个单位花费k^2块钱,国王就带了B块钱,问能携带 ...
随机推荐
- MFC框架类、文档类、视图类相互访问的方法
1.获取应用程序指针 CMyApp* pApp=(CMyApp*)AfxGetApp(); 2.获取主框架指针 CWinApp 中的公有成员变量 m_pMainWnd 就是主框架的指针 CMainFr ...
- jsp中button传值
onclick=location.href("linker.jsp?custno="+ from1.custno.value)或者onClick ="a()" ...
- POJ 1240 Pre-Post-erous! 解题报告
题意: 给出一个m叉树的前,后序遍历求这样的树有多少种. Solution: 我们知道前序遍历的第一个点一定是根节点,后序遍历的最后一个点一定是根节点. 由此,我们只一要确定对于每一个节点,它有多少个 ...
- js与jquery获取父元素,删除子元素的不同方法
var obj=document.getElementById("id");得到的是dom对象,对该对象进行操作的时候使用js方法 var obj=$("#id" ...
- php 带cookie登陆
<?php /** * @version $id */ define('SCRIPT_ROOT',dirname(__FILE__).'/'); $act = trim($_REQUEST['a ...
- Hadoop-CDH5.7.0 for CentOS7
一.需求 系统 CentOS 7 最小化安装 JDK环境 JDK版本:1.8.0_91 jdk-8u91-linux-x64.rpm 下载地址:http://www.oracle.com/techne ...
- [C]记录C语言中由于粗心遇到的奇葩错误.
1. 正确代码: for( word = strtok( buf, whitespace); word != NULL; word = strtok( NULL, whitespace)) { ) 错 ...
- 使用Intellij IDEA构建spark开发环境
近期开始研究学习spark,开发环境有多种,由于习惯使用STS的maven项目,但是按照许多资料的方法尝试以后并没有成功,也可能是我环境问题:也可以是用scala中自带的eclipse,但是不太习惯, ...
- Xcode升级导致插件失效的解决办法-b
作为iOS界的攻城师,每一次水果发布新的Xcode开发版本时,我们都会跟进,然而那些好用的Xcode插件都会莫名的失灵...对此我各种百度,在这里,我将跟大家分享我是如何解决这些问题的.当然,我的方案 ...
- Javascript 获取dom的宽度 随笔一
javascript 中 offsetWidth 获得的并不是 真实的宽度 不等于 style.width ;offetWidth 实际上获得的是物体的盒模型尺寸. 包括 border padding ...