Codeforces 931 概率DP
A
#include <bits/stdc++.h>
#define PI acos(-1.0)
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define pb push_back
#define inf 1e9
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que; get min
const double eps = 1.0e-10;
const double EPS = 1.0e-4;
typedef pair<int, int> pairint;
typedef long long ll;
typedef unsigned long long ull;
//const int maxn = 3e5 + 10;
const int maxm = ;
const int turn[][] = {{, }, { -, }, {, }, {, -}};
//priority_queue<int, vector<int>, less<int>> que;
//next_permutation
ll mod = 3e7;
const int maxn = ;
int main()
{
int n, m;
while (cin >> n >> m)
{
int mid = (n + m) / ;
//cout<<mid<<endl;
int x1 = abs(mid - n);
int x2 = abs(m - mid);
int ans = ( + x1) * x1 / + ( + x2) * x2 / ;
cout << ans << endl;
} }
B
#include <bits/stdc++.h>
#define PI acos(-1.0)
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define pb push_back
#define inf 1e9
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que; get min
const double eps = 1.0e-10;
const double EPS = 1.0e-4;
typedef pair<int, int> pairint;
typedef long long ll;
typedef unsigned long long ull;
//const int maxn = 3e5 + 10;
const int turn[][] = {{, }, { -, }, {, }, {, -}};
//priority_queue<int, vector<int>, less<int>> que;
//next_permutation
ll Mod = ;
int main()
{
int n;
cin >> n;
int a, b;
cin >> a >> b;
if (a > b)
{
swap(a, b);
}
if (a <= n / && b > n / )
{
cout << "Final!" << endl;
return ;
}
int anser = ;
while (true)
{
a = (a + (a % )) / ;
b = (b + (b % )) / ;
if (a == b)
{
cout << anser << endl;
return ;
}
anser++;
}
return ;
}
C
#include <bits/stdc++.h>
#define PI acos(-1.0)
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define pb push_back
#define inf 1e9
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que; get min
const double eps = 1.0e-10;
const double EPS = 1.0e-4;
typedef pair<int, int> pairint;
typedef long long ll;
typedef unsigned long long ull;
//const int maxn = 3e5 + 10;
const int maxm = ;
const int turn[][] = {{, }, { -, }, {, }, {, -}};
//priority_queue<int, vector<int>, less<int>> que;
//next_permutation
ll mod = 3e7;
const int maxn = ;
int num[];
int anser;
int main()
{
int mx=-;
int mn=;
int mxnum=;
int mnnum=;
int n;
cin >> n;
anser=n;
for(int i=; i<=n; i++)
{
scanf("%d",&num[i]);
mx=max(mx,num[i]);
mn=min(mn,num[i]);
}
if(mx-mn<=)
{
cout<<n<<endl;
for(int i=; i<=n; i++)
cout<<num[i]<<" ";
cout<<endl;
return ;
}
for(int i=; i<=n; i++)
{
if(num[i]==mx)
mxnum++;
else if(num[i]==mn)
mnnum++;
}
int midnum=n-mxnum-mnnum;
if(midnum/>=min(mxnum,mnnum))
{
int cur=midnum/;
int cur1=cur;
for(int i=; i<=n; i++)
{
if(num[i]==mn+&&cur)
{
anser--;
num[i]--;
cur--;
continue;
}
if(num[i]==mn+&&cur1)
{
anser--;
num[i]++;
cur1--;
continue;
}
}
}
else
{
int cur=min(mxnum,mnnum);
int cur1=cur;
for(int i=;i<=n;i++)
{
if(num[i]==mn&&cur)
{
num[i]++;
anser--;
cur--;
continue;
}
if(num[i]==mx&&cur1)
{
num[i]--;
anser--;
cur1--;
continue;
}
}
}
cout<<anser<<endl;
for(int i=;i<=n;i++)
cout<<num[i]<<" ";
cout<<endl; }
D
思维题 一层一层地消
#include <bits/stdc++.h>
#define PI acos(-1.0)
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define pb push_back
#define inf 1e9
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que; get min
const double eps = 1.0e-10;
const double EPS = 1.0e-4;
typedef pair<int, int> pairint;
typedef long long ll;
typedef unsigned long long ull;
//const int maxn = 3e5 + 10;
const int maxm = ;
const int turn[][] = {{, }, { -, }, {, }, {, -}};
//priority_queue<int, vector<int>, less<int>> que;
//next_permutation
ll mod = 3e7;
const int maxn = ;
int nextt[];
int num[];
int level[];
int dp[];
int anser = ;
int main()
{
int n;
cin >> n;
dp[] = level[] = dp[] = ;
for (int i = ; i <= n; i++)
{
scanf("%d", &nextt[i]);
dp[i] = dp[nextt[i]] + ;
level[dp[i]]++;
}
for(int i=;i<=;i++)
{
if(level[i]&)
anser++;
}
cout<<anser<<endl;
return ;
}
E
状压DP
dp[i][j][k]表示第一个字母是i第二个字母是j距离为k有多少个
因为第一个字母是由第一个玩家定的 所以无法选择 第二个字母可以选择但只能最优地选一次 所以ans+=now 取所有长度里面概率最高的
#include <bits/stdc++.h>
#define PI acos(-1.0)
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define pb push_back
#define inf 1e9
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que; get min
const double eps = 1.0e-10;
typedef pair<int, int> pairint;
typedef long long ll;
typedef unsigned long long ull;
//const int maxn = 3e5 + 10;
const int maxn = ;
const int turn[][] = {{, }, { -, }, {, }, {, -}};
const int turn2[][] = {{, }, { -, }, {, }, {, -}, {, -}, { -, -}, {, }, { -, }};
//priority_queue<int, vector<int>, less<int>> que;
//next_permutation
char a[];
int dp[][][];
int anser = ;
int main()
{
scanf("%s", a + );
int len = strlen(a + );
for (int i = ; i <= len; i++)
{
a[i + len] = a[i];
}
for (int i = ; i <= len; i++)
{
for (int j = i + ; j < i + len; j++)
{
dp[a[i] - 'a'][a[j] - 'a'][j - i + ]++;
}
}
int now = ;
int cur;
for (int i = ; i < ; i++)
{
now = ;
for (int j = ; j <= len; j++)
{
cur = ;
for (int k = ; k < ; k++)
{
if (dp[i][k][j] == )
{
cur++;
}
}
now = max(now, cur);
}
anser += now;
}
printf("%.10f", (double)anser / len);
return ;
}
F
待补
Codeforces 931 概率DP的更多相关文章
- Codeforces 28C [概率DP]
/* 大连热身D题 题意: 有n个人,m个浴室每个浴室有ai个喷头,每个人等概率得选择一个浴室. 每个浴室的人都在喷头前边排队,而且每个浴室内保证大家都尽可能均匀得在喷头后边排队. 求所有浴室中最长队 ...
- codeforces 148D 概率DP
题意: 原来袋子里有w仅仅白鼠和b仅仅黑鼠 龙和王妃轮流从袋子里抓老鼠. 谁先抓到白色老师谁就赢. 王妃每次抓一仅仅老鼠,龙每次抓完一仅仅老鼠之后会有一仅仅老鼠跑出来. 每次抓老鼠和跑出来的老鼠都是随 ...
- codeforces 540D 概率dp
传送门 大概可以这样理解, 一开始有r个石头, p个布, s个剪刀, 每一天有其中的两个相遇, 如果两个是相同的种类, 什么都不会发生, 否则的话有一个会挂掉, 问最后每一种生存的概率. dp[i][ ...
- CodeForces 398B 概率DP 记忆化搜索
题目:http://codeforces.com/contest/398/problem/B 有点似曾相识的感觉,记忆中上次那个跟这个相似的 我是用了 暴力搜索过掉的,今天这个肯定不行了,dp方程想了 ...
- Codeforces - 518D 概率DP初步
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #i ...
- Vasya and Magic Matrix CodeForces - 1042E (概率dp)
大意:给定n*m矩阵, 初始位置(r,c), 每一步随机移动到权值小于当前点的位置, 得分为移动距离的平方, 求得分期望. 直接暴力dp的话复杂度是O(n^4), 把距离平方拆开化简一下, 可以O(n ...
- Broken robot CodeForces - 24D (概率DP)
You received as a gift a very clever robot walking on a rectangular board. Unfortunately, you unders ...
- Codeforces #548 (Div2) - D.Steps to One(概率dp+数论)
Problem Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input Th ...
- Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题
除非特别忙,我接下来会尽可能翻译我做的每道CF题的题面! Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题 题面 胡小兔和司公子都认为对方是垃圾. 为了决出谁才是垃 ...
随机推荐
- @清晰掉 sprintf sscanf双胞胎
sprintf() 格式化输出函数(图形) 功能: 函数sprintf()用来作格式化的输出.用法: 此函数调用方式为int sprintf(char *string,char *format,arg ...
- a = a + b 与 a += b 的区别
1.对于同样类型的a,b来说 两个式子执行的结果确实没有什么区别.但是从编译的角度看吧(武让说的),a+=b;执行的时候效率高. 2.对于不同类型的a,b来说 2.1 不同类型的两个变量在进行运 ...
- 数据结构和算法(Java版)快速学习(栈与队列)
栈是仅允许在表尾进行插入和删除操作的线性表.我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom).栈是一种后进先出(Last In First Out)的线性表,简称(LIFO ...
- python - from … import …
from . import XXX 默认的就是在当前程序所在文件夹里__init__.py程序中导入XXX from .A import XXX 如果当前程序所在文件夹里没有 ...
- Html/CSS 初步介绍html和css部分重要标签
&初步介绍html和css部分重要标签& 注:开头书写:<!DOCTYPE html>表明对应标准html代码 先行总结重点 下方给出具体 CSS: 1. position ...
- freemarker程序开发
1.程序开发入门 1.1 创建配置实例 首先,你应该创建一个freemarker.template.Configuration的实例,然后调整它的设置.Configuration实例是存储FreeMa ...
- 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_6 Mybatis的CRUD-保存操作的细节-获取保存数据的id
保存后得到id 默认查询出来的是0,因为没有插入就要得到最后的id值. insert语句跟在前面就可以获取到id了 新插入的这条数据就是51 order=after表示在insert语句后再去获取id ...
- USB转换PS2接线原理
https://blog.csdn.net/dfyy88/article/details/4540170 USB转换PS2接线原理 2009年09月10日 18:36:00 阅读数:13285 USB ...
- C# 打印倒三角
void test6(int num) { try { #region 方法1 int maxstar = (num - 1) * 2 + 1; string line = ""; ...
- Android - Android 面试题集
1.Java部分 1.1 操作系统相关 1.什么是操作系统? 2.什么是线程,什么是进程? 1.2 JDK&JVM&JRE 1.JDK & JVM & JRE分别是什么 ...