Codeforces 767E Change-free】的更多相关文章

题目链接:http://codeforces.com/contest/767/problem/E 居然是一个瞎几把贪心(E比B水系列) 考虑要每一次操作至少要用${\left \lfloor \frac{c[i]}{100} \right \rfloor}$张百元大钞,然后剩下的要不是用一张百元大钞收获一堆硬币并产生不高兴值,要么直接使用硬币买.我们可以把问题转换为强制每次操作都是用硬币买的,那么是不是就要从之前没有没有用过百元大钞的操作中改变若干个变成用了百元大钞的,然后收下这些硬币直到数量满…
[题目链接]:http://codeforces.com/problemset/problem/767/E [题意] 你有m个1元硬币和无限张100元纸币; 你在第i天,需要花费ci元; 同时在第i天,收银员有一个不高兴程度wi; 然后如果它要找零x张纸币y枚硬币的话,它的不高兴值会为wi*(x+y) 找的零钱会回到你的口袋里; 问你n天的,总的最小不高兴值; [题解] 整百的部分,直接用纸币填就好了; 则直接对ci%100考虑; 即要直接用硬币填满ci%100,或者是先给一张100,然后让他找…
题目链接 大意:Arseny有m个1元硬币, 无限多100元钞票, 他要按顺序买n个东西, 第i天如果找零x个硬币, 他的不满值会加 w[i]*x, 求最少不满值. 若找零, 则硬币增加 100-ci%100, ans增加(100-ci%100)*wi 不找零, 则硬币增加 -ci%100, ans不变 贪心尽量不找零, 如果需要找零, 可以发现更改任意一个均会增加100个硬币 所以直接选一个对ans贡献最少的改为找零即可 需要特判100的倍数, 一定不能找零 #include <iostrea…
题目链接:http://codeforces.com/problemset/problem/379/C 题目意思:有n个users,每个user都有自己想升的rating.要解决的问题是给予每个人不同的rating,使得每个人rating不比他期望的rating小,即 安排的rating >= 他自己的希望的rating,还有一个条件就是 总rating之和要最小. 要想使得总rating最少,那么安排的rating要尽可能小.把rating从小到大排序.对最小的rating值当然就给予这个值,…
https://codeforces.com/contest/911/problem/G 没想到线段树合并还能这么搞.. 对每个权值建一个线段树(动态开点),如果权值为k的线段树上第i位为1,那么表示a[i]=k:如果权值为k的线段树上第i位为0,表示a[i]≠k 改变权值的时候,就是把[l,r]分解成多个线段树上的区间:对于每个分解出的区间,分别在权值为x的线段树上和权值为y的线段树上找到对应的节点,设某个区间找到的节点为a,b,则把b子树合并到a上 注意!要特判x==y时跳过操作 最后枚举一…
A. Payment Without Change You have a coins of value n and b coins of value 1. You always pay in exact change, so you want to know if there exist such x and y that if you take x (0≤x≤a) coins of value n and y (0≤y≤b) coins of value 1, then the total v…
题目链接 \(Description\) 给定两个长为\(n\)的数组\(x_i,y_i\).每次你可以选定\(i,j\),令\(x_i=x_i\ \mathbb{xor}\ x_j\)(\(i,j\)可以相等).要求若干次操作后使得\(x\)变成\(y\),输出方案.操作次数不能多于\(10^6\),无解输出\(-1\). \(n\leq10^4,\ 0\leq x_i,y_i\leq10^9\). \(Solution\) 考虑异或的两个基本性质: 异或是可逆的,逆运算就是它本身. 可以交换…
链接 大意: 给定序列, 每次操作将区间[l,r]中的x全改为y, 最后输出序列 权值范围比较小, 对每个权值开一颗线段树, 每次将x合并到y上即可 #include <iostream> #include <algorithm> #include <cstdio> #define REP(i,a,n) for(int i=a;i<=n;++i) #define mid (l+r>>1) #define lc (o<<1) #define…
Brief Introduction: 给你一些种类的硬币,用最少的硬币数表示X 求最小的使贪心算法错误的X Algorithm: 一道论文题,<A Polynomial-time Algorithm for the Change-making Problem> 证明先挖个坑,以后再填 感性猜想,我们可以构建出这样一个算法: 对于一种币值A,我们找出一个略大于A仅用币值不小于B且小于A的货币表示的值X,使得贪心算法在使用A后要用更多零碎的货币 这样,只要枚举A.B,找出最小的这样的值即可.存在…
A,B,C傻逼题,就不说了. E题: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; ,mod=; typedef long long int64; ]; int64 a[maxn],s1[maxn<<],s2[maxn<<]; struct…