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块钱,问能携带 ...
随机推荐
- 【USACO 2.1.2】法雷序列
[问题描述] 对任意给定的一个自然数 n(n<=160), 将分母小于等于 n 的不可约的真分数按上升的次序排序 , 并且在第一个分数前加上 0/1, 而在最后一个分数后加上 1/1, ...
- When Colon Scripting is comming(JavaScript语法扩充)
当冒号脚本来临-- JavaScript语法扩充 连续好几夜的不能安眠,得出结论就是,未来语言未来的编译器应该是支持语法定制规则和语法扩展的,这样使得编程语言不断进化以更利于人类使用!of cours ...
- ERROR:the server has either erred or is incapable of performing the requested operation
openstack中,有时会经常出现这种错误,原因无二,一是安全组没有设置正确,二是openstack中网络配置会有些问题或者是相关的服务没有启动. 解决方法:1.安全组问题在nova.conf和ne ...
- 09_linux下安装Nvidia显卡驱动
下载驱动 去官网找去,哈哈o(^▽^)o 安装kernel source [root@localhost ~]# yum install kernel-devel 如果还不行,试试下面的 [root@ ...
- c#中方法out参数的使用
一个很普通的例题,求出一个整型数组的最小值.最大值.总和.平均值,利用调用函数的方法来ut参数实现 using System; using System.Collections.Generic; us ...
- JavaScript学习 常用的对话框函数
JavaScript提供了三个很不错的对话框函数,使用这三个函数可以很方便的显示一个对话框: 一.alert(); <script type="text/javascript" ...
- Python学习笔记六--文件和输入输出
6.1文件对象 所有Python对文件的操作都是基于对文件对象的操作.那么就从文件对象的创建说起.open()[file()]提供初始化输入输出的接口.open()成功打开文件时会返回一个文件对象. ...
- phpinfo.php
---恢复内容开始--- apache中的配置不对 查看httpd.conf文件中是否有: AddType ...... AddType application/x-httpd-php .php -- ...
- Zend Cache的学习和实例
前一段时间,公司让我组织一下关于Zend Cache的培训. 培训的具体内容有: 前端core缓存 前端Output缓存 前端Function缓存 前端Class缓存 前端File缓存 前端Page缓 ...
- 【Oracle】Windows 7下完全卸载Oracle 11g数据库
闲来无事,想把Oracle 11g重装一下,记录如下: (1)首先在服务中停止所有的Oracle服务: (2)开始 -> 程序 -> Oracle-OraDb11g_home1 - ...