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=0;while (m!=0) {m>>=1;ans++;}return ans-1;}
};
View Code

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[55][55],G2[55][55];
bool flag;
int vis[55];
class Fragile2
{public:void check(int u){int i,j,k;for (i=0;i<n;i++){if (!vis[i] && G2[u][i]){vis[i]=1;check(i);}}}int cc(int a,int b)//计算删去结点a,b后的连通度 
        {int i,j,k,blk;memset(vis,0,sizeof(vis));for (i=0;i<n;i++)//复制一下地图 
               {for (j=0;j<n;j++){G2[i][j]=G[i][j]; }}vis[a]=1;vis[b]=1;//删去结点a,b for (i=0;i<n;i++) {G2[i][a]=0;G2[a][i]=0;G2[b][i]=0;G2[i][b]=0;}blk=0; for (i=0;i<n;i++)//计算强连通分量 
            {if (!vis[i]){blk++;vis[i]=1;check(i); }}return blk;}int countPairs(vector <string> mp){int i,j,k;n=mp.size();for (i=0;i<n;i++)//复制一下地图到G 
               {for (j=0;j<n;j++){if (mp[i][j]=='N') G[i][j]=0;else G[i][j]=1;}}num=cc(n,n);//计算一下不修改地图时的强连通分量数 
               ans=0;for (i=0;i<n;i++)//枚举要删除的两个点。 
              {for (j=i+1;j<n;j++){if (num<cc(i,j)) ans++;}}return ans;}
};
View Code

 

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[35][35][35][440];
string ans;class ABC
{public:void out(int x,int y,int z,int s){if (x<=0&&y<=0&&z<=0&&s<=0) return;if (dp[x][y][z][s]==1) {out(x-1,y,z,s);ans+="A";}elseif (dp[x][y][z][s]==2) {out(x,y-1,z,s-x);ans+="B";}else{out(x,y,z-1,s-x-y);ans+="C";}}string createString(int n, int c){int i,j,k,l;dp[0][0][0][0]=1;for (i=0;i<=n;i++){for (j=0;i+j<=n;j++){for (k=0;i+j+k<=n;k++){for (l=0;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+1][j][k][l]=1;if (l+i<=c) dp[i][j+1][k][l+i]=2; if (l+i+j<=c) dp[i][j][k+1][l+i+j]=3;}}}}}return "";}
View Code

 

转载于:https://www.cnblogs.com/zhyfzy/p/4268944.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kadane's algorithm学习

Kadane’s algorithm 简单来说就是用来计算数组中的连续子数组之和最大是多少 vector<int> vec; int temp 0,ans 0; for(int i0;i<vec.size();i){temp max(tempvec[i],vec[i]);ans max(temp,ans); } return ans;循环的第一行就是用来比较当前位置的值和前面数组…

好用的ajax后台框架

dwz 简单实用的国产jquery Ui框架 http://www.j-ui.com/#_blank转载于:https://www.cnblogs.com/userbibi/p/3441382.html

OpenFire源码学习之十九:在openfire中使用redis插件(上)

Redis插件 介绍 Redis是目前比较流行的NO-SQL&#xff0c;基于K,V的数据库系统。关于它的相关操作信息&#xff0c;本人这里就不做重复了&#xff0c;相关资料可以看这个网站http://www.redis.io/(官网)、http://www.redis.cn/(中文站)。 这里本人想说的是&#xff0c;拿Redis做…

c++ queue学习

参考资料&#xff1a; cppreference.com 本文代码&#xff1a; 本文源码 目录成员函数1.operator &#xff08;赋值给容器&#xff09;元素访问2.front &#xff08;访问第一个元素&#xff09;3.back &#xff08;访问最后一个元素&#xff09;容量4.empty &#xff08;判断容…

没有文件扩展“.js”的脚本引擎问题解决

安装MinGW的时候提示没有文件扩展“.js”的脚本引擎。原因&#xff1a;系统安装Dreamwear、UltraEdit、EditPlus后修改了.js文件的默认打开方式。当想直接执行js脚本时就会出现此错误。解决办法&#xff1a;打开注册表编辑器&#xff0c;定位[HKEY_CLASSES_ROOT.js]这一项&…

160 - 54 eKH

环境&#xff1a;windows xp 工具&#xff1a; 1、OllyDBG 2、IDA 3、exeinfo 查壳发现是程序无壳且用Delphi语言编写 可以通过搜索字符串的方式定位关键函数地址 这里定位到是 00427B44ReadInput(a2, &v17); // 读取输入的usernameif ( StrL…

点赚接口(第二版)

1.查看是否有新消息 url&#xff1a;/get/message/status?user_id{user_id} method&#xff1a;get response&#xff1a; {"code": "ok","msg": "","data": 0 //新消息数目 } 2.获取消息列表 url&#xff1a;/get/messa…

