第一次做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. 【USACO 2.1.2】法雷序列

    [问题描述]     对任意给定的一个自然数 n(n<=160), 将分母小于等于 n 的不可约的真分数按上升的次序排序 , 并且在第一个分数前加上 0/1, 而在最后一个分数后加上 1/1, ...

  2. When Colon Scripting is comming(JavaScript语法扩充)

    当冒号脚本来临-- JavaScript语法扩充 连续好几夜的不能安眠,得出结论就是,未来语言未来的编译器应该是支持语法定制规则和语法扩展的,这样使得编程语言不断进化以更利于人类使用!of cours ...

  3. ERROR:the server has either erred or is incapable of performing the requested operation

    openstack中,有时会经常出现这种错误,原因无二,一是安全组没有设置正确,二是openstack中网络配置会有些问题或者是相关的服务没有启动. 解决方法:1.安全组问题在nova.conf和ne ...

  4. 09_linux下安装Nvidia显卡驱动

    下载驱动 去官网找去,哈哈o(^▽^)o 安装kernel source [root@localhost ~]# yum install kernel-devel 如果还不行,试试下面的 [root@ ...

  5. c#中方法out参数的使用

    一个很普通的例题,求出一个整型数组的最小值.最大值.总和.平均值,利用调用函数的方法来ut参数实现 using System; using System.Collections.Generic; us ...

  6. JavaScript学习 常用的对话框函数

    JavaScript提供了三个很不错的对话框函数,使用这三个函数可以很方便的显示一个对话框: 一.alert(); <script type="text/javascript" ...

  7. Python学习笔记六--文件和输入输出

    6.1文件对象 所有Python对文件的操作都是基于对文件对象的操作.那么就从文件对象的创建说起.open()[file()]提供初始化输入输出的接口.open()成功打开文件时会返回一个文件对象. ...

  8. phpinfo.php

    ---恢复内容开始--- apache中的配置不对 查看httpd.conf文件中是否有: AddType ...... AddType application/x-httpd-php .php -- ...

  9. Zend Cache的学习和实例

    前一段时间,公司让我组织一下关于Zend Cache的培训. 培训的具体内容有: 前端core缓存 前端Output缓存 前端Function缓存 前端Class缓存 前端File缓存 前端Page缓 ...

  10. 【Oracle】Windows 7下完全卸载Oracle 11g数据库

    闲来无事,想把Oracle 11g重装一下,记录如下:   (1)首先在服务中停止所有的Oracle服务:   (2)开始 -> 程序 -> Oracle-OraDb11g_home1 - ...