250pt.

题意:给定n块砖,编号0~n-1,选一定的砖摞起来,要求上面的砖编号比下面的大,并且偶数高度的不能放在奇数高度的上面,求最大高度。

解法: dp[i][0]记录选完前i块并且此时最上面一块高度为偶数的最优解

    dp[i][1]记录选完前i块并且此时最上面一块高度为奇数的最优解。。。

250pt

 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个合法的移动方向。

解法:棋盘中特定的区域内棋子的合法移动数是一定的,分情况讨论即可。

500pt

 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

1000pt

  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】相关推荐

  1. Codeforces Round #149 (Div. 2)【AK】

    吐槽:比赛刚开始codeblocks出了点问题..边看题边弄编译器...囧.. D居然一直没看..因为E题意好懂..然后sb地卡了一场E...战斗力太不稳定... A... A 1 #include& ...

  2. position:fixed和scroll实现div浮动【示例】

    原文:position:fixed和scroll实现div浮动[示例] 前言 在自己建站的过程中,要实现一个div随滚动条浮动的效果,网上找了些示例不太好用,还是自己动手,丰衣足食,写的不好请大家谅解 ...

  3. [DIV/CSS] 【译】60个有用CSS代码片段

    2019独角兽企业重金招聘Python工程师标准>>> 1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的 ...

  4. Codeforces Round #498 (Div. 3)【完结】

    2022.3.6 题单地址:https://codeforces.com/contest/1006 目录 A. Adjacent Replacements B. Polycarp's Practice ...

  5. Codeforces Beta Round #4 (Div. 2)【完结】

    2022.3.3 题单地址:https://codeforces.com/contest/4 目录 A. Watermelon[思维] B. Before an Exam[贪心] C. Registr ...

  6. Codeforces Round #490 (Div. 3)【完结】

    2022.3.3 题单地址:https://codeforces.com/contest/999 目录 A. Mishka and Contest[模拟] B. Reversing Encryptio ...

  7. Codeforces Round #486 (Div. 3)【完结】

    2022.3.2 题单地址:https://codeforces.com/contest/988 目录 A. Diverse Team[模拟] B. Substrings Sort[暴力枚举] C. ...

  8. Codeforces Round #481 (Div. 3)【完结】

    2022.3.1 题目地址:https://codeforces.com/contest/978 目录 A. Remove Duplicates[模拟] B. File Name[贪心 / 双指针] ...

  9. Codeforces Round #479 (Div. 3)【完结】

    2022.2.28 开始复盘div3 题目链接:https://codeforces.com/contest/977 目录 A. Wrong Subtraction[签到模拟题] B. Two-gra ...

最新文章

  1. Google Expeditions项目今年获得AR支持
  2. ERP failure: Error when opening an RFC connection
  3. php ping主机名,PHP PING值函数
  4. import() 动态加载component组件失败
  5. node搭建服务器,写接口,调接口,跨域
  6. x264_param_t结构体参数分析
  7. 字符与编码(编码转换)
  8. SLAM算法中的数据关联问题
  9. 操作系统知识点大总结【进程同步与互斥】
  10. 如何导出共享文件夹的权限或转移
  11. GPCP全球月降水量数据下载与读取
  12. 网页切图的技巧及经验总结
  13. LitePal的简单使用
  14. 做事没有动力怎么办?
  15. linux 编译cgal,Linux环境下CGAL配置
  16. 51单片机AD模数转换(SPI通信)
  17. matlab残差的计算,请教MATLAB中拟合圆或者椭圆的残差如何计算
  18. 计算机cpu电压,怎么样调电脑cpu电压啊
  19. 在静止状态下根据IMU(加速度计)计算姿态角
  20. 016--JLE JNG(小于等于)

热门文章

  1. ChatGPT使用案例之微信机器人
  2. linux下的orre命令,鸟哥的 Linux 私房菜 -- 正规表示法 (regular expression, RE) 与文件格式化处理...
  3. awakeFromNib,viewDidLoad
  4. webpack中利用【require.ensure()】和【import()】实现按需加载
  5. python 如何统计文本里文字字数?
  6. apex英雄机器人探路者怎么玩_Apex英雄探路者技能怎么用 机器人技能技巧介绍
  7. 20145202马超《JAVA》预备作业1
  8. AVC 报错问题示例以及解决方案
  9. 给XJTU大一CS系学生的网络资源推荐及一些建议
  10. Potplayer使用madvr