SRM 559 div 2【AK】
250pt.
题意:给定n块砖,编号0~n-1,选一定的砖摞起来,要求上面的砖编号比下面的大,并且偶数高度的不能放在奇数高度的上面,求最大高度。
解法: dp[i][0]记录选完前i块并且此时最上面一块高度为偶数的最优解
dp[i][1]记录选完前i块并且此时最上面一块高度为奇数的最优解。。。
1 #include<iostream> 2 #include<string> 3 #include<cstring> 4 #include<algorithm> 5 #include<vector> 6 #define N 100 7 using namespace std; 8 int dp[N][2]; 9 class BlockTower{ 10 public: 11 int getTallest(vector <int> s){ 12 int len=s.size(); 13 memset(dp,0,sizeof(dp)); 14 if(s[0]&1) 15 dp[0][1]=s[0]; 16 else dp[0][0]=s[0]; 17 for(int i=1;i<len;i++){ 18 if(s[i]&1){ 19 dp[i][1]=max(dp[i-1][0]+s[i],dp[i-1][1]+s[i]); 20 dp[i][0]=dp[i-1][0]; 21 }else{ 22 dp[i][1]=dp[i-1][1]; 23 dp[i][0]=dp[i-1][0]+s[i]; 24 } 25 } 26 return max(dp[len-1][0],dp[len-1][1]); 27 } 28 };
500pt.
题意:给定一个r*c的棋盘,每个棋子有八个移动方向,求这个棋盘中有多少个位置能使棋子有k个合法的移动方向。
解法:棋盘中特定的区域内棋子的合法移动数是一定的,分情况讨论即可。
1 #include<iostream> 2 #include<string> 3 #include<cstring> 4 #include<algorithm> 5 #include<vector> 6 using namespace std; 7 typedef long long ll; 8 class HyperKnight{ 9 public: 10 long long countCells(int a, int b, int R, int C, int k){ 11 ll ans=0; 12 ll aa=min(a,b); 13 ll bb=max(a,b); 14 if(k==0||k==1||k==5||k==7)ans=0; 15 else if(k==2){ 16 ans=aa*aa*4; 17 }else if(k==3){ 18 ans+=(bb-aa)*aa*8; 19 }else if(k==4){ 20 ans+= (C-2*bb)*aa*2; 21 ans+=(bb-aa)*(bb-aa)*4; 22 ans+=(R-2*bb)*aa*2; 23 }else if(k==6){ 24 ans+=(bb-aa)*(C-2*bb)*2; 25 ans+=(bb-aa)*(R-2*bb)*2; 26 }else if(k==8){ 27 ans=(C-2*bb)*(R-2*bb); 28 } 29 return ans; 30 } 31 };
1000pt.
题意:...
解法:对于一个给定的情况,因为只能添加'S',所以如果有可能的方案,那么方案只有一种。
用r[i][j],d[i][j]记录i行j列的拼图向右和向下的缺口是什么,0表示没有缺口,1表示凸出,-1表示凹进。
最初枚举一下每个格子,按要求添加'S'就行。如果能够添加完,再判断是否合法。
如果整个拼图是合法的,那么每一行的d值和每一列的r值之和都应该是0
1 #include<iostream> 2 #include<cstring> 3 #include<string> 4 #include<algorithm> 5 #include<vector> 6 #define M 55 7 using namespace std; 8 class ToyTrain{ 9 public: 10 int getMinCost(vector <string> s){ 11 int r[M][M],d[M][M]; 12 int hash[M]; 13 bool v[M][M]; 14 memset(hash,0,sizeof(hash)); 15 memset(r,0,sizeof(r)); 16 memset(d,0,sizeof(d)); 17 int ans=0; 18 for(int i=0;i<s.size();i++){ 19 for(int j=0;j<s[i].size();j++){ 20 int up,right; 21 up=right=0; 22 if(j-1>=0) right=r[i][j-1]; 23 if(i-1>=0) up=d[i-1][j]; 24 if(s[i][j]=='.'||(s[i][j]>='0'&&s[i][j]<='9')){ 25 if(right==0&&up==0)continue; 26 else if(!(right!=0&&up!=0)){ 27 r[i][j]=right; 28 d[i][j]=up; 29 if(s[i][j]>='0'&&s[i][j]<='9'){ 30 if(!hash[s[i][j]-'0']){ 31 ans+=(s[i][j]-'0'); 32 hash[s[i][j]-'0']=1; 33 } 34 } 35 s[i][j]='S'; 36 } 37 else return -1; 38 } 39 else if(s[i][j]=='A'){ 40 if(right==0&&up==0){ 41 r[i][j]=1;d[i][j]=1; 42 } 43 else if(right==0&&up!=0){ 44 if(up==1){ 45 return -1; 46 } 47 else{ 48 r[i][j]=1; 49 d[i][j]=0; 50 } 51 } 52 else if(right!=0&&up==0){ 53 if(right==1){ 54 return -1; 55 } 56 else{ 57 r[i][j]=0; 58 d[i][j]=1; 59 } 60 } 61 else{ 62 if(!(right==-1&&up==-1)) 63 return -1; 64 } 65 } 66 else if(s[i][j]=='B'){ 67 if(right==0&&up==0){ 68 r[i][j]=-1; 69 d[i][j]=-1; 70 } 71 else if(right==0&&up!=0){ 72 if(up==-1){ 73 return -1; 74 } 75 else{ 76 r[i][j]=-1; 77 d[i][j]=0; 78 } 79 } 80 else if(right!=0&&up==0){ 81 if(right==-1){ 82 return -1; 83 } 84 else{ 85 r[i][j]=0; 86 d[i][j]=-1; 87 } 88 } 89 else{ 90 if(!(right==1&&up==1)) 91 return -1; 92 } 93 } 94 else{ 95 if(right==up){ 96 return -1; 97 } 98 else if(right==0&&up!=0){ 99 r[i][j]=0; 100 d[i][j]=up; 101 } 102 else if(right!=0&&up==0){ 103 d[i][j]=0; 104 r[i][j]=right; 105 } 106 } 107 } 108 } 109 memset(v,0,sizeof(v)); 110 bool flag=0; 111 for(int i=0;i<s.size();i++){ 112 int sum=0; 113 for(int j=0;j<s[i].size();j++){ 114 sum+=d[i][j]; 115 if(s[i][j]=='A'||s[i][j]=='B'||s[i][j]=='S')flag=1; 116 } 117 if(sum!=0)return -1; 118 } 119 for(int j=0;j<s[0].size();j++){ 120 int sum=0; 121 for(int i=0;i<s.size();i++){ 122 sum+=r[i][j]; 123 } 124 if(sum!=0)return -1; 125 } 126 if(flag==0)return -1; 127 else return ans; 128 } 129 };
转载于:https://www.cnblogs.com/silver-bullet/archive/2012/10/31/2748312.html
SRM 559 div 2【AK】相关推荐
- Codeforces Round #149 (Div. 2)【AK】
吐槽:比赛刚开始codeblocks出了点问题..边看题边弄编译器...囧.. D居然一直没看..因为E题意好懂..然后sb地卡了一场E...战斗力太不稳定... A... A 1 #include& ...
- position:fixed和scroll实现div浮动【示例】
原文:position:fixed和scroll实现div浮动[示例] 前言 在自己建站的过程中,要实现一个div随滚动条浮动的效果,网上找了些示例不太好用,还是自己动手,丰衣足食,写的不好请大家谅解 ...
- [DIV/CSS] 【译】60个有用CSS代码片段
2019独角兽企业重金招聘Python工程师标准>>> 1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的 ...
- Codeforces Round #498 (Div. 3)【完结】
2022.3.6 题单地址:https://codeforces.com/contest/1006 目录 A. Adjacent Replacements B. Polycarp's Practice ...
- Codeforces Beta Round #4 (Div. 2)【完结】
2022.3.3 题单地址:https://codeforces.com/contest/4 目录 A. Watermelon[思维] B. Before an Exam[贪心] C. Registr ...
- Codeforces Round #490 (Div. 3)【完结】
2022.3.3 题单地址:https://codeforces.com/contest/999 目录 A. Mishka and Contest[模拟] B. Reversing Encryptio ...
- Codeforces Round #486 (Div. 3)【完结】
2022.3.2 题单地址:https://codeforces.com/contest/988 目录 A. Diverse Team[模拟] B. Substrings Sort[暴力枚举] C. ...
- Codeforces Round #481 (Div. 3)【完结】
2022.3.1 题目地址:https://codeforces.com/contest/978 目录 A. Remove Duplicates[模拟] B. File Name[贪心 / 双指针] ...
- Codeforces Round #479 (Div. 3)【完结】
2022.2.28 开始复盘div3 题目链接:https://codeforces.com/contest/977 目录 A. Wrong Subtraction[签到模拟题] B. Two-gra ...
最新文章
- Google Expeditions项目今年获得AR支持
- ERP failure: Error when opening an RFC connection
- php ping主机名,PHP PING值函数
- import() 动态加载component组件失败
- node搭建服务器,写接口,调接口,跨域
- x264_param_t结构体参数分析
- 字符与编码(编码转换)
- SLAM算法中的数据关联问题
- 操作系统知识点大总结【进程同步与互斥】
- 如何导出共享文件夹的权限或转移
- GPCP全球月降水量数据下载与读取
- 网页切图的技巧及经验总结
- LitePal的简单使用
- 做事没有动力怎么办?
- linux 编译cgal,Linux环境下CGAL配置
- 51单片机AD模数转换(SPI通信)
- matlab残差的计算,请教MATLAB中拟合圆或者椭圆的残差如何计算
- 计算机cpu电压,怎么样调电脑cpu电压啊
- 在静止状态下根据IMU(加速度计)计算姿态角
- 016--JLE JNG(小于等于)
热门文章
- ChatGPT使用案例之微信机器人
- linux下的orre命令,鸟哥的 Linux 私房菜 -- 正规表示法 (regular expression, RE) 与文件格式化处理...
- awakeFromNib,viewDidLoad
- webpack中利用【require.ensure()】和【import()】实现按需加载
- python 如何统计文本里文字字数?
- apex英雄机器人探路者怎么玩_Apex英雄探路者技能怎么用 机器人技能技巧介绍
- 20145202马超《JAVA》预备作业1
- AVC 报错问题示例以及解决方案
- 给XJTU大一CS系学生的网络资源推荐及一些建议
- Potplayer使用madvr