CF105
吐槽:好长的题目啊啊啊啊啊
我这套题选的不够好,基本上就把时间浪费在理解题意上了。
A.Transmigration
题目大意:
给定n个能力的名称与能力值,在下一轮这些能力值会乘一个系数
解题思路:
map直接搞定。但在浮点数转整数的时候要注意精度问题(
代码
#incIude <bits/stdc++.h>
#define int long long
using namespace std;
const int N=25;
double n,m;
double k;
map <string,float> mp;
int cnt;
signed main()
{
cin>>n>>m>>k;
for (int i=1;i<=n;i++)
{
string str;
int x;
cin>>str>>x;
mp[str]=x*k;
if (mp[str]<100) {mp[str]=-1;cnt--;}
cnt++;
}
for (int i=1;i<=m;i++)
{
string str;
cin>>str;
if (mp[str]>0) continue;
mp[str]=0;
cnt++;
}
cout<<cnt<<endl;
map <string,float> ::iterator it=mp.begin();
for (;it!=mp.end();it++)
{
if ((int)(it->second)==-1) continue;
else cout<<it->first<<" "<<(int)(it->second)<<endl;
}
return 0;
}
B.Dark Assembly
题目大意:
共有n个人,每个人分别有两个属性:
共有
求在
解题思路:
第一眼:好难好难
第二眼:这个数据范围?搜索启动!
因为
代码
#incIude <bits/stdc++.h>
#define int long long
using namespace std;
const int N=10;
int n,k;
long double A;
int b[N],l[N];
long double ans,anss;
void calc(int cnt1,int cnt2,long double dt,long double B)
{
if (cnt1>n)//个数
{
if (cnt2>n/2) ans+=1.0*dt;//投票成功
else ans+=1.0*dt*(A/(A+B));//投票失败
return ;
}
calc(cnt1+1,cnt2+1,1.0*dt*l[cnt1]/10,B);//该次投赞成票
calc(cnt1+1,cnt2,1.0*dt*(100-l[cnt1])/10,B+b[cnt1]);//该次不投赞成票
}
void dfs(int m,int cnt)
{
if (m>k)//k次机会已用完
{
ans=0;
calc(1,0,1,0);
anss=max(anss,ans/pow(10,n));
return ;
}
for (int i=cnt;i<=n;i++)
{
if (l[i]==100) continue;
l[i]+=10;
dfs(m+1,i);
l[i]-=10;
}
}
signed main()
{
cin>>n>>k>>A;
for (int i=1;i<=n;i++) cin>>b[i]>>l[i];
dfs(1,0);
cout<<fixed<<setprecision(10)<<anss;
return 0;
}
C.Item World
题目大意:
难以翻译。
题目给出
要求给出一种方案,使得移动强化装备后,有最高攻击力的攻击武器;若攻击力相同,要求有最高防御力的防御武器;若防御武器相同,要求有最高法力值的法器。输出该方案三种武器的名称、强化装备数量与强化装备名称。
解题思路:
贪心模拟,直接做做完了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效