二分查找
wspl654321
。。。。。。
展开
-
汉堡
对汉堡进行二分答案,如果花的钱多了就买少点,少了就买多点#include<cstdio>#include<iostream>#include<cstring>#define ll long longusing namespace std;char a[9999999]; ll r,l,t;int b,s,c,nb,ns,nc,qb,qs,qc;bool check(ll x){原创 2017-06-16 15:56:18 · 280 阅读 · 0 评论 -
跳石头
二分答案加贪心 和之前一个丢瓶盖一样,对去几个石子二分,去多了就取大了,去少了就取小了#include<cstdio>#include<iostream>#include<cstring>#define ll long longusing namespace std;ll a[99999],n,m,l,dp[51999],f,d[99999];int check(int x){原创 2017-06-10 15:22:08 · 191 阅读 · 0 评论 -
聪明的质检员
二分+前缀和优化,不优化就是o(nmlogn)了 对参数w进行二分答案,通过w对y进行计算,如果找大了,就说明参数w找小了,答案在mid右面,找小了反之。#include<cstdio> #include<iostream>#include<cstring>#define LL long longusing namespace std;LL sum[299999],cnt[299999]原创 2017-06-12 10:37:46 · 728 阅读 · 0 评论 -
又一次测试题
循环移动给出一个字符串 S 与 N 个操作。每个操作用三元组(L, R, K)进行描述:操作将字 符串第 L 个到第 R 个位置构成的子串循环移动 K 次。一次循环移动就是将字符 串最后的这个字符移动到第一位,其余的字符顺次后移。例如,对于字符串 abacaba,操作(L=3, R=6, K=1)后得到的字符串即为 abbacaa。 求出在 N 个操作后得到的字符串。这个题模拟就行,第一次交的时候原创 2017-10-27 10:04:49 · 291 阅读 · 0 评论 -
洛谷10月月赛R2·浴谷八连测R3 P3933 Chtholly Nota Seniorious
这个题可以用二分,然后贪心 其实一开始也有想到,不过不知道怎么贪,看了题解恍然大悟 当最大值再四个角的区域是不同的,所以要从四个角开始找,然后是成阶梯状的,下一层一定小于等于上一层,如果最大值在这个区域,最大指减每一个都要比答案小,同理最小值在某个区域,每个值减最小值都所比答案小,然后检验另一个区域就行了,所以一行行的贪就可以#include<cstdio>#include<iostream原创 2017-10-28 08:17:19 · 311 阅读 · 0 评论 -
疫情控制
#include<cstdio>#include<cstring> #include<iostream>#include<algorithm>#define ll long longusing namespace std;const int M=51000;struct st{ ll rest,id;}; st a[M],b[M];ll vis[M],used[M],de原创 2017-10-22 16:56:38 · 2138 阅读 · 0 评论 -
题
t1 没想到a了。。 就是k个点的小于m的最短路#include<cstdio>#include<queue>#include<cstring>using namespace std;const int M=5100;int m,n,Q,head[M],tot,nex[M*2],to[M*2],dis[M],vis[M];void add(int x,int y){ nex[原创 2017-11-06 16:32:34 · 149 阅读 · 0 评论