【过题记录】 8.2 hddx

news/2024/9/23 11:20:39/

飞行棋

在这里插入图片描述
关于这一题
我在考场上手莫了n=2和n=3的情况
发现一点规律,大力猜想蒙了一个结论
结果蒙对了…

关于正确做法,发现零号点和其他几个点是不一样的。
因为对于0而言,他没有赠送的情况(只要摇到n就直接胜利)
因此0和其他点要分开讨论
对于1到n-1号点
他们花费1代价走到n的期望是 1 / ( n − 1 ) 1/(n-1) 1/(n1)
因此总的期望代价就是 n − 1 n-1 n1
不难得出 f 0 = 1 / n ∗ ∑ ( f i ) + 1 f_0=1/n*\sum(fi)+1 f0=1/n(fi)+1
结合上面,得出最终 f 0 = ( n − 1 ) ∗ ( n − 1 ) / n + 1 f_0=(n-1)*(n-1)/n+1 f0=(n1)(n1)/n+1


#include<bits/stdc++.h>
using namespace std;#define int long longconst int P = 1e9+7;int Power(int x,int y){int s = 1;while (y){if (y&1) s = s*x%P;x = x*x%P;y>>=1;}return s;
}signed main(){int t; cin>>t;while (t--){int n; cin>>n;int ans = (n-1)*(n-1)%P;ans = (ans+n)%P;ans = ans*Power(n,P-2)%P;cout<<ans<<endl;}return 0;
} 

开关灯

在这里插入图片描述

关于这一题
老老实实推了20分钟发现推不出来
“要不打表吧”
秒了…
如果 n % 3 = = 0 n\%3==0 n%3==0,答案就是 2 n 2^n 2n
否则就是 2 n / 3 ∗ 3 + 1 2^{n/3*3+1} 2n/33+1


#include<bits/stdc++.h>
using namespace std;#define int long long
const int P = 998244353;int Power(int x,int y){int s = 1;while (y){if (y&1) s = s*x%P;x = x*x%P;y>>=1;}return s;
}signed main(){int t; cin>>t;while (t--){int x; cin>>x;int a = 0;if (x%3 == 0)a = x;else a = (x/3*3)+1;cout<<Power(2,a)<<endl;}return 0;
}

猫罐头游戏

在这里插入图片描述
打表 打表 打表找了一下规律
发现奇奇奇必败
有一奇一偶必胜态
唯一要讨论的就是三个偶数的情况
仔细观察打表数据 仔细观察打表数据 仔细观察打表数据
发现对于三个偶数 a , b , c a,b,c a,b,c
将他们一直/2,直到有一个数为奇数
然后再按上面的奇偶性讨论即可。


#include<bits/stdc++.h>
using namespace std;
int T,a,b,c,jsq; 
int main(){scanf("%d",&T);while (T--){scanf("%d%d%d",&a,&b,&c);if (a==b&&b==c){printf("NO\n");continue; }jsq=(a%2)+(b%2)+(c%2);if (jsq==3){printf("NO\n");continue;}if (jsq==1||jsq==2){printf("YES\n");continue;}while (a%2==0&&b%2==0&&c%2==0){a/=2;b/=2;c/=2;}	jsq=(a%2)+(b%2)+(c%2);if (jsq==3){printf("NO\n");continue;}if (jsq==1||jsq==2){printf("YES\n");continue;}printf("YES\n");}return 0;
}

Array-Gift

在这里插入图片描述
不难得出
答案就只有三种情况
n − 1 n-1 n1, n n n, n + 1 n+1 n+1
而且我们发现,想要变0,只有操作1能让数变0
所以 n − 1 n-1 n1的情况是:有一个数为其他所有数的公因数
且只有这么一种情况。

n n n的情况比较多:
1、能找出一个 x = a i % a j x=a_i\%a_j x=ai%aj,使x为其他所有数的因数
2、能找出一个数x,使得 a i + x a_i+x ai+x为其他所有书的公因数
3、将所有数先按照操作1能变0的变成0,再按照1,2操作讨论

否则就是n+1


