【題目描述】
乙個n*n的網格圖上有m個探測器,每個探測器有個探測半徑r,問這n*n個點中有多少個點能被探測到。
【輸入格式】
第一行3個整數n,m,r
接下來m行,每行兩個整數x,y表示第i個探測器的座標
【輸出格式】
能被探測到的點的個數
【樣例輸入】
5 2 1
3 3
4 2
【樣例輸出】
8 【資料範圍】
1<=n,m<=100
【分析】
三重迴圈暴力判斷即可。
#include
#include
#include
using namespace std;
ints
qr(int x)
int main()}}
printf("%d\n",ans);
}
【題目描述】
有n盞燈排成一列,其中有些燈開著,有些燈關著。小可可希望燈是錯落有致的,他定義一列燈的狀態的不優美度為這些燈中最長的連續的開著或關著的燈的個數。小可可最多可以按開關k次,每次操作可以使該盞燈的狀態取反:原來開著的就關著,反之開著。現在給出這些燈的狀態,求操作後最小的不優美度。
【輸入格式】
第一行兩個整數n,k
第二行是乙個長度為n的字串,其中有兩種字元:n和f。其中n表示該燈開著,f表示該燈關著
【輸出格式】
最小的不優美度
【樣例輸入】
8 1
nnnffnnn
【樣例輸出】
3 【資料範圍】
1<=k<=n<=100000
【分析】
看上去很像dp問題?非也非也,此題其實是分治。
不優美度的定義中提到了「最長」即最大,然後題目要求最小的不優美度。最大值最小,這是經典的分治問題。
設fct(x)表示使不優美度為x時至少按多少次按鈕,則可以根據fct(mid)與k的大小關係來做。注意特判最小不優美度為1的情況。
#include
#include
#include
#include
using
namespace
std;
const
int maxn=100000+5;
char a[maxn];
int n,m;
bool check(int f)
else
if (a[i]!=a[i-1] && f)
else f=0;
}return ans<=m;
}int fct(int x)
}return y;
}int main()//括號中的內容自己試著填一下
int l=2,r=n;
while (lint mid=(l+r)/2;
if (fct(mid)>m) l=mid+1; else r=mid;
}printf("%d\n",l);
}
【題目描述】
給出乙個由(,),|,a組成的序列,求化簡後有多少個a。
化簡規則:
1、形如aa…a|aa…a|aa…a的,化簡結果為「|」兩邊a的個數最多的一項,例如a|aa|aaa=aaa
2、先算帶括號的序列,例如(a|a)|aaa=aaa
【輸入格式】
乙個序列
【輸出格式】
最多有多少個a
【樣例輸入】
aa(aa)|(aa|(a|aa))aa
【樣例輸出】
4 【資料範圍】
序列長度不超過100000
保證序列合法且括號內和「|」左右均非空
【分析】
此題看上去很煩,實際上還是不難的。
大體思路就是邊讀邊做,讀到a就把計數器加1,讀到左括號就入棧(其實這裡根本不需要開棧,說棧是為了方便理解),讀到|就打擂台,讀到右括號就返回答案。
#include
#include
using
namespace
std;
char ch;
int dfs()
else
}}int main()
總共只有0.3k的**。。。
當時在考場寫了4k多(注釋大概2k)。。。
【題目描述】
待更新。
NOIP2017 提高組解題報告
day1總結 allsol今次day1該拿的分基本上都拿好了,就是題目太碼農了,調了很久沒太多時間去想t3,t3直接暴力水過就好。在比賽中,合理的使用了對拍,拍出了t1正解,也是頗為激動的。所以說還是平時比賽認真點,多打對拍什麼的嘛。day2加油epointt1 100 t2 100 t3 50 m...
解題報告 AHOI2001 彩票搖獎
為了豐富人民群眾的生活 支援某些社會公益事業,北塔市設定了一項彩票。該彩票的規則是 1 每張彩票上印有 7 個各不相同的號碼,且這些號碼的取指範圍為 1 33。2 每次在兌獎前都會公布乙個由七個各不相同的號碼構成的中獎號碼。3 共設定 7 個獎項,特等獎和一等獎至六等獎。兌獎規則如下 特等獎 要求彩...
解題報告 NOIP2017
思路 這個是當年選手最後悔的也是大部分人能猜出來但是無法嚴格證明的題目 我來證明一下 好吧,我不會 但我們直接打表找規律,發現答案就是 ab a b include using namespace std long long a,b int main int main for int i 0 i0 ...