Codeforces Round #142 Div.2 문제 해결
14812 단어 codeforces문제풀이총결산
A
n , xi, yi, s.
.
.
탐욕스럽게 공격력이 가장 적은 용을 칠 때마다 용을 정렬할 수 있다.#include //Ithea Myse Valgulious
using namespace std;
const int yuzu=1e5;
struct drn{
int x,y;
bool operator const drn &b) const{
return x^b.x?xb.y;
}
}d[yuzu|10];
int main(){
int s=read(),n=read(),i;
for (i=1;i<=n;++i) d[i].x=read(),d[i].y=read();
sort(d+1,d+n+1);
for (i=1;i<=n;++i){
if (s<=d[i].x) return puts("NO"),0;
s+=d[i].y;
}puts("YES");
}
B
3 .
이 수는 분명히 질수의 제곱이어야 한다.체법으로 106 106 이내의 질수를 체로 쳐서 n------√n을 계산하여 판단한다.#include //Ithea Myse Valgulious
using namespace std;
const int yuzu=1e6;
typedef int fuko[yuzu|10];
fuko pr,p;
void preprime(){
int i,j;
fill(p+2,p+yuzu+10,1);
for (i=2;i*i<=yuzu;++i){
if (p[i]){
for (j=i*i;j<=yuzu;j+=i) p[j]=0;
}
}
}
bool judge(ll x){
ll t=sqrt(x);
if (t*t^x) return 0;
return p[t];
}
int main(){
preprime();
for (int t=read();t--;){
ll x;read(x);
puts(judge(x)?"YES":"NO");
}
}
C
n m 01 , , .
1 , -1.
줄마다 set으로 11의 위치를 저장하고 한 번에 한 열을 열거하며 줄의 2분은 이 열에서 가장 가까운 두 개의 11의 위치를 찾아 이동 횟수에 최소값을 더한다.중간에 WA가 9발을 보냈는데 그 수안 함수는 엉망진창으로 바뀌었지만 결국 A가 떨어졌다.#include //Ithea Myse Valgulious
using namespace std;
const int yuzu=1e4,_=105,inf=yuzu*_;
typedef int fuko[yuzu|10];
char c[yuzu|10];
set<int> s[_];
int n,m;
#define cal(a,b) min(min(abs(a-b),abs(a+m-b)),abs(b+m-a))// a b .
int suan(int r,int c){
int ans;
auto p=s[r].lower_bound(c);
if (p==s[r].end()){
ans=min(cal(*s[r].rbegin(),c),cal(*s[r].begin(),c));
}else if (p==s[r].begin()){
ans=min(cal(*p,c),cal(*s[r].rbegin(),c));
}else{
ans=min(cal(*p,c),cal(c,*--s[r].lower_bound(c)));
}
return ans;
}
int main(){
int i,j,ans=inf;
scanf("%d%d",&n,&m);
for (i=1;i<=n;++i){
scanf("%s",c+1);
for (j=1;j<=m;++j) if (c[j]&1) s[i].insert(j);
}
for (j=1;j<=m;++j){
int tmp=0;
for (i=1;i<=n;++i){
if (s[i].empty()) return puts("-1"),0;
tmp+=suan(i,j);
}
ans=min(ans,tmp);
}write(ans);
}
D
. i tourist ,
.
spfas p f a 뛰면 돼.여기 spfa s p f a 안 죽었어.팀의 우두머리를 꺼낼 때 현재 지점이 dist[i] d i s t[i]에 있는 시간이 어떤tourist에 의해 차지되었는지 확인하고, 그렇지 않으면 dist[i]+1d i s t[i] + 1을 차지하지 않을 때까지 봅시다.이게 다 D문제야. 나 진짜 탄복했어.하지만 나도 T66개의 점이 있다. 그것은 정말 흑역사이다. 나는 매번 한 점까지 확장할 때마다 이 점이 점거되어 T가 날아갔는지 아닌지를 판단한다.#pragma GCC optimize("inline",3)
#include //Ithea Myse Valgulious
namespace chtholly{
typedef long long ll;
#define re0 register int
#define rec register char
#define rel register ll
#define gc getchar
#define pc putchar
#define p32 pc(' ')
#define pl puts("")
/*By Citrus*/
inline int read(){
int x=0,f=1;char c=gc();
for (;!isdigit(c);c=gc()) f^=c=='-';
for (;isdigit(c);c=gc()) x=(x<<3)+(x<<1)+(c^'0');
return f?x:-x;
}
template <typename mitsuha>
inline bool read(mitsuha &x){
x=0;int f=1;char c=gc();
for (;!isdigit(c)&&~c;c=gc()) f^=c=='-';
if (!~c) return 0;
for (;isdigit(c);c=gc()) x=(x<<3)+(x<<1)+(c^'0');
return x=f?x:-x,1;
}
template <typename mitsuha>
inline int write(mitsuha x){
if (!x) return 0&pc(48);
if (x<0) x=-x,pc('-');
int bit[20],i,p=0;
for (;x;x/=10) bit[++p]=x%10;
for (i=p;i;--i) pc(bit[i]+48);
return 0;
}
inline char fuhao(){
char c=gc();
for (;isspace(c);c=gc());
return c;
}
}using namespace chtholly;
using namespace std;
const int yuzu=2e5,inf=0x3f3f3f3f;
typedef int fuko[yuzu|10];
struct edge{int to,w;};
vector lj[yuzu|10];
set<int> tors[yuzu|10];
fuko vis,dist;
int n,m;
#define key(v) for (;v^n&&tors[v].count(dist[v]);++dist[v])
int spfa(int s){
queue<int> q;
memset(vis,0,sizeof vis);
memset(dist,0x3f,sizeof dist);
q.push(s),vis[s]=1,dist[s]=0;
for (;!q.empty();){
int u=q.front();q.pop();
vis[u]=0;
key(u);
for (auto i:lj[u]){
int v=i.to,w=i.w;
if (dist[v]>dist[u]+w){
dist[v]=dist[u]+w;
if (!vis[v]) vis[v]=1,q.push(v);
}
}
}
}
int main(){
int i,j;n=read(),m=read();
for (i=1;i<=m;++i){
int u=read(),v=read(),w=read();
lj[u].push_back(edge{v,w});
lj[v].push_back(edge{u,w});
}
for (i=1;i<=n;++i){
for (j=read();j--;){
tors[i].insert(read());
}
}
spfa(1);
write(dist[n]^inf?dist[n]:-1);
}
E
, m , m .
E문제에 이런 문제가 있으니 정말 그녀를 설득시켰다.너는 함부로 하기만 하면 영문도 모른 채 A를 떨어뜨릴 수 있다.영점 i i의 도수는 cnt[i]cnt[i]이고, 파괴된 삼원환의 수는 (n-3-1-3cnt[i])×cnt[i] ( n − 1 − c n t [ i ] ) × c n t [ i ] . 삼원환을 파괴하는 것은 양방향이기 때문에 2로 나누면 된다.#pragma GCC optimize("inline",3)
#include //Ithea Myse Valgulious
using namespace std;
const int yuzu=1e6;
typedef ll fuko[yuzu|10];
fuko cnt;
int main(){
int n=read(),m=read(),i;
ll ans=0;
for (i=1;i<=m;++i) ++cnt[read()],++cnt[read()];
for (i=1;i<=n;++i) ans+=(n-cnt[i]-1)*cnt[i];
write(1ll*n*(n-1)*(n-2)/6-ans/2);
}
감사합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Codeforces Round #715 Div. 2C The Sports Festival: 구간 DP전형구간 DP의 초전형. 이하, 0-indexed. 입력을 정렬하여 어디서나 시작하고 최적으로 좌우로 계속 유지하면 좋다는 것을 알 수 있습니다. {2000})$의 주문이 된다. 우선, 입력을 소트하여 n개의 요소를 $...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.