Java基础之线程——使用Runnable接口(JumbleNames)

控制台程序。 除了定义Thread新的子类外&#xff0c;还可以在类中实现Runnable接口。您会发现这比从Thread类派生子类更方便&#xff0c;因为在实现Runnable接口时可以从不是Thread的类派生子类&#xff0c;并且仍然表示线程。Java只允许有单个基类&#xff0c;如果类派生于Thr…

cpri带宽不足的解决方法_白皮书:FPGA赋能下一代通信和网络解决方案(第四部分)...

对PCIe Gen 5的支持除了以太网和存储控制器&#xff0c;Speedster7t FPGA上提供的对PCIe Gen 5的支持还能够与主机处理器紧密集成&#xff0c;以支持诸如sidecar智能网卡(SmartNIC)设计等高性能加速器应用。PCI Gen 5控制器使其能够读取和写入存储在FPGA内存层级结构中的数据&a…

laravel里面使用event

模式&#xff1a;大概是通过一个自定义的event&#xff0c;一个handler&#xff0c;还有一个binder&#xff0c;然后用来简化通知模型 生成自定义的event ./artisan make:event MyEvent 生成自定义的handler ./artisan handler:event MyEventHandler --eventMyEvent 然后在Even…

C语言的条件编译#if, #elif, #else, #endif、#ifdef, #ifndef

有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件&#xff0c;这当然可以通过变量设置&#xff0c;把所有可能用到的代码都写进去&#xff0c;在初始化时配置&#xff0c;但在不同的情况下可能只用到一部分代码&#xff0c;就没必…

山体等高线怎么看_每日一题 | 此处向斜山,你看出来了吗?

每日一题 | 此处向斜山&#xff0c;你看出来了吗&#xff1f;(2018江苏高考)如图为某区域地质简图。该区沉积地层有Q、P、C、D、S2、S1&#xff0c;其年代依次变老。读图回答1&#xff5e;2题。1&#xff0e;从甲地到乙地的地形地质剖面示意图是(  )2&#xff0e;为揭示深部地…

cmake The source directory xxxx does not appear to contain CMakeLists.txt

执行 cmake . 的时候报错&#xff1a; The source directory “xxxx” does not appear to contain CMakeLists.txt 简单来说就是当前文件夹里面没有 CMakeLists.txt

SSH出错--hibernate--org.hibernate.hql.ast.QuerySyntaxException: User is not mapped [from User]

String queryString "from user where u.userName ? and u.userPassword ?"; ----------------------------------------------------------- 改为&#xff1a; String queryString "from User where u.userName ? and u.userPassword ?"; 我估…

Linux下的tar压缩解压缩命令详解

tar -c: 建立压缩档案-x&#xff1a;解压-t&#xff1a;查看内容-r&#xff1a;向压缩归档文件末尾追加文件-u&#xff1a;更新原压缩包中的文件 这五个是独立的命令&#xff0c;压缩解压都要用到其中一个&#xff0c;可以和别的命令连用但只能用其中一个。下面的参数是根据需要…

java和c++的区别大吗_大空间消防水炮ZDMS0.8/30S坐装和吊装有区别吗?

大空间消防水炮现在是高大建筑的消防必备的设备之一&#xff0c;其型号按照流量可分为4种&#xff0c;ZDMS0.6/5S&#xff0c;ZDMS0.6/10S&#xff0c;SZDMS0.8/20S&#xff0c;ZDMS0.8/30S。在这中间使用较多的是5L和30L的&#xff0c;5L的消防水炮都是吊装&#xff0c;但是30…

Windows Hook(1)加载DLL

DLL代码 #include <Windows.h> BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) {switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:MessageBox(NULL, L"dllHook", L"Hook", MB_OK);break;case DLL_THR…

WPF Delegate委托整理

那啥&#xff0c;是从这里整理出来的&#xff0c;感谢Rising_Sun&#xff0c;整理的过于简单&#xff0c;看不明白的戳这里 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; us…

silverligh的数据访问

对于在Silverlight中访问数据&#xff0c;初学者的误解之一就是他们在Silverlight中寻找ADO.NET类库。别找了&#xff0c;找不到的。记住&#xff0c;Silverlight是部署在互联网上的客端技术&#xff0c;你不能要求一个浏览器插件去直接访问你的数据库……除非你想把数据库直接…

cacheinterceptor第二次访问没被调用_访问者设计模式在OSG中的应用

为什么要谈谈访问者设计模式呢&#xff1f;因为OSG整个引擎就是用访问者设计模式建立起来的&#xff0c;不论是遍历节点图&#xff0c;还是做各种实用的功能&#xff0c;都需要大量的用到访问者设计模式。先谈谈访问者设计模式的定义。1&#xff1a;什么是访问者模式访问者模式…