JDOJ 1065 打倒苏联修正主义
JDOJ 1065
https://neooj.com/oldoj/problem.php?id=1065
題目描述
【”客觀”背景】蘇修是蘇聯修正主義的簡稱。從1956年到1966年的10年間,過去“親密
無間”的中蘇兩黨突然翻臉相向,中共批判蘇共是“修正主義”, 蘇共則指中共為“教條主
義”,雙方起初密函對責,繼而公開論戰,由意識形態之爭發展到指著對方領袖點名道姓地互
罵,兩黨、兩國關系遂急劇惡化,終致爆發1969年的中蘇邊界武裝沖突。中國從此把只能把蘇
聯視為主要敵人,為了鉗制蘇聯而于1972年與美國復好。“中蘇大論戰”的遺恨延續了30年,
直到1989年戈爾巴喬夫夫訪華中蘇兩黨的關系才算回歸到正常化。事雖不遠,如今竟無幾人能
說得清兩黨當年究竟有何深仇大恨。20世紀80年代以來,當初專用于指責蘇聯和蘇共的“修正
主義”、“蘇聯社會帝國主義”等詞匯已基本上從官方的意識形態話語中消失,這段本來就深
藏種種隱情的歷史被掩埋得不露痕跡,70年代以后出生的人甚至可能一無所知。
蘇聯發起了現代修正主義,他不僅在經濟上走資本主義道路,還企圖坑害中國。
MZD當然不會讓蘇聯欺騙,他已經弄通了蘇聯欺騙中國的方式,蘇聯在與中國的貿易
中偷雞摸狗…經常缺斤短兩.MZD為了制止這種行為,他會發動全國廣大fans來抵制蘇聯出
售的產品.
但是MZD需要找到證據…他希望知道在蘇聯出售給Z國的一批貨物在第i天和第j天之間
貿易額最大的一個.
輸入
第一行:兩個數n,m.分別表示中國與蘇聯進行了n天貿易,MZD想提出m個問題.
接下來第2行到第n+1行每行一個數,第i行表示第i-1天當天的貿易額.
然后的第n+2行到文件末尾的m行中,每行兩個數x,y(x,y<=maxlongint)表示MZD想知道的區間.
輸出
一共m行,第i行表示MZD的第i個問題的答案.
樣例輸入
3 2
1
3
2
1 2
1 3
樣例輸出
3
3
提示
數據范圍:
30% n,m<=2000
60% n<=500000 m<=2000
80% n<=1000000,m<=2000
100% n<=1000000,m<=20000
ps:個人認為題目描述就是個(臟話)
我交的時候一直在RE
RERERERERERERERERERERE
檢查又檢查,沒什么毛病?
不就是一道ST算法的裸題么?
請大家注意,這道題并沒有給x,y誰大誰小,也就是說我們在做區間求最值的ST算法中,針對每一個詢問還需要判一下誰大...(臟話)
好不容易AC了之后的Code
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m;
int f[1000001][21],lg[1000001];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&f[i][0]);
for(int i=2;i<=n;i++)
lg[i]=lg[i>>1]+1;
for(int j=1;(1<<j)<=n;j++)
for(int i=1;i+(1<<j)-1<=n;i++)
f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
for(int i=1;i<=m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
if(x>y) swap(x,y);//太太太重要了!!!
int k=lg[y-x+1];
printf("%d
",max(f[x][k],f[y-(1<<k)+1][k]));
}
return 0;
}
總結
以上是生活随笔為你收集整理的JDOJ 1065 打倒苏联修正主义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css与html
- 下一篇: 区块链系列教程之:比特币中的挖矿