QBXT-FOUR
2023.11.8 场四
T1#
写了个
设
然后三层循环,枚举
那么转移方程就是:
对于一些边界情况,例如之前没选的之类的,要先预处理一下:
/*
* @Author: Aisaka_Taiga
* @Date: 2023-11-08 08:20:03
* @LastEditTime: 2023-11-08 11:40:06
* @LastEditors: Aisaka_Taiga
* @FilePath: \Desktop\T1.cpp
* The heart is higher than the sky, and life is thinner than paper.
*/
#include <bits/stdc++.h>
#define int long long
#define N 3100
using namespace std;
inline int read()
{
int x = 0, f = 1;
char c = getchar();
while(c < '0' || c > '9'){if(c == '-') f = -1; c = getchar();}
while(c <= '9' && c >= '0') x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
return x * f;
}
int n, k, ans, f[N][N];
inline void dfs(int x, int sum)
{
if(x <= 0) return ans = max(sum, ans), void();
for(int i = x; i >= 1; i --)
dfs(i - k - 1, sum + i * (x - i + 1));
return ;
}
signed main()
{
// freopen("55.txt", "r", stdin);
n = read(), k = read();
if(k == n)
{
ans = (n / 2 + 1) * (n - (n / 2 + 1) + 1);
cout << ans << endl;
return 0;
}
if(n <= 8)
{
dfs(n, 0);
cout << ans << endl;
return 0;
}
for(int i = n; i >= 1; i --)
{
for(int j = n; j >= i; j --)
{
f[i][j] = max(f[i][j], j * (n - j + 1));
for(int o = j + k; o <= n; o ++)
f[i][j] = max(f[i][j], f[i + 1][o] + (o - k - j) * j);
}
}
for(int i = 1; i <= n; i ++) ans = max(ans, f[1][i]);
cout << ans << endl;
return 0;
}
/*
20 3
*/
T2#
发现如果随机赋的话,相同的概率很小。
所以直接输出随机数,check 只会
/*
* @Author: Aisaka_Taiga
* @Date: 2023-11-08 10:24:52
* @LastEditTime: 2023-11-08 13:56:53
* @LastEditors: Aisaka_Taiga
* @FilePath: \Desktop\T2.cpp
* The heart is higher than the sky, and life is thinner than paper.
*/
#include <bits/stdc++.h>
#define int long long
#define N 1000100
using namespace std;
inline int read()
{
int x = 0, f = 1;
char c = getchar();
while(c < '0' || c > '9'){if(c == '-') f = -1; c = getchar();}
while(c <= '9' && c >= '0') x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
return x * f;
}
const int nn = 3e7;
int n, m, a[N], siz[N], ff;
map<int, int> mp;
vector<int> g[N];
signed main()
{
srand(1919810);
n = read(), m = read();
for(int i = 1; i <= n - 1; i ++)
{
int u = read(), v = read();
g[u].push_back(v);
g[v].push_back(u);
}
if(n < 63 && m >= pow(2, n - 1))
{
for(int i = 0; i < n; i ++)
cout << pow(2, i) << " ";
return 0;
}
int xx = nn / n;
for(int i = 1; i <= n; i ++)
a[i] = rand() % m;
for(int i = 1; i <= n; i ++)
cout << a[i] << " ";
return 0;
}
T3#
看到题目里里面有个
/*
* @Author: Aisaka_Taiga
* @Date: 2023-11-08 10:51:04
* @LastEditTime: 2023-11-08 10:58:58
* @LastEditors: Aisaka_Taiga
* @FilePath: \Desktop\T3.cpp
* The heart is higher than the sky, and life is thinner than paper.
*/
#include <bits/stdc++.h>
#define pii pair<int, int>
#define int long long
#define N 100
using namespace std;
inline int read()
{
int x = 0, f = 1;
char c = getchar();
while(c < '0' || c > '9'){if(c == '-') f = -1; c = getchar();}
while(c <= '9' && c >= '0') x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
return x * f;
}
int n, k, ans, mp[N][N], dis[N], d[N], vis[N], p[N];
priority_queue<pii> q;
inline void check()
{
memset(d, 0x3f, sizeof d);
d[1] = 0;
for(int i = 1; i <= n; i ++)
{
int nw = p[i];
for(int v = 1; v <= n; v ++)
if(d[v] > d[nw] + mp[nw][v])
d[v] = d[nw] + mp[nw][v];
}
for(int i = 1; i <= n; i ++)
if(d[i] != dis[i]) return ;
ans ++;
return ;
}
inline void Dij()
{
q.push({0, 1});
memset(dis, 0x3f, sizeof dis);
dis[1] = 0;
while(!q.empty())
{
int u = q.top().second;
q.pop();
if(vis[u]) continue;
vis[u] = 1;
for(int i = 2; i <= n; i ++)
{
if(dis[i] > dis[u] + mp[u][i])
dis[i] = dis[u] + mp[u][i];
}
}
return ;
}
signed main()
{
n = read();
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= n; j ++)
mp[i][j] = read();
Dij();
int xx = 1;
for(int i = 1; i <= n; i ++) xx *= i, p[i] = i;
// for(int i = 1; i <= n; i ++)
// cout << dis[i] << " ";
// cout << endl;
for(int i = 1; i <= xx; i ++)
{
next_permutation(p + 1, p + n + 1);
check();
}
cout << ans << endl;
return 0;
}
/*
20 3
*/
作者: 北烛青澜
出处:https://www.cnblogs.com/Multitree/articles/17818794.html
本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话