\# 개인전 첫 번 째 문제 풀이 총화\#
Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit Status Practice FZU 2167
Description
대사 형 은 진경 을 얻 은 후에 매일 경 서 를 자세히 읽 고 독서 노트 를 열심히 완성 하 며 이론 과 실제 관 계 를 맺 고 실천 능력 을 계속 향상 시킨다.만약 에 대사 형 이 수련 을 시작 한 첫날 이 월요일 이 고 지금까지 N 일 을 수련 했다 고 가정 하면 얼마나 많은 날 이 토요일 이나 일요일 이 고 대사 형 은 아직도 수련 을 하고 있 습 니까?
Input
각 그룹의 입력 데 이 터 는 하나의 정수 N (0 < N < 100, 000) 을 포함한다.
Output
각 그룹 에 데 이 터 를 입력 하고 한 줄 을 출력 하 며 하나의 정수 만 포함 하여 N 일 중 토요일 이나 일요일 의 일 수 를 표시 합 니 다.
Sample Input
567121314
Sample Output 0 1 2 2 3 4 생각: 물 문제, 설명 안 해 ~ ~
코드:
<span style="font-size:14px;"> #include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int n,b;
while(cin>>n)
{
b=n/7*2;
if(n%7==6)
b++;
cout<<b<<endl;
} return 0;}</span>
B - 방어 진지 I
Crawling in process... Crawling failed Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit Status Practice FZU 2168
Description
부대 에는 모두 N 명의 병사 가 있 고 모든 병사 들 은 각자 의 능력 지수 인 Xi 를 가지 고 있다. 한 번 의 훈련 에서 지휘 부 는 M 개의 수비 가 필요 한 장 소 를 확정 했다. 중요 도 에 따라 낮은 것 에서 높 은 것 으로 순 서 를 매기 고 숫자 1 에서 M 으로 각 장소의 중요 도 를 표시 했다. 지휘 부 는 M 개 사병 을 선택 하여 순서대로 지 정 된 장소 에 들 어가 수비 임 무 를 수행 할 것 이다.능력 지수 가 X 인 병사 의 수비 중요 도가 Y 인 지점 은 X * Y 의 참고 지 수 를 받 게 된다.현재 병사 들 이 일렬 로 서 있 습 니 다. 연속 적 인 M 개 병 사 를 선택 하여 순서대로 수비 에 참가 하여 전체 참고 지수 가 가장 큽 니 다.
Input
여러 그룹 을 포함 하 는 데 이 터 를 입력 하 십시오.
첫 번 째 줄 에 두 개의 정수 N, M (1 & lt; = N & gt; = 1000000, 1 & lt; = M & gt; = 1000) 을 입력 하고, 두 번 째 줄 의 N 개 정 수 는 병사 마다 대응 하 는 능력 지수 Xi (1 & gt; = Xi & gt; = 1000) 를 나타 낸다.
30% 에 대한 데이터 1 & lt; = M & gt; = N & gt; = 1000.
Output
하나의 정 수 를 출력 하여 가장 큰 참고 지수 총화 이다.
Sample Input
5 3 2 1 3 1 4
Sample Output 17. 사고: 문 제 를 보 자마자 첫 번 째 느낌 으로 폭력 적 으로 순환 해 볼 수 있 습 니 다. 그리고 문 제 를 몇 번 열심히 읽 고 문 제 를 두 드 리 기 시 작 했 습 니 다. 두 드 리 면서 생각 이 없 음 을 발 견 했 습 니 다.멘 붕 물 을 한 모금 마 셨 다. : a+b+c+d+e sum[5]
b+c+d+e sum[5]-sum[1]
sum [n] 으로 전 n 항 과, s [n] 로 전 n 개의 sum 과
얻다
a+2b+3c+4d+5e = 5*sum[5]-(sum[2]+sum[3]+sum[4])
= 5*sum[5] - (s[2]-s[1]+s[3]-s[2]+s[4]-s[3])
= 5*sum[5] - (s[4]-s[2])
유도 할 수 있다
ans = m * sum [i] - (s [i - 1] - s [i - 1 - m]) 당연히 뒤에서 앞으로 밀 수 있다.
dp[k]=dp[k-1]-ans[k-1]+x[i]*m;
ans [k - 1] 는 m 개의 수 를 합 친 것 이다.
(자신 이 신 마 를 말 하고 있 는 지 ~) 물론 일시 적 으로 완전히 이해 할 수 없 는 매우 정상 적 인 문제 입 니 다. 이 문 제 는 zj 도 마지막 에 풀 었 습 니 다.천천히 이해 ~ ~ 코드:
<span style="font-size:14px;">#include <math.h>
#include <queue>
#include <map>
#include <set>
#include <deque>
#include <vector>
#include <stack>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <iomanip>
#include <iostream>
#include <algorithm>
#define Max(a,b) a>b?a:b
using namespace std;
const int N= 1000005;
int aa[N],bb[N];
int main()
{
int n,m,a,b,i,j,k;
while(~scanf("%d%d",&n,&m))
{
int ans=0,cnt=0;
aa[0]=bb[0]=0;
for(i=1; i<=n; i++)
{
scanf("%d",&a);
aa[i]=aa[i-1]+a; //bb[i]=bb[i-1]+a;
bb[i]=bb[i-1]+aa[i];
}
for(i=m; i<=n; i++)
{
ans=m*aa[i]-(bb[i-1]-bb[i-1-m]);
cnt= Max(cnt,ans);
}
printf("%d
",n<=m?aa[n]:cnt);
}
return 0;
}
</span>
C - shadow
Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit Status Practice FZU 2169
Description
YL 은 shadow 국 의 왕 이 고 shadow 국 가 는 N 개 도시 입 니 다.비용 을 절약 하기 위해 shadow 국 은 N - 1 개의 도로 만 있 고 이 N - 1 개의 도 로 는 N 개의 도 시 를 연결 시 킵 니 다.어느 해 그림자 나라 에 반란 이 일 어 났 고 반군 이 여러 도 시 를 점령 했 으 며 왕 은 위 태 롭 습 니 다.왕도 가 일련 번호 1 인 도 시 는 왕도 외 에 K 개 도시 에 YL 의 군대 가 있다.이제 이 K 군 대 는 왕 도 를 향 해 진군 하고 지나 가 는 도시 의 반군 을 처치 해 야 한다.N 개 도시 의 도로 상황 과 도시 의 반란군 수 를 알려 드 리 겠 습 니 다. 반란군 을 모두 얼마나 처치 해 야 하 느 냐 고요?
Input
첫 줄 에 정수 N, K 두 개 를 입력 하고, 그 다음 에 N (1 & lt; = N & gt; = 100000) 개의 정수 Ai (0 & gt; = Ai & gt; = 10000) 를 입력 하면 i 번 째 도시 의 반군 수 를 나타 낸다.다음은 K 개 를 1 보다 크 고 N 보다 작은 정수 로 입력 해 군대 가 있 는 도시 의 번 호 를 표시 한다.데이터 보증 왕도 와 군대 가 있 는 도시 에는 반군 이 없다.다음은 N - 1 줄 을 입력 하고 줄 마다 두 개의 정수 u, v 를 입력 하여 u 와 v 를 연결 하 는 길 을 표시 합 니 다.모든 군 대 는 길 을 따라 만 갈 수 있 고 그 도시 와 왕도 사이 의 가장 짧 은 노선 이다.
Output
한 줄 한 줄 을 출력 하면 소 멸 된 반란군 의 수 를 나타 낸다.
Sample Input
4 20 3 0 03 41 22 32 4
Sample Output 3
사고: 또 슬 픈 최 단 로 문제 (디 제 스 트 라, 프로 이 드, SPFA?) 입 니 다. 물론 이 문 제 는 도시 와 도시 의 거 리 를 알려 주지 않 았 습 니 다. (사실 필요 도 없습니다) 미리 처리 할 수 있 습 니 다. 반군 의 수 를 없 애고 각 도시 가 기록 한 반군 의 수 를 처리 하 는 것 을 요구 하기 때 문 입 니 다. ,템 플 릿 을 찍 지 않 았 습 니 다. 자신 은 천천히 기억 에 의 해 조금씩 두 드 리 고 있 습 니 다. 그리고 컴 파일 을 하면 각종 오류 알림!어 쩔 수 없 이 시간 이 제한 되 어 있다. 비록 지 나 쳤 지만 실패했다 (템 플 릿 을 보고)...우선 대기 열 로 최적화 (중요 합 니 다. 시간 초과 방지!) 반군 의 도시 개수, 표 지 를 계산 합 니 다. 반란군 을 처치 하면 모두 처치 할 때 까지 감소 합 니 다: 코드:
<span style="font-size:14px;">#include <math.h>
#include <queue>
#include <map>
#include <set>
#include <deque>
#include <vector>
#include <stack>
#include <stdio.h>
#include <ctype.h
#include <string.h>
#include <stdlib.h>
#include <iomanip>
#include <iostream>
#include <algorithm>
using namespace std;
#define lowbit(a) a&-a
#define Max(a,b) a>b?a:b
#define Min(a,b) a>b?b:a
#define mem(a,b) memset(a,b,sizeof(a))
int dir[4][2]= {{1,0},{-1,0},{0,1},{0,-1}};
const double eps = 1e-6;
const double Pi = acos(-1.0);
static const int Inf= ~0U>>2;
static const int maxn=111000;
int n,m,N,K,M,ss,i,j;
int mapp[maxn];
int liter[maxn];
int result[maxn];
bool vis[maxn];
int head[maxn];
struct node
{
int va;
int na;
}
city[maxn*2];
struct node2
{
int va2;
int shadi;
} p, q;
void add(int u, int v)
{
city[ss].va=v;
city[ss].na = head[u];
head[u] = ss++;
}
int dijkstra(int x)
{
int cnt = 0;
queue<node2> Q;
p.va2 = x;
p.shadi = liter[x];
Q.push(p);
vis[x] = 1;
while (!Q.empty())
{
p = Q.front();
Q.pop();
if (1 == p.va2) cnt = p.shadi;
for (int i = head[p.va2]; i != 0; i = city[i].na)
{
int v = city[i].va;
if(vis[v]==0)
{
vis[v] = 1;
q.va2 = v;
q.shadi = p.shadi + liter[v];
Q.push(q);
}
}
}
return cnt;
}
int main()
{
while (cin>>N>>K)
{
for (i = 1; i <= N; i++)
cin>>liter[i];
for (i = 1; i <= K; i++)
cin>>result[i];
mem(vis,0),mem(head,0);
ss=1;
int P=N-1;
for(i=1; i<=P; i++)
{
int u,v;
cin>>u>>v;
add(u,v);
add(v,u);
}
int sum = 0;
for(i=1; i<=K; i++)
{
int aa=result[i];
if (vis[aa]==0)
sum+=dijkstra(aa);
}
printf("%d
",sum);
}
return 0;
}
PS: , , ,
!! , , !</span>
when you wan to give up ,think of why you are persit until now!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ACM - 계산 기하학 적 Pick - up sticks -- poj 2653Description Stan has n sticks of various length. The data for each case start with 1 <= n <= 100000, the number of stick...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.