标签:判断 lock int else can 数据 不同类 破坏 构造
玩搞矩阵的游戏,只能在同行和同列都是0的地方把这个位置的0变成1,谁没法继续变了谁就输了
贪心,模拟
没有什么麻烦的贪心策略,1的行和列设为false,从头到尾跑一遍,i行j列是不是还可以放,因为无后效性(灵活运用词语哈哈),所以顺序跑就好了,很简单~
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int x,ans=0,t,n,m;
bool h[100],l[100];
cin>>t;
while (t--)
{
ans=0;
cin>>n>>m;
for (int i=1;i<=n;i++)
h[i]=0;
for (int j=1;j<=m;j++)
l[j]=0;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
{
scanf("%d",&x);
if (x==1)
{
h[i]=1;
l[j]=1;
}
}
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
if (!h[i] and !l[j])
{
h[i]=1;
l[j]=1;
ans++;
}
if (ans%2==0)
cout<<"Vivek"<<endl;
else
cout<<"Ashish"<<endl;
}
return 0;
}
从小到大排序过程中麻烦了一下,每个数字底下有一个它的类别(0或者1),不同类别的才能换,判断给定的数字可不可以成功按升序排好
构造算法,模拟
既然是判断YES或NO,就没有必要全部表示出来,只要有一个不一样的类型,就都可以通过它来完成所有的交换:
20 10 100 50
0 1 0 0
20 50 100 10
0 0 0 1
20 50 10 100
0 0 1 0
20 10 50 100
0 1 0 0
所以判断有没有不同类型,没有的话看原来是不是升序就好了
在插入排序、快速排序、冒泡排序里加上判断类型是否一样的判断条件,结果都破坏了原有的算法性质,和这些排序直接不一样
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n,t,a[1000],b[10],x;
cin>>t;
while (t--)
{
bool pd=false;
cin>>n;
b[0]=b[1]=0;
for (int i=1;i<=n;i++)
scanf("%d",&a[i]);
for (int i=1;i<=n;i++)
{
scanf("%d",&x);
b[x]++;
}
if (b[0]!=0 and b[1]!=0)
cout<<"Yes"<<endl;
else
{
for (int i=1;i<=n-1;i++)
if (a[i]>a[i+1])
{
pd=true;
cout<<"No"<<endl;
break;
}
if (pd==false)
cout<<"Yes"<<endl;
}
}
return 0;
}
输入一个打乱顺序(当然也可以不乱)的1-n的序列,计算不断把第一个数移到最后的过程中,与待匹配序列的最多的一对一相等元素的数量
构造算法,数据结构,贪心,模拟
统计每个数字的原始位置和靶的位置,减一下,统计移动次数相同的,移动步数相同的最多的即是答案。虽然C++跑不了那么大的数组(我也不知为什么),但是算算没超内存就行
想用DP,找每个位置的最多的从头到尾搞。。。其实用简单的算法就可以搞定
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n,a[200010],b[200010],num[200010],c[200010],x,maxx=0;
cin>>n;
for (int i=1;i<=n;i++)
{
scanf("%d",&x);
num[i]=0;
a[x]=i;
}
for (int i=1;i<=n;i++)
{
scanf("%d",&x);
b[x]=i;
}
for (int i=1;i<=n;i++)
{
c[i]=b[i]-a[i];
if (c[i]<0)
c[i]=n+c[i];
}
for (int i=1;i<=n;i++)
num[c[i]]++;
for (int i=0;i<=n;i++)
maxx=max(maxx,num[i]);
cout<<maxx;
return 0;
}
Codeforces Round #648 (Div. 2)
标签:判断 lock int else can 数据 不同类 破坏 构造
原文地址:https://www.cnblogs.com/IamIron-Man/p/13113430.html