打表+dp思维+博弈
E. Sending a Sequence Over the Network
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define For(i,a,b) for(i=(a);i<=(b);++i)
#define ios (ios::sync_with_stdio(false),cin.tie(0),cout.tie(0))
using namespace std;
const int N=2e5+5;
const int inf=1e18;
const int mod=998244353;
int n,a[N],f[N];void solve()
{cin >> n;for(int i=1;i<=n;i++) cin>>a[i],f[i]=0;f[0]=1;for(int i=0;i<=n;i++){if(i-a[i]-1>=0&&f[i-a[i]-1]) f[i]=1;if(!f[i]) continue;if(i+a[i+1]+1<=n&&f[i]) f[i+a[i+1]+1]=1;}if(f[n]) cout<<"YES"<<endl;elsecout<<"NO"<<endl;
}
signed main()
{//ios;int T;cin>>T;while(T--)solve();return 0;
}
C. Chef Monocarp
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define For(i,a,b) for(i=(a);i<=(b);++i)
#define ios (ios::sync_with_stdio(false),cin.tie(0),cout.tie(0))
using namespace std;
const int N=405;
const int inf=1e18;
const int mod=998244353;
int n,a[N];
int w[N][N],lx[N],ly[N];
bool visx[N],visy[N];
int match[N],delta,c[N],p[N];
int A[N],P[N],B[N],C[N];
void bfs(int x) // O(n^3)的KM板子
{int a,y=0,y1=0;for(int i=1;i<=n;i++) p[i]=0,c[i]=inf;match[y]=x;do{a=match[y],delta=inf,visy[y]=1;for(int b=1;b<=n;b++){if(!visy[b]){if(c[b]>lx[a]+ly[b]-w[a][b])c[b]=lx[a]+ly[b]-w[a][b],p[b]=y;if(c[b]<delta) delta=c[b],y1=b;}}for(int b=0;b<=n;b++)if(visy[b]) lx[match[b]]-=delta,ly[b]+=delta;else c[b]-=delta;y=y1;}while(match[y]);while(y)match[y]=match[p[y]],y=p[y];
}
int KM()
{for(int i=1;i<=n;i++) match[i]=lx[i]=ly[i]=0;for(int i=1;i<=n;i++){for(int i=0;i<=n;i++) visy[i]=0;bfs(i);}int res=0;for(int i=1;i<=n;i++) res+=w[match[i]][i];return res;
}void solve()
{cin>>n;for(int i=1;i<=2*n;i++) a[i]=0;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=2*n;i++)for(int j=1;j<=2*n;j++) w[i][j]=-inf;for(int i=1;i<=n*2;i++){for(int j=1;j<=n*2;j++){if(i<=n)w[i][j]=(-1)*abs(a[i]-j);else w[i][j]=0;}}n*=2;cout<<-KM()<<endl;
}
signed main()
{ios;int T;cin>>T;while(T--)solve();return 0;
}
dp算法:
dp[i][j]
表示第i道菜在第j分钟被拿出所需要的最小花费。
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define For(i,a,b) for(i=(a);i<=(b);++i)
#define ios (ios::sync_with_stdio(false),cin.tie(0),cout.tie(0))
using namespace std;
const int N=405;
const int inf=1e18;
const int mod=998244353;
int n,a[N],dp[N][N];void solve()
{cin>>n;for(int i=1;i<=n;i++) cin>>a[i];sort(a+1,a+n+1);for(int i=1;i<=n;i++) for(int j=0;j<=n*2;j++) dp[i][j]=inf;for(int i=1;i<=n;i++)for(int j=1;j<=n*2;j++){dp[i][j]=min(dp[i][j-1],dp[i-1][j-1]+abs(j-a[i]));//cout<<dp[i][j]<<endl;}int ans=inf;for(int i=1;i<=2*n;i++) ans=min(dp[n][i],ans);cout<<ans<<endl;
}
signed main()
{//ios;int T;cin>>T;while(T--)solve();return 0;
}
C. Even Number Addicts
思路:分清必胜态、必败态、先后手影响、各自的最优策略。
1.A想让自己的总和为偶数,偶数不会影响奇偶性,但奇数可以。
2.讨论奇数的数目,及相应偶数数量可能会产生的影响。
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define For(i,a,b) for(i=(a);i<=(b);++i)
#define ios (ios::sync_with_stdio(false),cin.tie(0),cout.tie(0))
using namespace std;
const int N=405;
const int inf=1e18;
const int mod=998244353;
int n,odd,even;void solve()
{odd=even=0;cin>>n;for(int i=1;i<=n;i++){int x;cin>>x;if(x%2) odd++;else even++;}if(odd%4==0) cout<<"Alice"<<endl;else if(odd%4==1){if(even%2) cout<<"Alice"<<endl;else cout<<"Bob"<<endl;}else if(odd%4==2) cout<<"Bob"<<endl;else if(odd%4==3){cout<<"Alice"<<endl;}}
signed main()
{//ios;int T;cin>>T;while(T--)solve();return 0;
}
I. Invoker
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define For(i,a,b) for(i=(a);i<=(b);++i)
#define ios (ios::sync_with_stdio(false),cin.tie(0),cout.tie(0))
using namespace std;
const int N=405;
const int inf=1e18;
const int mod=998244353;
int n,dp[100005][6]; //第i个字母对应第j种排序方式的最小字符数
string s;
string mp[10][6]={{"QQQ","QQQ","QQQ","QQQ","QQQ","QQQ"},{"QQW","QWQ","QQW","QWQ","WQQ","WQQ"},{"QQE","QEQ","QQE","QEQ","EQQ","EQQ"},{"WWW","WWW","WWW","WWW","WWW","WWW"},{"QWW","QWW","WQW","WWQ","WQW","WWQ"},{"WWE","WEW","WWE","WEW","EWW","EWW"},{"EEE","EEE","EEE","EEE","EEE","EEE"},{"QEE","QEE","EQE","EEQ","EQE","EEQ"},{"WEE","WEE","EWE","EEW","EWE","EEW"},{"QWE","QEW","WQE","WEQ","EQW","EWQ"}};
map<char,int>a;
int dis(string s1,string s2)
{if(s1==s2) return 0;if(s1[1]==s2[0]&&s1[2]==s2[1]) return 1;else if(s1[2]==s2[0]) return 2;else return 3;
}
void solve()
{a['Y']=0,a['V']=1,a['G']=2,a['C']=3,a['X']=4;a['Z']=5,a['T']=6,a['F']=7,a['D']=8,a['B']=9;cin>>s;n=s.length();s=" "+s;for(int i=0;i<=n;i++) for(int j=0;j<6;j++) dp[i][j]=inf;for(int i=0;i<6;i++) dp[1][i]=3;for(int i=2;i<=n;i++){for(int j=0;j<6;j++){for(int g=0;g<6;g++){dp[i][j]=min(dp[i][j],dp[i-1][g]+dis(mp[a[s[i-1]]][g],mp[a[s[i]]][j]));}}}int ans=inf;for(int i=0;i<6;i++) ans=min(ans,dp[n][i]);cout<<ans+n<<endl;
}
signed main()
{//ios;//int T;cin>>T;//while(T--)solve();return 0;
}
打表+dp思维+博弈相关推荐
- CSP-S 2019————Emiya 家今天的饭————DP+思维
题解:本题主要考查DP+思维. 简要题意:一个矩阵,要求每行只选一个节点,每列选的节点不能超过所有选的节点的一半,不能不选,给出每个节点的选择方案数,求总方案数. 1.DP+思维: (1).维护每列已 ...
- Ivan the Fool and the Probability Theory-Codeforces Round #594 (Div. 2)-C题(dp+思维)
Ivan the Fool and the Probability Theory-Codeforces Round #594 (Div. 2)-C题(dp+思维) time limit per tes ...
- 创业与投资的思维博弈均衡,是创投长期成功之道
2015年被普遍视为中国企业服务创业元年,自2015年至今三年来出现了不少优秀的企业服务创业案例.在2018年初的时候,专注于中国企业服务创投服务的咨询机构.定位于中国TMT产业升级与融合加速器钛资本 ...
- CodeForces - 594A Warrior and Archer(思维+博弈)
题目链接:点击查看 题目大意:给出n个坐标轴上的点,两个人轮流操作,每次取走其中的一个点,直到最后剩余两个点为止,Vova先手,Vova希望两个点的距离尽可能小,Lesha希望两个点的距离尽可能大,问 ...
- Chess DP 思维题
車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子.一天,小度在棋盘上摆起了许多車--他想知道,在一共N×M个点的矩形棋盘中摆最多个数的車使其互不攻击的方案数.他经过思考,得出了 ...
- HDU 4489 找出n!个全排列数中的“波浪数” dp 思维,全排列
这题关键还是在于找出dp的转移方程,这题是从第n个数在前n-1个数的位置中入手,然后把"波浪数"分成两派.理解起来不困难,但是要自己想到的话,其中的思维一片也不能断掉,尤其是要找到 ...
- 数据结构——线性表知识思维导图
此博客主要是线性表部分的知识思维导图 便于对线性表这一章节的知识在脑中形成一个知识体系 具体重要代码实现可以点击
- HDU多校10 - 6880 Permutation Counting(dp+思维)
题目链接:点击查看 题目大意:给出一个长度为 n - 1 的 01 序列 b 用来表示排列 a 的相对大小关系,b[ i ] = 0 说明 a[ i ] < a[ i + 1 ] ,b[ i ] ...
- Lighting System Design UVA 11400 (dp+思维)
题目大意:有一个照明系统需要用到n种灯,每种灯的电压为V,电源费用K,每个灯泡费用为C,需要该灯的数量为L.注意到,电压相同的灯泡只需要共享一个对应的电源即可,还有电压低的灯泡可以被电压高的灯泡替代. ...
最新文章
- C++中指向类的指针
- Python 性能剖分工具
- Leetcode 120. 三角形最小路径和 (每日一题 20210927)
- python累积和_python – 如何维持累积总和?
- Java | Python 流程控制对比
- 面向对象分析方法(Object-Oriented Analysis,OOA)
- VMware下虚拟系统上网与互ping
- c++ opengl 绘制地面_铝合金门窗设计之绘制节点图
- 2022年C语言教程入门和最新C语言自学教程C语言进阶教程大全
- fabric.js自定义字体的引入
- 洛谷入门题 深基2 例5~例8
- 中兴手机怎么与计算机连接网络连接不上,ZTE中兴为什么wifi连接上却不能上网...
- 数字集成电路物理设计_数字世界的物理词汇
- 跟零计算机基础的房东女儿讲了一下午的中间人劫持京东事件后,她感激涕零,决定给我免除房租......
- 定位漏水_即使在移动中也要防止销售漏水
- Java程序性能优化——设计优化
- 全触屏智能之战 三星i908E对比iPhone 3G
- 品Spring:bean定义上梁山
- jQuery Danmmu Player 弹幕视频
- 两个圆柱相交的体积 UVALive 5096 Volume
热门文章
- java 卷轴式_天堂1 java 编写活动卷轴方法
- Creator3D:shader13_水面涟漪
- Apk脱壳圣战之---如何脱掉 梆梆加固 的保护壳
- error C2338: /RTCc rejects conformant code错误解决
- mac下/usr/local/bin No such file or directory问题解决
- (二)巴菲特与索罗斯的投资习惯:七种致命的投资信念
- vue移动端使用手势库---alloytinger
- c++游戏服务器框架
- CSS实现按钮点击后根据背景色加深效果
- 《满城黄金甲》另类观后感