8.9 河南萌新联赛

A买爱心气球
B亚托莉 -我挚爱的时光-
D01分数规划
GKruskal
I双指针
J树上DP
A爱心买气球
博弈论   
枚举最简单的情况0 1|1 1|1 2进行判断! 加加减减找到一般规律了立即猜一下结论去证明
不要在非一般性数据|结论里面找规律 特别是不要枚举大数据找规律! 大道至简
B 亚托利-我挚爱的时光
1.读取带有空格的字符串:
cin.ignore();👍
getline(cin,x);//连读则while(n--)
2.存末尾的字符串:逆读
string p=x;
reverse(p.begin(),p.end());👍
int t=0;
string ss;
while(p[t]!=' ') {
    ss+=p[t];
    t++;   //这个一定不能忘!👍
}
3.map
map<string,int>  可以存对于许多字符串而言,每个字符串当前状态是什么!
//记住写代码要往尽量简洁写!
D01分数规划
全部是相连的  即全部将?化为0  或者全部化为1  直接判断输出即可!
GKruskal
最小生成树:包含n个点和n-1条权值最小的边的图!不是一个点和很多个点相连的树,随便哪条边,只要将n个点串起来即可
对于本题,总是可以找到一个点和此点相与为0,除了本点的值为全1时不能!连上他就行
I双指针
公式化简!
遇到公式,毫不犹豫化简,化成一边或者有相同的下标||同样的形式下标不同||适时可以试着代一些特殊值
#define int long long
map<double,int> vp;  //存某个值有几个
vp[1.0*a[i]/b[i]]++;//直接对于这个数++即可!  直接1.0
if(vp.count(t))  //map内置函数!
ans+=vp[t];//成立条件:a1/b1=b2/a2; 所以最后才会除
if(a[i]==b[i])
ans--;  //由于他自己还会和自己配对!所以要减掉一个!
//会加两遍,所以输出就是/2
cout<<ans/2<<endl;
J树上DP
该树所有子树的结点的权值和的总和:某层的结点权值*层数加起来就是ans
注意循环语句while {j++} 控制边界值!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值