This commit is contained in:
Zengtudor 2025-02-08 11:55:59 +08:00
parent d13ae78565
commit 18e35e91d7
4 changed files with 98 additions and 9 deletions

View File

@ -4,7 +4,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_compile_options(-Wall)
include_directories(${CMAKE_CURRENT_LIST_DIR}/include)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

29
src/2/P1223.cpp Normal file
View File

@ -0,0 +1,29 @@
#include <algorithm>
#include <cstdint>
#include <cstdlib>
#include <iomanip>
#include <ios>
#include <iostream>
#include <ostream>
#include <utility>
#include <vector>
int main(){
using ll = int64_t;
ll n,nowWait=0,sumWait=0;
std::cin>>n;
std::vector<std::pair<ll, ll>> a(n+1);
for(ll i=1;i<=n;i++){
std::cin>>a[i].first;
a[i].second=i;
}
std::sort(a.begin()+1,a.end());
for(ll i=1;i<=n;i++){
sumWait+=nowWait;
std::cout<<a[i].second<<" ";
nowWait+=a[i].first;
}
std::cout<<std::fixed<<std::setprecision(2)<<'\n'<<(double(sumWait)/double(n))<<'\n'<<std::flush;
quick_exit(0);
}

38
src/2/P1375.cpp Normal file
View File

@ -0,0 +1,38 @@
#include <cstdint>
#include <iostream>
using ll = int64_t;
constexpr ll p=1e9+7;
const ll n=[]()->ll{ll n;std::cin>>n;return n;}();
ll qpow(ll b,ll e){
ll r{1};
while(e){
if(e&1)r=r*b%p;
b=b*b%p;
e/=2;
}
return r;
}
ll inv(ll n){
return qpow(n, p-2);
}
ll mfact(const ll&b){
ll r{1};
for(ll i{1};i<=b;i++){
r=r*i%p;
}
return r;
}
ll C(const ll &n,const ll &m){
return mfact(n)*inv(mfact(m))%p*inv(mfact(n-m))%p;
}
int main(){
const ll ans = C(2*n,n)-C(2*n,n-1);
std::cout<<(ans%p+p)%p<<'\n';
}

View File

@ -1,20 +1,42 @@
#include <algorithm>
#include <cstdint>
#include <iostream>
#include <tuple>
using ll = int64_t;
ll T;
ll exgcd(ll a,ll b,ll&x,ll&y){
std::tuple<ll,ll,ll> exgcd(ll const&a,ll const& b){
if(b==0){
x=1,y=0;
return a;
return std::make_tuple(a,1,0);
}
ll d = exgcd(b,a%b,x,y);
ll tempy = y;
auto [d,x,y] = exgcd(b, a%b);
ll oldy{y};
y=x-a/b*y;
x=tempy;
return d;
x=oldy;
return std::make_tuple(d,x,y);
}
ll divup(ll const&a,ll const&b){
return (a+(b>0?b-1:b+1))/b;
}
int main(){
std::cin>>T;
while(T--){
const auto [a,b,c] {[]()->std::tuple<ll,ll,ll>{ll a,b,c;std::cin>>a>>b>>c;return std::make_tuple(a,b,c);}()};
const auto [d,x1,y1] {exgcd(a,b)};
if(c%d!=0){
std::cout<<"-1\n";
continue;
}
const ll kmin{divup(-x1*d,b)},kmax{y1*d/a};
const ll knum{std::max(ll(0),kmax-kmin+1)};
if(knum==0){
std::cout<<(x1+kmax*b/d)<<' '<<(y1-kmin*a/d)<<'\n';
}else{
std::cout<<(x1+kmin*b/d)<<' '<<(y1-kmax*a/d)<<(x1+kmax*b/d)<<' '<<(y1-kmin*a/d)<<'\n';
}
}
}