1234567890
一排或者两摞
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int main()
{
freopen("alex.in", "r", stdin);
freopen("alex.out", "w", stdout);
double n,m;
cin>>n>>m;
if(n<m)
swap(n,m);
if(n/m>=3)
printf("%.3lf\n",m);
else
printf("%.3lf\n",max(n/3,m/2));
return 0;
}
四连通,脑子随便扯个图,相等就一排一排输出就行,然后多的包着少的
#include <bits/stdc++.h>
#include <iostream>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;
//
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
//#define INF 0x3f3f3f
#define ll long long
#define INF 0x3f3f3f3f
#define mem(a,b) memset(a,b,sizeof(a))
#define unmap(a,b) unordered_map<a,b>
#define unset(a) unordered_set<a>
#define F first
#define S second
#define pb push_back
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define _rep(i, a, b) for (int i = (a); i >= (b); --i)
#define mode 1e4+7
#define pi acos(-1)
#define U_queue priority_queue<PII,vector<PII>,greater<PII> >
typedef double db;
typedef pair<int,int> PII;
typedef pair<ll,ll> PLL;
typedef vector<int> vi;
const int N = 110;
signed main(){
freopen("black.in", "r", stdin);
freopen("black.out", "w", stdout);
int n,m;
cin>>n>>m;
char black='@',white='.';
if(n>m){
swap(m,n);
swap(black,white);
}
cout<<2*m<<' '<<3<<endl;
for(int i=0;i<(m-n);i++){
cout<<black<<black<<black<<endl<<black<<white<<black<<endl;
}
for(int i=0;i<n;i++){
cout<<black<<black<<black<<endl<<white<<white<<white<<endl;
}
}
//made by happywhale 20220728000
思维,一开始还以为写什么kmp,想多了,取前缀猴后缀组成一个单词,那么重复的字母是一一对应的,所以直接计算在一串里出现二串中字母的个数并且在字符串长度乘积的基础上减掉就行了
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
freopen("concatenation.in", "r", stdin);
freopen("concatenation.out", "w", stdout);
string n,m;
cin>>n>>m;
map<char,ll> num;
ll a=n.size();
ll b=m.size();
//memset(num,0,sizeof num);
ll res=a*b;
for(ll i=1;i<a;i++) num[n[i]]++;
for(ll i=0;i<b-1;i++){
res-=num[m[i]];
}
cout<<res<<endl;
return 0;
}//al;skgn
模拟,不过没考虑好就写了,拖了很久,遇到-就添加好就行了,注意出现0的时候的处理
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int main()
{
freopen("easy.in", "r", stdin);
freopen("easy.out", "w", stdout);
string a;
cin >> a;
for (int i = 0; i < a.size(); i++)
{
if (a[i] == '-')
{
cout << "-" << a[++i];
i++;
if (a[i] == '-' || a[i] == '+')
{
i--;
continue;
}
if (i == a.size())
break;
int flag = i;
while (i < a.size() && a[i] == '0')
{
i++;
}
for (int j = flag; j < i; j++)
cout << "+"
<< "0";
if (i == a.size())
break;
if (a[i] == '-' || a[i] == '+')
i--;
else
cout << "+" << a[i];
}
else
cout << a[i];
}
return 0;
}
队友写的 转化为31进制啥的 不是很懂 我自己的想法还没出代码,
后面补上
#include <bits/stdc++.h>
using namespace std;
const int N=1e3+10;
char str[N];
int main()
{
freopen("hash.in", "r", stdin);
freopen("hash.out", "w", stdout);
int k;
cin>>k;
for(int i=0;i<1000;i++) str[i]='S';
cout<<str<<endl;
for(int i=0;i<k-1;i++)
{
str[i]-=1;str[i+1]+=31;
cout<<str<<endl;
str[i]+=1,str[i+1]-=31;
}
return 0;
}
简单模拟,
#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int n,m;
int a[N][N];
int bei(int x,int y)
{
int flag=0;
for(int i=1;i<x;i++)
{
if(a[i][y]>=a[x][y])
{
flag=1;
break;
}
}
if(flag==0) return 1;
return 0;
}
int nan(int x,int y)
{
int flag=0;
for(int i=x+1;i<=n;i++)
{
if(a[i][y]>=a[x][y])
{
flag=1;
break;
}
}
if(flag==0) return 1;
return 0;
}
int dong(int x,int y)
{
int flag=0;
for(int j=y+1;j<=m;j++)
{
if(a[x][j]>=a[x][y])
{
flag=1;
break;
}
}
if(flag==0) return 1;
return 0;
}
int xi(int x,int y)
{
int flag=0;
for(int j=1;j<y;j++)
{
if(a[x][j]>=a[x][y])
{
flag=1;
break;
}
}
if(flag==0) return 1;
return 0;
}
int main()
{
freopen("lucky.in", "r", stdin);
freopen("lucky.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
int res=0;
res=(m+n)*2;
//cout<<res<<endl;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(i!=1)
{
res+=bei(i,j);
}
if(i!=n)
{
res+=nan(i,j);
}
if(j!=1)
{
res+=xi(i,j);
}
if(j!=m)
{
res+=dong(i,j);
}
}
}
cout<<res<<endl;
return 0;
}//