#include <bits/stdc++.h>using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
const int INF = 0x3f3f3f3f;
const double eps = 1e-8, pi = acos(-1.0);
int t, a[110];
bool vis[110];
int b[110],m;
int gcd(int a, int b)
{return !b ? a : gcd(b, a % b);
}
int array_gcd(int l, int r, int x)
{int res;if(l==x)res = a[l + 1];elseres = a[l];for (int i = l; i <= r; i++){if (i == x)continue;res = gcd(res, a[i]);}return res;
}
void solve()
{int n, res; m = 0;cin >> n;for (int i = 1; i <= n; i++)cin >> a[i];if(n==1){cout << 0 << endl;return;}sort(a + 1, a + n + 1);int jsq = 0;for (int i = 1; i <= n; i++) vis[i] = 0;for (int i = 1; i <= n; i++) if(!vis[i])for (int j = 1; j <= n; j++){if (i == j) continue;if (a[i]%a[j] == 0 && vis[j] == 0){vis[i] = 1;  jsq++; break;}}for (int i = 1; i <= n; i++) if (!vis[i]) b[++m] = a[i];for (int i = 1; i <= m; i++) a[i] = b[i]; n = m;if (n == 1){cout<<jsq<<endl;return;}// 第一种情况int cnt = 0;for (int i = 2; i <= n; i++)if (a[i] % a[1] == 0)cnt++;
//    cout<<"cnt = "<<cnt<<endl;if (cnt == n - 1){cout << jsq+n - 1 << endl;return;}// 第二种情况// a[i]%a[j]==1for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){if (i == j)continue;if (a[i] % a[j] == 1){cout << jsq+n << endl;return;}}}// a[1]+x==array_gcd(2,n,0);res = array_gcd(2, n, 0);if (res > a[1] && res != 1){cout << jsq+n << endl;return;}// a[i]%a[j]==array_gcd(1,n,i)for (int i = 1; i <= n; i++){res = array_gcd(1, n, i);for (int j = 1; j <= n; j++){if (a[i] % a[j] == res){cout << jsq+n << endl;return;}}}// 第三种情况cout << jsq+n + 1 << endl;
}
signed main()
{// #ifndef ONLINE_JUDGE//     freopen("D:/in.txt","r",stdin);//     freopen("D:/out.txt", "w", stdout);// #endifios::sync_with_stdio(false);cin >> t;while (t--)solve();return 0;
}
/*
100
5
4 11 17 18 16
*/

http://www.ppmy.cn/news/1504129.html

相关文章

图像处理案例03

HOGSVM数字识别 1 . 步骤2 . 代码 1 . 步骤 读入数据&#xff0c;把数据划分为训练集和测试集用hog提取特征用SVM训练数据测试、评价模型保存模型加载模型&#xff0c;应用模型 2 . 代码 import os import cv2 import sklearn import numpy as np from skimage.feature impo…

【数据结构】——链式二叉树

目录 一、链式二叉树的定义结构 二、链式二叉树的遍历 2.1前序遍历 2.2中序遍历 2.3后序遍历 2.4层序遍历 三、链式二叉树的基本功能函数 3.1结点个数 3.2叶子结点个数 3.3二叉树第k层结点个数 3.4查找值为x的结点 3.5二叉树的销毁 四、基础OJ 4.1二叉树遍历 4.2…

常用游戏开发软件横向对比

最近想试试开发游戏&#xff0c;简单查了一下&#xff0c;Mark吧。 排名不分先后&#xff1a; 1. Unity 特点&#xff1a; 跨平台支持&#xff1a;Unity支持超过25个平台&#xff0c;包括iOS、Android、Windows、macOS、Linux、WebGL、PlayStation、Xbox、Switch等。强大的…

VS Code C/C++ MSVC编译器

官方教程 通过快捷方式打开VS Code是编译不了的,需要对tasks.json修改(Tasks: Configure default build task) 先创建tasks.json 复制这段配置到tasks.json,记得修改VsDevCmd.bat的路径 {"version": "2.0.0","windows": {"options"…

Linux:守护进程(进程组、会话和守护进程)

守护进程 (1)What&#xff08;什么是守护进程&#xff09; 在了解守护进程的同时&#xff0c;我们有必要介绍一下进程组和会话的概念&#xff0c;因为进程组和会话在创建守护进程的过程中不可或缺 守护进程&#xff1a; 本质就是一个后台进程&#xff0c;不依赖于具体终端、…

Linux软件编程

8月1日学习了最后的标准IO&#xff0c;流的偏移。然后进入了文件IO的学习&#xff0c;包括文件的打开、读写、关闭以及偏移。之后又学习了剩余的一些函数接口&#xff0c;可以对文件进行一些其余操作。 8月2日学习了目录文件和链接文件的操作。目录文件的操作包括目录的创建、…

生信分析的过去(R语言)、现在(Python)和未来(云平台)

在组学数据分析中&#xff0c;R 语言和 Python 哪个更好&#xff1f;此外&#xff0c;越来越多的生信云平台又为我们的研究提供了哪些新的可能&#xff1f; 我的回答是&#xff1a; R 语言代表过去&#xff0c;Python 是新兴力量&#xff0c;而云平台是未来。 今天&#xff0c;…

详解HTTP协议版本(HTTP/1.0、1.1、2.0、3.0区别)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…