第一次做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)的更多相关文章

  1. TopCoder SRM 560 Div 1 - Problem 1000 BoundedOptimization & Codeforces 839 E

    传送门:https://284914869.github.io/AEoj/560.html 题目简述: 定义"项"为两个不同变量相乘. 求一个由多个不同"项"相 ...

  2. TopCoder SRM 667 Div.2题解

    概览: T1 枚举 T2 状压DP T3 DP TopCoder SRM 667 Div.2 T1 解题思路 由于数据范围很小,所以直接枚举所有点,判断是否可行.时间复杂度O(δX × δY),空间复 ...

  3. [topcoder]SRM 646 DIV 2

    第一题:K等于1或者2,非常简单.略.K更多的情况,http://www.cnblogs.com/lautsie/p/4242975.html,值得思考. 第二题:http://www.cnblogs ...

  4. [topcoder]SRM 633 DIV 2

    第一题,http://community.topcoder.com/stat?c=problem_statement&pm=13462&rd=16076 模拟就可以了. #includ ...

  5. TopCoder SRM 596 DIV 1 250

    body { font-family: Monospaced; font-size: 12pt } pre { font-family: Monospaced; font-size: 12pt } P ...

  6. Topcoder SRM 656 (Div.1) 250 RandomPancakeStack - 概率+记忆化搜索

    最近连续三次TC爆零了,,,我的心好痛. 不知怎么想的,这题把题意理解成,第一次选择j,第二次选择i后,只能从1~i-1.i+1~j找,其实还可以从j+1~n中找,只要没有被选中过就行... [题意] ...

  7. 【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 ...

  8. 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)是 ...

  9. TopCoder SRM 642 Div.2 1000 --二分+BFS

    题意: 给你一张图,N个点(0~N-1),m条边,国王要从0到N-1,国王携带一个值,当走到一条边权大于此值的边时,要么不走,要么提升该边的边权,提升k个单位花费k^2块钱,国王就带了B块钱,问能携带 ...

随机推荐

  1. plist解析, 简易实现.

    源码 class Xml { public: typedef std::pair<std::wstring, std::wstring> NodeT; static std::vector ...

  2. Js 旋转平滑特效

    效果图 源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  3. win7设置虚拟wifi

    1. cmd,使用管理员权限打开: 2. 设置:netsh wlan set hostednetwork mode=allow ssid=ABCD key=12345678 mode:是否开启虚拟wi ...

  4. jQuery截取字符串插件区分中英文

    jQuery截取字符串插件区分中英文:截取字符串功能在大量网站都有应用,比如新闻列表这样的功能,因为新闻的标题长途未必都是恰如其分的,所以要根据需要截取指定长度的字符串,下面就分享一个jQuery实现 ...

  5. js学习笔记之:时间(二)

    今天来了解一下js中定时器的两种用法.js中包括2种定时器,分别是:           间隔型定时器:setInterval(开)    clearInterval (关)            延 ...

  6. 35 Search Insert Position(找到数的位置Medium)

    题目意思:在递增数组中找到目标数的位置,如果目标数不在数组中,返回其应该在的位置. 思路:折半查找,和相邻数比较,注意边界 class Solution { public: int searchIns ...

  7. 每日一算法【one】

    //有一个数组  {1,2,3,4,5,6,7,8,9,12,13,45,67,89,99,101,111,123,134,565,677} 查找数组中是否有指定的某一个数. /** *------- ...

  8. svn , github工作流

    svn 需要有一台中央服务器,所有的分支,主干,标签,全都保存在这台中央服务器上.开发着需要提交代码时,需要保持中央服务器连接.切换分支时会有本地与服务器网络连接. git 改进了这一点,每台安装有g ...

  9. Redis系列(1)之安装

    Redis系列(1)之安装 由于项目的需要,最近需要研究下Redis.Redis是个很轻量级的NoSql内存数据库,它有多轻量级的呢,用C写的,源码只有3万行,空的数据库只占1M内存.它的功能很丰富, ...

  10. C#程序设计基础——常量

    C#程序设计基础——常量 常量是在编译时已知,并且在程序的生存期内不发生更改的不可变值.常量使用const修饰符进行声明. 常量必须在声明时初始化,且常量的类型必须为以下类型之一:sbyte/byte ...