Codeforces Round #249 (Div. 2)
A。水题。
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <string>
#include<algorithm>
using namespace std;
];
int main()
{
int n,m;
cin>>n>>m;
; i<=n; ++i) cin>>a[i];
;
;
; i<=n; ++i)
{
if(p<a[i])
{
p=m;
ans++;
}
p-=a[i];
}
cout<<ans<<endl;
;
}
B。用字符串读入数字。对于这个数字,从左往右看,寻找交换k次之内可得的最大数字,并交换到最左边。k再减去交换步数。如此直到k为0或者该数字达它可取的最大值。
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <string>
#include<algorithm>
using namespace std;
string num;
int k;
int main()
{
cin>>num>>k;
) cout<<num<<endl;
else
{
string t=num;
sort(t.begin(),t.end(),greater<int>());
;
int len=num.size();
while(k)
{
if(num==t) break;
int maxp=st;
; i<min(st+k+,len); ++i)
if(num[i]>num[maxp]) maxp=i;
for(int i=maxp; i>st; --i)
{
swap(num[i],num[i-]);
k--;
}
st++;
}
cout<<num<<endl;
}
;
}
C。根据计算出的数字对,画一个图。
首先计算出所有的数字对,由于有负数,为了方便可以用map<int,int>来存图。取得点可能的上下左右边界值,再遍历该空间,画图即可。
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <string>
#include<algorithm>
#include<map>
using namespace std;
typedef pair<int,int> Pair;
map<Pair,int > vis;
];
int main()
{
int n;
cin>>n;
; i<=n; ++i) cin>>a[i];
,left=,down=,right=;
,y=;
vis[Pair(x,y)]=;
; i<=n; ++i)
{
; j<=a[i]; ++j)
{
x++;
) y++;
else y--;
)
vis[Pair(x,y)]=;
else
vis[Pair(x,y+)]=-;
}
up=max(up,y);
down=min(down,y);
left=min(left,x);
right=max(right,x);
}
for(int i=up; i>down; --i)
{
; j<=right; ++j)
{
int &u=vis[Pair(j,i)];
) cout<<"/";
) cout<<"\\";
else cout<<" ";
}
cout<<endl;
}
;
}
D。预处理+统计。
统计三角形个数。要求选定的三角形的边上不含有黑点。
明显这样图中的三角形只能是等腰直角三角形。我们可以预处理出两条对角线上的白点个数。然后枚举一个点,再递增边长,在保证两条等边不含黑点的前提下,通过判断第三条边上的白点个数来判断第三条边上是否含有黑点。
这样的三角形一共有八种。第一类是斜边在对角线上的三角形,可以枚举直角点,再递增边,判断斜边。第二类是斜边在行或列上的三角形,这样可以枚举斜边中点,沿中点递增边,然后判断两条直角边。
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
using namespace std;
][];
][];
][],UR[][];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
; i<=n; ++i)
{
scanf();
; j<=m; ++j)
mp[i][j]=(grid[i][j]==:;
}
; i<=n; ++i)
; j<=m; ++j)
UL[i][j]=UL[i-][j-]+mp[i][j];
; i<=n; ++i)
; --j)
UR[i][j]=UR[i-][j+]+mp[i][j];
;
; i<=n; ++i)
; j<=m; ++j)
if(mp[i][j])
{
; mp[i-d][j]&&mp[i][j-d]; ++d) //左上
][j+]==d+)
ans++;
; mp[i+d][j]&&mp[i][j+d]; ++d)//右下
][j+d+]==d+)
ans++;
; mp[i-d][j]&&mp[i][j+d]; ++d)//右上
][j-]==d+)
ans++;
; mp[i+d][j]&&mp[i][j-d]; ++d)//左下
][j-d-]==d+)
ans++;
; mp[i-d][j]&&mp[i+d][j]; ++d) //左
][j+]==d+&&UL[i+d][j]-UL[i-][j-d-]==d+)
ans++;
; mp[i+d][j]&&mp[i-d][j]; ++d)//右
][j-]==d+&&UR[i+d][j]-UR[i-][j+d+]==d+)
ans++;
; mp[i][j-d]&&mp[i][j+d]; ++d) //上
][j+]==d+&&UL[i][j+d]-UL[i-d-][j-]==d+)
ans++;
; mp[i][j+d]&&mp[i][j-d]; ++d)//下
][j+d+]==d+&&UL[i+d][j]-UL[i-][j-d-]==d+)
ans++;
}
printf("%d\n",ans);
;
}
E。找规律+构造。
答案大致有这么几种情况:
第一类:
1212
3434
1212
3434
或者
1232
3414
1232
1414等等
这类的特点是以左上角的四个格为单元,不断在每列上重复得到。而在每行上,可分为第一、二行交不交换几种情况。
第二类:
1212
3434
2121
3434
或者
1212
3434
2121
4343等等
这类的特点是以左上角的四个格为单元,不断在每行上重复得到。而在每列上,可分为第一、二列交不交换几种情况。
我们需要找出所有情况判断是否和给出的矩阵匹配即可。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <vector>
using namespace std;
][];
int n,m;
][];
bool judge(int x,int y)
{
'!=arr[x][y]) return false;
return true;
}
void output()
{
; i<=n; ++i)
{
; j<=m; ++j)
printf("%d",arr[i][j]);
printf("\n");
}
}
bool check1()
{
; j<=; ++j)
; i<=n; ++i)
{
arr[i][j]=arr[i-][j];
if(!judge(i,j))
return false;
}
; j<=m; ++j)
{
bool ok=true;
arr[][j]=arr[][j-];
arr[][j]=arr[][j-];
,j)||!judge(,j)) ok=false;
; i<=n&&ok; ++i)
{
arr[i][j]=arr[i-][j];
if(!judge(i,j)) ok=false;
}
if(ok) continue;
ok=true;
arr[][j]=arr[][j-];
arr[][j]=arr[][j-];
,j)||!judge(,j)) ok=false;
; i<=n&&ok; ++i)
{
arr[i][j]=arr[i-][j];
if(!judge(i,j))
ok=false;
}
if(!ok) return false;
}
return true;
}
bool check2()
{
; i<=; ++i)
; j<=m; ++j)
{
arr[i][j]=arr[i][j-];
if(!judge(i,j))
return false;
}
; i<=n; ++i)
{
bool ok=true;
arr[i][]=arr[i-][];
arr[i][]=arr[i-][];
)||!judge(i,)) ok=false;
; j<=m&&ok; ++j)
{
arr[i][j]=arr[i][j-];
if(!judge(i,j))
ok=false;
}
if(ok) continue;
arr[i][]=arr[i-][];
arr[i][]=arr[i-][];
ok=true;
)||!judge(i,)) ok=false;
; j<=m&&ok; ++j)
{
arr[i][j]=arr[i][j-];
if(!judge(i,j))
ok=false;
}
if(!ok) return false;
}
return true;
}
int main()
{
scanf("%d%d",&n,&m);
; i<=n; ++i)
scanf();
]= {,,,};
do
{
arr[][]=p[];
arr[][]=p[];
arr[][]=p[];
arr[][]=p[];
bool ok=true;
; i<=&&ok; ++i)
; j<=&&ok; ++j)
if(!judge(i,j))ok=false;
if(!ok) continue;
if(check1()||check2())
{
output();
;
}
}
));
puts(");
;
}
Codeforces Round #249 (Div. 2)的更多相关文章
- 模拟 Codeforces Round #249 (Div. 2) C. Cardiogram
题目地址:http://codeforces.com/contest/435/problem/C /* 题意:给一组公式,一组数据,计算得到一系列的坐标点,画出折线图:) 模拟题:蛮恶心的,不过也简单 ...
- Codeforces Round #249 (Div. 2) C题,模拟画图 ----未解决!
http://codeforces.com/contest/435/problem/C
- Codeforces Round #249 (Div. 2)B(贪心法)
B. Pasha Maximizes time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- Codeforces Round #249 (Div. 2) A题
链接:http://codeforces.com/contest/435/problem/A A. Queue on Bus Stop time limit per test 1 second m ...
- Codeforces Round #249 (Div. 2) D. Special Grid 枚举
题目链接: http://codeforces.com/contest/435/problem/D D. Special Grid time limit per test:4 secondsmemor ...
- Codeforces Round #249 (Div. 2) 总结
D.E还是很难的.....C不想多说什么... A:提意:给出每一组人的个数,以及一次车载容量,求出最少需要多少次才能载走所有的人. water: http://codeforces.com/cont ...
- Codeforces Round #249 (Div. 2) (模拟)
C. Cardiogram time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- Codeforces Round #249 (Div. 2) C. Cardiogram
C. Cardiogram time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- Codeforces Round #249 (Div. 2) A. Black Square
水题 #include <iostream> #include <vector> #include <algorithm> using namespace std; ...
- Codeforces Round #249 (Div. 2) B. Pasha Maximizes
看到题目的时候,以为类似插入排序,比较第i个元素和第i-1个元素, 如果第i个元素比第i-1个元素小,则不交换 如果第i个元素比第i-1个元素大,则交换第i个元素和第i-1个元素 继续比较第i-1个元 ...
随机推荐
- c time_t 和 oc NSDate 的转换
c time_t 和 oc NSDate 的转换 1:time_t 转 oc NSDate time_t some_time_t=NULL; NSDate *someDate = [NSDate da ...
- Windows 调色板
目录 第1章调色板 1 1.1 为什么要使用调色板 1 1.2 使用调色板 2 1.2.1 创建逻辑调色板 2 1.2.2 使用 3 1.2.3 销毁逻辑调色板 4 ...
- android AutoCompleteTextView和Spinner选中项加亮
package com.example.spinnerexample; import java.util.ArrayList; import java.util.List; import androi ...
- 能源项目xml文件 -- springMVC-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- C#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标
#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标 2012-08-25 09:11匿名 | 浏览 3286 次 C#编程 C#项目用vs2005自带的工具打包后安装的桌面快捷方式图标怎么设 ...
- hdu--(1247)Hat’s Words(trie树)
Hat’s Words Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- javasE学习笔记:关键字super的使用
/* super 的作用: 1 . super可以在子类中引用父类的成员,通过 .的方式和属性.this相对应. 2. 在子类的构造方法中可以可使用super(参数列表)语句调用父类的构造方法 3. ...
- SAP本地文件策略(导EXCEL选择拒绝后处理)
导出EXCEL意外选择了拒绝+记住选择,这样的话在本地电脑就导不出文件了,如下图: 解决办法有2个: 1,修改导出文件的本地策略 :Alt+F12 ->选项->安全性->安全设置-& ...
- java集合——Collection接口
Collection是Set,List接口的父类接口,用于存储集合类型的数据. 2.方法 int size():返回集合的长度 void clear():清除集合里的所有元素,将集合长度变为0 Ite ...
- Android 页面滑动
1.PagerAdapter适配器 PagerAdapter主要是viewpager的适配器,而viewPager是android.support.v4扩展中新添加的一个强大控件,可以实现控件 ...