Daliyアルゴリズム(数学、貪欲、思考)-日63

恐れることは何もない

あなたが早起きして一生懸命働くとき。夜更かしして一生懸命働くとき。仕事をしたくないとき-疲れすぎて、自分を押したくないとき-とにかくそれをします。それが実際の夢です。それが夢です。それは目的地ではなく、旅です。そして、あなたたちがそれを理解できるなら、あなたが見ることになるのは、あなたがあなたの夢を成し遂げないこと、あなたの夢が叶わないこと、より大きな何かが起こることです。マンバアウト


朝早くから夜遅くに出されるハードワークは、トレーニングをしたくありません。疲れすぎて歯を食いしなければならない場合、それは夢を追いかけているので、終わりを気にせず、旅を楽しんでください。あなたの夢を実現しますが、従うべきより大きなものがあるに違いありません。マンバアウト〜

2020.4.22


一定のパリンドローム合計

プロセスを構成するために明日占領

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <cassert>
#include <string>
#include <cmath>
#define SIS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define lowbit(x) (x & -x)
using namespace std;
typedef long long ll;
const int N = 200005;
const int MAX = 0x7ffffff;
int t;
void slove()
{
	int n , k;
	cin >> n >> k;
	vector<int> a(n+1);
	for(int i = 0;i < n ; ++i)cin >> a[i];


	// cnt 数组用于记录 a[i] + a[n-i+1] 出现了多少次
	vector<int> cnt(2 * k + 1);
	for(int i = 0;i < n / 2; ++i)
	{
		++ cnt[a[i] + a[n-i-1]];
	}
	
	// 得到假设替换这个数这个数可以得到替换得区间
	
	vector<int> pref(2 * k + 2);
	for(int i = 0;i < n / 2;i ++)
	{
		int l1 = 1 + a[i],r1 = k + a[i];
		int l2 = 1 + a[n-i-1],r2 = k + a[n-i-1];
		if(max(l1,l2) <= min(r1,r2))
		{
			++pref[min(l1, l2)];
			--pref[max(r1, r2) + 1];
		}else continue;
	}

	for(int i = 1;i <= 2 * k + 1; ++ i)
	{
		cout << pref[i] << " ";
		pref[i] += pref[i-1];
	}
	cout << endl;
	for(int i = 1;i <= 2 * k + 1; ++ i)
	{
		cout << pref[i] << " ";
	}
	cout << endl;
	int ans = 1e9;

	for(int sum = 2; sum <= 2 * k ; ++ sum)
	{
		ans = min(ans , (pref[sum] - cnt[sum]) + 
			(n / 2 - pref[sum]) * 2 );
	}
	cout << ans << endl;
}
int main()
{
	SIS;
	cin >> t;
	while(t--)
	{
		slove();
	}
}

かなとドラゴンクエストゲーム

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <cassert>
#include <string>
#include <cmath>
#define SIS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define lowbit(x) (x & -x)
using namespace std;
typedef long long ll;
const int MAX = 0x7ffffff;
int t;

void slove()
{
	int n , x , m;
	cin >> x >> n >> m;
	while(x > m * 10)
	{
		if(n == 0)
		{
			cout << "NO" << endl;
			return;
		}
		if(n != 0){
			x = x / 2 + 10;
			n--;
		}
	}
	cout << "YES" << endl;
	return ;
}
int main()
{
	SIS;
	cin >> t;
	while(t--)
	{
		slove();
	}
}

一姫とトライアングル

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <cassert>
#include <string>
#include <cmath>
#define SIS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define lowbit(x) (x & -x)
using namespace std;
typedef long long ll;
const int MAX = 0x7ffffff;
int t;

void slove()
{
	int a, b , c  ,d;
	cin >> a >> b >> c >> d;
	cout << b << " " << c << " " << c << endl;
}
int main()
{
	SIS;
	cin >> t;
	while(t--)
	{
		slove();
	}
}

おすすめ

転載: www.cnblogs.com/wlw-x/p/12757948.html