//#pragma gcc optimize(2)
#include
using
namespace std;
mapint,
int>
,int
> a;
pair<
int,
int> p;
intmain()
)) a++
;else a++
;}int cnt=0;
for(mapint,
int>
,int
>
::iterator it=a.
begin()
; it!=a.
end(
); it++
)printf
("%d\n"
, cnt)
;return0;
}
這題一看就是字首和嘛,正好前一天寫了一篇部落格。 然後打了暴力,吸氧水過去了。**就不貼了。
貼一下尺取法的**:
//#pragma gcc optimize(2)
#include
using
namespace std;
int n, k, a[
300010];
int l, r;
bool
check()
if(tmp==k)
return1;
}return0;
}int
main()
打表找規律題,這真不是簽到題。(我的簽退題)
先暴力打表到1e4或1e5
int
line
(int x,
int y)
return x+y;
}int
main()
找出規律:只與y有關且y只能為9,99,999……
然後即可根據表寫出**
typedef
long
long ll;
int t;
ll num[18]
=;intmain()
} cnt *
= a;
printf
("%llu\n"
, cnt);}
return0;
}
這才是簽到題,純set做就可以了。
//#pragma gcc optimize(2)
#include
using
namespace std;
int n, m;
int x;
set<
int> a, b;
intmain()
for(
int i=
1; i<=m; i++
)int cnt=0;
for(set<
int>
::iterator it=a.
begin()
; it!=a.
end(
); it++)}
if(!cnt)
printf
("so crazy!!!\n");
return0;
}
好難啊。
li與lj至少有乙個公共點:相交或重合
i 從 1 到 n 遍歷所有直線,每次 ans 都加上 i - 1 - 平行li的個數。
需要特判直線垂直於x軸的情況
//#pragma gcc optimize(2)
#include
using
namespace std;
map<
double
,int
> kis;
// 斜率相等
map<
double
, map<
double
,int
>
> kbis;
// 重合
map<
double
,int
> vertx;
// 垂直於x軸
intmain()
else
} cout
}
直到聽了題解才知道怎麼能在有取模操作的情況下解密。
//#pragma gcc optimize(2)
#include
using
namespace std;
struct nodepass[
100010];
char a[52]
, str[
1010][
1010
], ans[
130]
[130];
void
init()
for(
int i=
0; i<
52; i++
)for
(int j=
0; j<
52; j++)}
intmain()
for(
int i=
1; i<=n; i++
) cout<
}
對於字串字首的介紹可以參考此部落格kmp部分。當然此題要求空串也算字首。
//#pragma gcc optimize(2)
#include
using
namespace std;
string str;
int t;
int check[
100010];
intmain()
if(cnt0==cnt1)
// 只有0和1的數目相等時才會出現無數個等於x的平衡係數
for(
int i=
0; i)else
continue;}
else
for(
int i=
0; i(check[i]
%(cnt0-cnt1)==0
&& check[i]
/(cnt0-cnt1)
>=0)
ans++;if
(flag) cout<<-1
}
出題人gls解釋了為什麼直接暴力不會超時:
h題再解釋一下為什麼直接暴力不用二分在時間上是可行的吧,因為我看所有通過**都寫的列舉容量的上界是sum,但是如果上界真的是sum的話在時間上理論上是不可行的,這一點上並不是我資料出水了,是它的下界可以視為max(ceil(sum / k),maxv),上界為ceil(sum / k)+maxv所以列舉次數為二者之差遠達不到sum次,最多也不會超過1000次所以從下界while(1)向上尋找在時間上是可行的
//#pragma gcc optimize(2)
#include
using
namespace std;
int t, n, m;
int v[
1005];
bool box[
1005];
bool
put(
int vol)
}for
(int i=
1; i<=n; i++)if
(!box[i]
)return0;
return1;
}int
main()
sort
(v+1
, v+n+1)
;reverse
(v+1
, v+n+1)
;for
(int i=sum/m; i<=sum; i++)if
(put
(i))
printf
("case #%d: %d\n"
, mcv, tmp);}
return0;
}
大一寒假總結
這個寒假,我認為自己沒有一天懈怠,每天都會花一定的時間去學習。我是大一零基礎入坑的計算機專業,所以比起很多我認識的大佬而言,我的起步是非常低的,所以在上學期我不敢有一絲一毫的懈怠。我廣泛的去學習知識,相比上層的框架我感覺我對底層的計算機原理 計算機網路 作業系統以及編譯原理更感興趣。大一上學期很精彩...
大一寒假訓練 set
錯誤的刪除操作?上圖的操作會把迭代器刪除!it的指向就空了!於是會出現下圖警示?正確的操作?for it ans.begin it ans.end include using namespace std set int ssr set int iterator it int n,x intmain ...
大一寒假訓練(七)
借鑑二位博主 抱拳 nefu ljw link.nefu wmjlink.problem a 週末舞會 佇列 link.include using namespace std queue int vis1,vis2 intmain return0 problem b 取牌遊戲 佇列 set link...