QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#271400 | #7744. Elevator | iorit# | AC ✓ | 43ms | 16944kb | C++14 | 3.4kb | 2023-12-02 11:35:33 | 2023-12-02 11:35:35 |
Judging History
answer
//#pragma GCC target("avx,avx2")
//#pragma GCC optimize("Ofast")
#include<bits/stdc++.h>
#define int long long
#define mem(x,y)memset(x,y,sizeof(x))
#define rep(i,l,r)for(int i = l;i <= r;i ++)
#define dep(i,r,l)for(int i = r;i >= l;i --)
#define tov(i)for(int i = head[x];i;i = e[i].nxt)
#define pb push_back
#define pi pair <int,int>
using namespace std;
int read(){
int s = 0,w = 1;
char ch = getchar();
while(ch < '0' || ch > '9'){if(ch == '-')w = -1;ch = getchar();}
while(ch >= '0' && ch <= '9')s = s * 10 + ch - '0',ch = getchar();
return s * w;
}
namespace Tem{
const int mod = 0;//Notice Here!!!!!!!!!!
int fac[1000010],ifac[1000010];
inline int gcd(int a, int b){
int az = __builtin_ctz(a);
int bz = __builtin_ctz(b);
int z = az > bz ? bz : az;
int diff;
b >>= bz;
while(a){
a >>= az;
diff = b - a;
az = __builtin_ctz(diff);
if(a < b)b = a;
a = diff < 0 ? -diff : diff;
}
return b << z;
}
inline int poww(int x,int y,int MOD = mod){
int s = 1;
for(;y;x = x * x % MOD,y >>= 1)if(y & 1)s = s * x % MOD;
return s;
}
void initfac(int n,int MOD = mod){
fac[0] = fac[1] = ifac[0] = ifac[1] = 1;
rep(i,2,n)fac[i] = fac[i - 1] * i % MOD;
ifac[n] = poww(fac[n],MOD - 2,MOD);
dep(i,n - 1,2)ifac[i] = ifac[i + 1] * (i + 1)% MOD;
}
inline int inv(int x,int MOD = mod){return poww(x,MOD - 2)% MOD;}
inline int C(int x,int y,int MOD = mod){return fac[x] * ifac[y] % MOD * ifac[x - y] % MOD;}
void Add(int &x,int y){x = x + y >= mod ? x + y - mod : x + y;}
void Dec(int &x,int y){x = x - y < 0 ? x - y + mod : x - y;}
void Mul(int &x,int y){x = x * y % mod;}
}using namespace Tem;
struct node{
int c;
int w;
int f;
int d;
}e[1000010],e1[1000010];
int t;
int n,m;
bool bk[1000010];
int nxt[1000010];
int ans;
int d[1000010];
bool cmp(node x,node y){if(x.f != y.f)return x.f > y.f;return x.w > y.w;}
void solve(){
n = read(),m = read();
int cnt = 0;
rep(i,1,n)e[i].c = read(),e[i].w = read(),e[i].f = read();
rep(i,1,n)bk[i] = d[i] = 0;
ans = 0;
sort(e + 1,e + n + 1,cmp);
rep(i,1,n)e[i].d = e[i].c * e[i].w;
//rep(i,1,n)cout<<"w = "<<e[i].w<<",f = "<<e[i].f<<endl;
// nxt[n + 1] = n + 1;
// dep(i,n,1){
// if(e[i].w == 2)nxt[i] = nxt[i + 1];
// else nxt[i] = i;
// }
int now = 0;
// rep(i,1,n)cout<<"i = "<<i<<",nxt = "<<nxt[i]<<endl;
int lst;
rep(i,1,n){
int v = e[i].d;
//cout<<"i = "<<i<<",v = "<<v<<endl;
if(v <= 0)continue;
if(now == 0)lst = i;
int v1 = now + e[i].d;
if(v1 < m){
now = v1;
}
// int pos = i;
// while(1){
// // d[pos] += now;
// if(now + e[pos].d >= m)break;
// now += e[pos].d;
// pos ++;
// e[pos].d = 0;
// if(pos > n)break;
// }
else {
ans += e[lst].f;
lst = i;
now = now + e[i].d - m;
int tt = now / m;
ans += e[i].f * tt;
now %= m;
}
}
if(now)ans += e[lst].f;
printf("%lld\n",ans);
}
signed main(){
cin>>t;
while(t --)solve();
}
这程序好像有点Bug,我给组数据试试?
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 12104kb
input:
2 4 6 1 1 8 7 2 5 1 1 7 3 2 6 8 1200000 100000 1 100000 100000 1 12345 100000 2 100000 100000 2 12345 100000 1 100000 100000 1 12345 100000 2 100000 100000 2 12345
output:
24 100000
result:
ok 2 lines
Test #2:
score: 0
Accepted
time: 18ms
memory: 14844kb
input:
5501 8 104 5 2 3 6 2 4 5 2 3 6 2 9 8 2 4 2 1 3 7 2 4 8 2 8 1 290 3 1 1 12 12 6 1 2 1 2 2 1 1 2 1 2 4 6 1 1 1 2 5 6 1 4 4 1 4 6 2 4 6 2 5 4 2 5 4 1 4 5 334 1 1 4 1 2 3 4 2 1 5 1 1 2 1 2 13 218 5 2 3 5 1 4 1 2 1 1 2 5 3 2 2 1 1 3 4 2 2 1 2 5 2 2 1 2 1 5 3 2 1 5 2 1 1 1 4 10 260 7 2 1 5 1 1 5 2 4 6 1 6...
output:
9 1 23 4 5 7 1 3 9 6 1 10 4 9 17 6 4 1 8 5 5 7 1 3 23 6 3 3 2 2 2 3 8 1 5 6 9 11 147 7 10 2 7 7 8 6 5 5 1 7 3 5 10 7 7 10 8 1 4 2 3 9 1 5 2 9 1 6 7 7 6 10 18 8 10 4 10 9 2 8 3 5 9 3 6 5 3 2 6 1 3 2 2 1 6 9 6 3 4 8 9 9 2 6 1 2 6 7 5 2 5 21 8 1 2 3 4 9 3 4 6 5 9 6 1 7 3 7 3 2 2 8 7 3 5 9 7 10 7 3 2 4 ...
result:
ok 5501 lines
Test #3:
score: 0
Accepted
time: 35ms
memory: 14708kb
input:
3 100000 8 8 2 6 7 2 8 5 1 10 7 2 7 4 1 7 6 2 9 7 1 2 3 1 1 5 1 10 5 1 1 3 2 10 5 2 5 7 1 6 5 2 7 7 2 1 5 1 6 2 2 10 8 1 7 7 1 1 10 2 6 9 1 1 8 1 4 10 1 4 6 1 1 4 1 4 1 2 9 3 2 6 6 1 3 4 1 7 9 2 5 8 2 4 7 2 1 2 2 10 6 2 9 3 1 3 2 2 3 2 2 4 7 2 4 8 1 1 5 2 3 5 2 7 7 2 9 1 1 4 5 1 2 2 1 9 3 2 1 9 2 2 ...
output:
568601 4708350936 93900404329230
result:
ok 3 lines
Test #4:
score: 0
Accepted
time: 43ms
memory: 16944kb
input:
3 100000 174 90429 1 64237 30851 1 44358 63571 2 89174 20391 2 28747 13561 2 88689 81508 2 28383 85733 1 5777 37524 2 34730 10588 2 88519 61493 2 83682 55885 1 65270 17669 2 63015 85387 1 64757 91420 2 74020 9067 2 91750 20809 1 52771 36478 2 17941 62064 1 36433 72912 2 6100 53923 2 73971 65825 2 39...
output:
2156004461915 884586357480 59034901233
result:
ok 3 lines
Test #5:
score: 0
Accepted
time: 37ms
memory: 14644kb
input:
3 100000 4418822 19907 1 13081 59730 2 93611 35050 1 5867 87777 1 21890 18374 1 82418 79526 2 76106 33510 2 45826 75573 1 42240 35449 1 98727 80720 2 65290 32021 2 51348 52399 2 97828 75498 2 51728 89905 1 22825 2855 1 26204 11427 1 99583 55530 2 37895 22256 2 92230 19533 1 9142 16138 1 54018 53102 ...
output:
84699074 270668 100000
result:
ok 3 lines
Extra Test:
score: 0
Extra Test Passed