
【贪心】
欣君
追寻那如樱花般的绚烂
展开
-
51nod 1438 方阵与完全平方数
。。。#includeusing namespace std;const int MAXN=460000;const int MAXM=10000;int n,flag,square_flag[MAXM],val_flag[MAXN];long long val[65][65];long long sear(long long num){ for(long long i=转载 2016-11-10 19:56:41 · 357 阅读 · 0 评论 -
HDU 6034 Balala Power!
贪心,注意前导0#includeusing namespace std;const long long mod=1e9+7;const int MAXN=102000;int arr[30][MAXN],b[30],nzero[30],mp[30];char str[MAXN];long long mxlen;bool cmp(int x,int y){ for(i原创 2017-07-26 12:33:40 · 255 阅读 · 0 评论 -
51nod 1385 凑数字
玄妙的方法。。。#includeusing namespace std;int main(){ string str; int ans,i,flag; while(cin>>str) { ans=(str.length()-1)*10; for(i=1;i<=9;i++) { if(str>=string(str.length(),i+'0'))原创 2017-07-19 14:35:49 · 280 阅读 · 0 评论 -
51nod 1476 括号序列的最小代价
从左到右贪心。一开始将所有问号都设为右括号。当遇到异常的时候,用优先队列找到改为左括号花费最小的那个,改为左括号。#includeusing namespace std;const int MAXN=50050;long long l[MAXN],r[MAXN];char s[MAXN];int main(){ long long n,i,ans,deep,ll,rr; w原创 2017-02-14 15:10:08 · 324 阅读 · 0 评论 -
51nod 1596 搬货物
好久不做题了。。。有种智商被碾压的感觉。。。然后就挑了道水题做做从低到高遍历一遍就行。#includeusing namespace std;const int MAXN=1010010;long long a[MAXN];int main(){ long long n,x,i,ans; while(~scanf("%lld",&n)) { memset(a,0,原创 2017-01-18 21:35:14 · 343 阅读 · 0 评论 -
51nod 1125 交换机器的最小代价
#includeusing namespace std;const int MAXN=50050;long long a[MAXN],fin[MAXN],fa[MAXN],sum[MAXN],siz[MAXN],mna[MAXN];int findfa(int x){ if(fa[x]==x) return x; else return fa[x]=findfa(fa[x原创 2016-12-17 23:26:43 · 246 阅读 · 0 评论 -
51nod 1364 最大字典序排列
贪心+线段树+二分姿势有点问题。。加了快速读写才不T。。。。#includeusing namespace std;const int MAXN=100100;int a[MAXN],pos[MAXN];struct node{ int l,r; int nsum;}segtree1[MAXN<<2],segtree2[MAXN<<2];void build1(int原创 2016-12-08 00:27:18 · 291 阅读 · 0 评论 -
51nod 1093 骆驼和香蕉
#includeusing namespace std;int main(){ double n,k,ans,flag,tag; while(scanf("%lf%lf",&n,&k)!=EOF) { flag=1; tag=0; while(n-k/flag>=0) { n-=k/flag; flag+=2; tag++; } ans=ta转载 2016-11-23 21:04:30 · 2575 阅读 · 0 评论 -
51nod 1460 连接小岛
贪心+二分。将桥的合法范围进行排序,二分查找对应的桥。#includeusing namespace std;const int MAXN=200200;struct seg{ long long mn,mx;}bdg[MAXN];bool cmp(seg s1,seg s2){ if(s1.mx!=s2.mx) return s1.mx<s2.mx; else原创 2016-11-20 02:13:53 · 255 阅读 · 0 评论 -
51nod 1420 数袋鼠好有趣
贪心+二分能装进大袋鼠的小袋鼠,肯定是最小的那几个。所以二分枚举小袋鼠的数量即可。#includeusing namespace std;const int MAXN=500500;int n,a[MAXN];bool judge(int x){ for(int i=0,j=n-x;i<x;i++,j++) { if(a[i]+a[i]>a[j]) retu原创 2016-11-15 01:32:48 · 295 阅读 · 0 评论 -
51nod 1435 位数阶乘
#includeusing namespace std;int main(){ int a[15][15],sum[15],i,j,n; char s[20]; memset(a,0,sizeof(a)); a[2][2]=1; a[3][3]=1; a[4][3]=1; a[4][2]=2; a[5][5]=1; a[6][5]=1; a[6][3]=1; a[7]原创 2016-11-10 22:51:31 · 221 阅读 · 0 评论 -
牛客OI周赛8-提高组 A 用水填坑
95%的分很好拿,只要对每一个高度都跑一遍dfs/bfs就行了,但最后5%的分有难度。首先我们可以知道,最外面一圈的高度和蓄水量,是固定的。我们可以考虑从外圈向内圈进行反向搜索操作。用一个堆/优先队列作为搜索队列,维护已确定蓄水量的单元格中,高度+蓄水量最小的单元格。每次取出堆顶元素,其周围的单元格高度为。如果,必定可以将这个单元格填补到高度,总蓄水量增加,。如果,那说明这个单...原创 2019-04-18 18:30:04 · 238 阅读 · 0 评论