接到上级通知,贪心思路假了,紧急需要调整思路
思路假了?考虑反悔
while(思路==false){
cout<<"思路假了"<<endl;
思路=true;
cout<<"改对了"<<endl;
}
Sample Output
思路假了 改对了
思路假了 改对了
思路假了 改对了
思路假了 改对了
思路假了 改对了
思路假了 改对了
思路假了 改对了
思路假了 改对了
思路假了 改对了
思路假了 改对了
思路假了 改对了
思路假了 改对了
思路假了 改对了
改成二分答案。
考虑到设当前答案为 \(x\),正确答案上界为 \(y\),则有
\[x\ge ans \ge y \]只需要写一个 check()
即可
不难发现 check()
非常好写:
bool check(int x){
if(ans>=x) return true;
return false;
}
二分答案即可求出答案。
代码实现过程:
#include<bits/stdc++.h>
using namespace std;
int x,ans;
bool check(int x){
if(ans>=x) return true;
return false;
}
int main(){
cin>>x>>ans;
int l=x,r=ans;
while(1){
int mid=(l+r)/2;
if(check(mid)){
l=mid+1;
ans=mid;
}
else{
r=mid-1;
}
}
cout<<ans;>>
}
编译失败
/tmp/compiler_x4t_lflm/src: In function ‘int main()’:
/tmp/compiler_x4t_lflm/src:21:15: 错误:expected primary-expression before ‘>>’ token
21 | cout<<ans;>>
| ^~
/tmp/compiler_x4t_lflm/src:22:1: 错误:expected primary-expression before ‘}’ token
22 | }
| ^
你是不是忘记关尖括号自动补全了
哦还真是
考虑反悔,考虑到可以对反悔进行可持久化,建立贪心决策树,每次在决策树上暴力跳 fa
void init(){
for(int i=1;i<=n;++i>){
fa[i]=i;
}
}
void solve(int x){
int now=x;
while(now) solve(fa[now]);
}
你是不是忘记关尖括号自动补全了
哦还真是
Sample oUTPUT
13
10
7
6
4
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Runtime Error: Process exited after 1.712 seconds with return value 3221225725
请按任意键继续...
考虑对反悔进行可持久化。
假了!这一步贪心!
反悔。
假了!反悔假了!
撤销。
哦不对,哦这个反悔思路是对的,对的对的对的对的
反悔。
哦不对不对不对不对
撤销。
哦对的对的对的对的
反悔。
哦不对不对不对不对
撤销。
哦对的对的对的对的
反悔。
哦不对不对不对不对
撤销。
哦对的对的对的对的
反悔。
哦不对不对不对不对
撤销。
哦对的对的对的对的
反悔。
哦不对不对不对不对
撤销。
哦对的对的对的对的
反悔。
哦不对不对不对不对
撤销。
哦对的对的对的对的
反悔。
噫嘘唏,维护高在!疏导指南,南屿伤情田。迩来四碗坝前岁,刻意横绝峨眉殿。
反悔。
确认要将博文“可持久化可反悔贪心”放入回收站吗?
撤销。
确认要将博文“可持久化可反悔贪心”恢复吗?
莫队的起源:
考虑刚才的二分答案:
#define import include
import <bits/stdc++.h>
def check(x):
if ans>=x:
return True;
else:
return False;
#endif
守序善良
这才是莫队
for(int i=1;i<=m;++i){
while(nowl<q[i].l) reduce(nowl++);
while(nowl>q[i].l) add(--nowl);
while(nowr<q[i].r) add(++nowr);
while(nowr>q[i].r) reduce(nowr--);
anss[q[i].id]=ans;
}
中立善良
强制在线也是莫队
x0=(x0+lastans-1+MOD1)%MOD1+1,
x1=(x1+lastans-1+MOD1)%MOD1+1;
y0=(y0+lastans-1+MOD2)%MOD2+1,
y1=(y1+lastans-1+MOD2)%MOD2+1;
中立邪恶
二分答案也是莫队
int l=1,r=n;
while(l>=r){
if(check(l)) l++;
else l--;
if(check(r)) r++;
else r--;
}
混乱邪恶
DP 版莫队
f[i][j]=max({f[i-1][j],f[i+1][j],f[i][j-1],f[i][j+1]});
兄弟们有没有还能上传题解的入门题呀,跪求(本人才学编程2个月)
你说的对,但你为什么做出了3道黑题
而且一次就过!
解释一下
@wzt2012 让我老师帮我打的,装杯用
You are so smart!
标签:int,化可,改对,反悔,ans,思路,check,贪心 From: https://www.cnblogs.com/HaneDaCafe/p/18356193