第十六届四川省大学生程序设计竞赛
·
E.L-Covering Checker
题意:给定n×m的网格,UDLR分别是L型瓦片中心的上下左右,且右上角必须有且只有一个'.'
分析:用b数组记录瓦片中心四周有几块,然后模拟即可
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void sol(){
int n,m;cin>>n>>m;
char a[n+10][m+10];int b[n+10][m+10];
memset(b,0,sizeof(b));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='U'){
if(i-1==0){
cout<<"No"<<endl;return;
}
b[i-1][j]+=1;
}
else if(a[i][j]=='D'){
if(i+1==n+1){
cout<<"No"<<endl;return;
}
b[i+1][j]+=1;
}
else if(a[i][j]=='L'){
if(j-1==0){
cout<<"No"<<endl;return;
}
b[i][j-1]+=1;
}
else if(a[i][j]=='R'){
if(j+1==m+1){
cout<<"No"<<endl;return;
}
b[i][j+1]+=1;
}
else if(a[i][j]=='.'&&(i!=1||j!=m)){
cout<<"No"<<endl;return;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(i==1&&j==m&&a[i][j]!='.'){
cout<<"No"<<endl;return;
}
if((i!=1||j!=m)&&a[i][j]=='.'){
cout<<"No"<<endl;return;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='C'){
if(b[i][j]!=2){
cout<<"No"<<endl;return;
}
}
else{
if(b[i][j]!=0){
cout<<"No"<<endl;return;
}
}
}
}
cout<<"Yes"<<endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int t;cin>>t;
while(t--)sol();
return 0;
}
H.GG and YY's Stone Game
题意:G和Y在一堆大小为n的石子上玩游戏,G先手,每人只能拿一到两个石子,不能拿的一方输。判断G胜负,以及胜方最后得到的棋子数v
分析:如果n%3==0,G拿i个,只要Y拿3-i个即可获胜。因为G不能胜利,所以G会贪心,G会拿n×2/3
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void sol(){
ll n;cin>>n;
if(n%3!=0){
cout<<"0 "<<n/3+n%3<<endl;
}
else{
cout<<"1 "<<n/3<<endl;
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int t;cin>>t;
while(t--)sol();
return 0;
}
L.Beef Tripe in Soup Pot?
题意:有辣锅和清汤锅,第i种食材的烹饪时间分别表示ai和bi,如果可以放到俩个锅就选择时间短的;问从辣锅和清汤锅中分别捞出食材的顺序
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
struct AA{
ll a,b,c,d;
}A[N];
struct BB{
ll a,idx;
}b[N];
struct CC{
ll a,idx;
}c[N];
bool cmp(BB x,BB y){
return x.a<y.a;
}
bool cmpp(CC x,CC y){
return x.a<y.a;
}
void sol(){
int n;cin>>n;
int cntb=1,cntc=1;
for(int i=1;i<=n;i++){
cin>>A[i].a>>A[i].b>>A[i].c>>A[i].d;
if(A[i].c==0&&A[i].d==1){
c[cntc].a=A[i].b;c[cntc].idx=i;cntc++;
}
else if(A[i].c==1&&A[i].d==0){
b[cntb].a=A[i].a;b[cntb].idx=i;cntb++;
}
else{
if(A[i].a<A[i].b){
b[cntb].a=A[i].a;b[cntb].idx=i;cntb++;
}
else{
c[cntc].a=A[i].b;c[cntc].idx=i;cntc++;
}
}
}
sort(b+1,b+cntb,cmp);sort(c+1,c+cntc,cmpp);
cout<<cntb-1<<" ";
for(int i=1;i<cntb;i++)cout<<b[i].idx<<" ";cout<<endl;
cout<<cntc-1<<" ";
for(int i=1;i<cntc;i++)cout<<c[i].idx<<" ";
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int t=1;
while(t--)sol();
return 0;
}
更多推荐


所有评论(0)